diff --git a/.gitignore b/.gitignore index 330e8907..28117431 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ -createManifest.py +manifest-generator.bat +manifest-generator.js +.eslintrc.json +package.json +.idea/ \ No newline at end of file diff --git a/LICENSE b/LICENSE index f14eda49..22d1b98c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,8 @@ MIT License Copyright (c) 2018 Kasea +Copyright (c) 2020 Information Networks Ltd. +Copyright (c) 2022 Non-commercial Project "HSDN" Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index b61308a5..231872bb 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,172 @@ # tera-guide +## Patch v92.04 and v100.02 (x64) -Могут быть допущены ошибки перевода, поэтому пишите, поправим ) +### :star: Available in TERA Toolbox for patch 92.04 and 100.02 (x64) +* Fully compatible with [TERA Toolbox for patch 92 and 100](https://github.com/tera-private-toolbox/tera-toolbox). + Automatic install from **Get More Mods** tab. -Делаю все на быструю, не откажусь от помощи +* Полностью совместимо с [TERA Toolbox для патчей 92 и 100](https://github.com/tera-private-toolbox/tera-toolbox). + Автоматическая установка через вкладку **Скачать модули**. -Discord : ITunk#3556 +### :information_source: Manual installation +The tera-guide and [tera-guide-core](https://github.com/hsdn/tera-guide-core) are already compatible with this patch. +For the guides to work you need a get compatible versions of **library** and **tera-guide-core**: +1. Download **library** from **[here](https://github.com/tera-private-toolbox/library/archive/refs/heads/master.zip)** and place it to you **mods** folder named as **"library"**. +2. Download **tera-guide-core** from **[here](https://github.com/hsdn/tera-guide-core/archive/refs/heads/master.zip)** and place it to you **mods** folder named as **"tera-guide-core"**, + not "tera-guide-core-master". -От благодарности не откажусь) +### :information_source: Ручная установка +Модули tera-guide и [tera-guide-core](https://github.com/hsdn/tera-guide-core) совместимы с данным патчем уже сейчас. +Для работы гайдов вам потребуется установка совместимой версии **library** и **tera-guide-core**: +1. Скачайте **library** **[здесь](https://github.com/tera-private-toolbox/library/archive/refs/heads/master.zip)** и поместите в вашу папку **mods** как **"library"**. +2. Скачайте **tera-guide-core** **[здесь](https://github.com/hsdn/tera-guide-core/archive/refs/heads/master.zip)** и поместите в вашу папку **mods** как **"tera-guide-core"**, + а не "tera-guide-core-master". -# Переведены +--- -Келсаик +## Description / Описание -Арена +The dungeon guide module with Text-to-speech notifications, display hints on screen and drawing zones of bosses attacks and mechanics. Available English and Russian languages (detects automatically). -КБ +Модуль подсказок по данжам с возможностью голосовых уведомлений, вывод подсказок в чат или на экран, а также отрисовка зон атак боссов и механик. Поддерживаются Русский и Английский языки (определяются автоматически). -ГПХ +#### Other translations / Другие локализации +* [**Spanish (Español)** by Loliconera](https://github.com/Loliconera/tera-guide-spanish) +* [**Spanish (Español)** by Emilia](https://github.com/emilia-s2/Guia-DG-Portugues-Espanol) +* [**Portuguese (Português)** by Emilia](https://github.com/emilia-s2/Guia-DG-Portugues-Espanol) + +## Dependencies / Зависимости +* **library** - https://github.com/tera-private-toolbox/library +* **tera-guide-core** - https://github.com/hsdn/tera-guide-core + +When using TeraToolbox, all dependencies will be installed automatically. +При использовании TeraToolbox, все зависимости будут установлены автоматически. + +## Commands / Команды +Toolbox(/8) | Command description | Описание команды +--- | --- | --- +**guide** | Module on/off | Вкл./выкл. модуля +**guide gui** | Show module GUI| Показать графический интерфейс +**guide voice**
(default: off) | Text-to-speech (TTS) notices on/off, speech rate is set by command **guide `1`~`10`** | Вкл./выкл. голосовых уведомлений (TTS), скорость чтения задается командой **guide `1`~`10`** +**guide lNotice**
(default: off) | Send notices to chat channel "Notice" instead of on-screen messages on/off | Вкл./выкл. отправки уведомлений в канал чата "Важно" вместо показа экранных сообщений +**guide gNotice**
(default: off) | Send notices to party chat channel on/off | Вкл./выкл. отправки уведомлений в канал чата группы +**guide `auto`/`en`/`ru`**
(default: auto) | Set guide language | Выбор языка перевода +**guide `1`~`10`**
(default: 2) | Set TTS speech rate | Регулировка скорости чтения голосовых сообщений +**guide spawnObject**
(default: on) | Spawn marker objects on/off | Вкл./выкл. спавна маркировочных объектов +**guide stream**
(default: off) | Streamer Mode on/off (hide all notices and objects, TTS will played) | Вкл./выкл. режима стримера (скрывает все уведомления и маркеры, TTS будет проигрываться) +**guide dungeons** | List of all supported dungeons and its ids | Список всех поддерживаемых данжей и их id +**guide verbose `id`**
(default: on for all) | Send notices for specified by `id` dungeon on/off | Вкл./выкл. всех уведомлений для данжа, где `id` - идентификатор данжа +**guide spawnObject `id`**
(default: on for all) | Spawn marker objects for specified by `id` dungeon on/off | Вкл./выкл. спавна объектов для данжа, где `id` - идентификатор данжа +**guide help** | List of supported commands | Вывод поддерживаемых команд + +## Supported dungeons / Поддерживаемые данжи + +id | Dungeon name | Название данжа +--- | --- | --- +2800 | Dreadspire VALKYTEQ | Dreadspire VALKYTEQ +3023 | Akalath Quarantine | Секретное подземелье крепости Берарк +3026 | Corrupted Skynest | Логово Келсаика +3027 | Forbidden Arena [Hagufna] | [Бессмертный воин] Арена безумия +3030 | Commander's Residence | Старая резиденция +3032 | Akalath Quarantine (Guide) | [Тренировка] Секретное подземелье крепости Берарк +3034 | Rampaging RK-9 Kennel | Ангар RK-9 (сложно) +3036 | Sky Cruiser (Hard) | Небесный крейсер (сложно) +3037 | Bahaar's Sanctum (Guide) | [Тренировка] Святилище Бахаара +3101 | Gossamer Vault | Гнездо Паркин +3102 | Draakon Arena | Командный центр +3103 | Forbidden Arena [Undying Warlord] | [Этерния] Арена безумия +3104 | Catalepticon | Сонный паралич Лукмии +3106 | Killing Grounds | Место казни +3107 | Corrupted RK-9 Kennel | Разрушенный Ангар РК-9 +3123 | Akalath Quarantine (Hard) | Akalath Quarantine (Hard) +3126 | Corrupted Skynest (Hard) | Логово Бессмертного Келсаика +3201 | Gossamer Vault (Hard) | Гнездо сверкающей Паркин +3202 | Draakon Arena (Hard) | Командный центр (сложно) +3203 | Forbidden Arena [Nightmare Undying Warlord] | [Бессмертный] Арена безумия +3204 | Catalepticon (Hard) | Сонный паралич Лукмии (сложно) +3206 | Crimson Killing Grounds | Окровавленное место казни +7011 | Shadow of the Gutrends (Guardian) | Живодеры и черная тень (хранитель) +7015 | Escape from Balder's Refuge (Guardian) | Операция "Спасти Убежище Балдера" (хранитель) +9027 | Manaya's Core (Hard) | Обитель Манайи (сложно) +9034 | Dreadspire | Жуткий шпиль страха +9044 | Bahaar's Sanctum | Святилище Бахаара +9050 | Rift's Edge (Hard) | Край Разлома (сложно) +9053 | Kezzel's Gorge | Ущелье Кеззела +9054 | Bathysmal Rise (Hard) | Глубинный Храм (сложно) +9056 | Timescape (Hard) | Хроноплоскость (сложно) +9057 | Akeron's Inferno (Hard) | Акероново пекло (сложно) +9066 | Demon's Wheel | Рулетка Демороса +9067 | Demokron Factory (Hard) | Лаборатория Берна (сложно) +9068 | Shadow Sanguinary (Hard) | Убежище Дуриона (сложно) +9070 | Manglemire | Замок Парадоксов +9710 | Broken Prison | Разрушенный алтарь Лакана +9716 | Sky Cruiser Endeavor | Крейсер "Стремление" +9720 | Antaroth's Abyss | Омут Антароса +9735 | RK-9 Kennel | Ангар RK-9 +9739 | Red Refuge | Лагерь повстанцев +9750 | Rift's Edge | Край Разлома +9754 | Bathysmal Rise | Глубинный Храм +9756 | Timescape | Хроноплоскость +9757 | Akeron's Inferno | Акероново пекло +9759 | Forsaken Island (Hard) | Остров Мертвых (сложно) +9768 | Shadow Sanguinary | Убежище Дуриона +9770 | Ruinous Manor | Руины Абнукты +9780 | Velik's Hold (5-Person) | Вход в катакомбы Велики +9781 | Velik's Sanctuary | Святилище Велики +9782 | Grotto of Lost Souls | Мастерская Леандра +9783 | Dark Reach Citadel | Крепость Тенебриса +9794 | Thaumetal Refinery | Лаборатория Сайрекса +9916 | Sky Cruiser Endeavor (Hard) | Крейсер "Стремление" (Сложно) +9920 | Antaroth's Abyss (Hard) | Омут Бездушного Антароса +9935 | RK-9 Kennel (Hard) | Ангар совершенного RK-9 +9939 | Red Refuge (Hard) | Секретный лагерь повстанцев +9970 | Ruinous Manor (Hard) | Руины Кошмарной Абнукты +9980 | Velik's Hold (Hard) | Вход в разрушенные катакомбы Велики +9981 | Velik's Sanctuary (Hard) | Разрушенное Святилище Велики +9982 | Grotto of Lost Souls (Hard) | Мастерская Леандра (сложно) +9983 | Dark Reach Citadel (Hard) | Крепость Темного Тенебриса +9994 | Thaumetal Refinery (Hard) | Лаборатория Альфа-сайрекса + +## Notices settings / Настройка уведомлений + +* On screen (on bottom side) and chat notices, if **lNotice** parameter is *on*. + Уведомления на экране (в нижней части), а также в чате, если параметр **lNotice** - *включен*. + ![](https://i.imgur.com/BPlK58M.png) + +* When **gNotice** parameter is *on*, notices will also be sent to party chat channel. + Если параметр **gNotice** был *включен*, уведомления также будут отправляться в канал чата группы. + +* The message on top side of the screen, if **lNotice** parameter is *off* (by default). + Сообщение в верхней части экрана, если параметр **lNotice** - *выключен* (по-умолчанию). + ![](https://i.imgur.com/r2bb8Wc.png) + You can set the color for this type of notices using the commands or GUI (also change color in the Toolbox chat). + Возможен выбор цвета для этого вида уведомлений при помощи команд или графического интерфейса (также изменяется цвет в чате Toolbox). + +* When Streamer Mode is *on* (**stream** parameter), all text notices ONLY sent to Toolbox(/8) chat channel, but TTS notices will be played. + Если *включен* режим стримера (парам. **stream**), все текстовые уведомления будут отправляться ТОЛЬКО в канал чата Toolbox(/8), однако голосовые уведомления будут проигрываться. + +* To disable or enable TTS notifications, use the **guide voice** command. + Для отключения или включения голосовых уведомлений используется команда **guide voice**. + +## Module GUI / Графический интерфейс + +* When you enter the **guide gui** command, the module GUI is displayed, allowing you to change basic settings. + При вводе команды **guide gui** отображается графический интерфейс модуля, позволяющий осуществить основные настройки. + ![](https://i.imgur.com/72hDCvQ.png) + +## More information / Дополнительная информация + +* Developers wiki: https://github.com/hsdn/tera-guide-core/wiki +* For questions and suggestions, ask in our Discord: https://discord.gg/sJzRJhtwWX + +## Credits +- **[Kasea](https://github.com/Kaseaa)** - Original developer of Tera-Guide module +- **[michengs](https://github.com/michengs)** - Author of base code for most guides and module core +- **[ZC](https://github.com/tera-mod)** - Provided coordinates for rendering attack areas and mechanics +- **[Kuroine](https://github.com/Kuroine)** - Author of base code for the DA guide +- **[Multarix](https://github.com/Multarix)** - Author of the RR guide and also making changes to the English translation +- **[Owyn](https://github.com/Owyn)** - Developer of great guides for RK-9, AA and GV, whose code was used +- **[Emilia](https://github.com/emilia-s2)** - Author of Portuguese translation and guardian guides +- **[Loliconera](https://github.com/Loliconera)** - Author of Spanish translation +- **[ITunk](https://github.com/GrafNikola)** - Author of initial Russian translation diff --git a/StrSheet_Dungeon.json b/StrSheet_Dungeon.json deleted file mode 100644 index 9021dae5..00000000 --- a/StrSheet_Dungeon.json +++ /dev/null @@ -1,800 +0,0 @@ -{ - "String": [ - { - "id": 9999, - "string": "被遺忘的副本探險隊" - }, - { - "id": 8999, - "string": "貝里克神殿" - }, - { - "id": 9001, - "string": "沙魔爾官邸" - }, - { - "id": 9002, - "string": "生命之泉" - }, - { - "id": 9003, - "string": "爆炎山脈深層" - }, - { - "id": 9005, - "string": "小丑別墅" - }, - { - "id": 9006, - "string": "真實惡夢的王座" - }, - { - "id": 9007, - "string": "突沙軍團指揮所" - }, - { - "id": 9008, - "string": "瑪拉基實驗室" - }, - { - "id": 9010, - "string": "凱亞多勒司令官室" - }, - { - "id": 9011, - "string": "鐵匠工房" - }, - { - "id": 9012, - "string": "三個塔上層部" - }, - { - "id": 9013, - "string": "阿勒坤能量儲藏庫" - }, - { - "id": 9014, - "string": "卡諾比亞激戰地" - }, - { - "id": 9016, - "string": "黎明庭園" - }, - { - "id": 9017, - "string": "太陽燈塔" - }, - { - "id": 9018, - "string": "前線地下地窟" - }, - { - "id": 9019, - "string": "神秘地帶研究所前院" - }, - { - "id": 9020, - "string": "秘密基地後門" - }, - { - "id": 9021, - "string": "隱藏地窟" - }, - { - "id": 9022, - "string": "苦痛殿堂" - }, - { - "id": 9023, - "string": "庫特摩修克隱身處" - }, - { - "id": 9024, - "string": "遺棄的教堂" - }, - { - "id": 9025, - "string": "博得神殿" - }, - { - "id": 9028, - "string": "瑪拉基實驗室" - }, - { - "id": 9031, - "string": "阿卡莎隱身處 (單人)" - }, - { - "id": 9032, - "string": "黃金迷宮 (單人)" - }, - { - "id": 9033, - "string": "兇暴基露卡爾的洞穴 (單人)" - }, - { - "id": 9036, - "string": "卡若斯帢召喚地" - }, - { - "id": 9037, - "string": "暗黑裂縫入口" - }, - { - "id": 9038, - "string": "未知叢林" - }, - { - "id": 9039, - "string": "護送隊襲擊地" - }, - { - "id": 9040, - "string": "貝利卡廣場" - }, - { - "id": 9041, - "string": "貝利卡東門" - }, - { - "id": 9042, - "string": "貝利卡司令部" - }, - { - "id": 9046, - "string": "受咒綠洲" - }, - { - "id": 9050, - "string": "Rift's Edge (Hard) (10-Person)" - }, - { - "id": 9750, - "string": "卡舒帕露峽谷" - }, - { - "id": 9061, - "string": "巨人遺跡地" - }, - { - "id": 9062, - "string": "小丑別墅" - }, - { - "id": 9063, - "string": "漆黑祭壇" - }, - { - "id": 9064, - "string": "熔岩之廳" - }, - { - "id": 9065, - "string": "女神花園" - }, - { - "id": 9071, - "string": "邪靈術研究所" - }, - { - "id": 9072, - "string": "黃金迷宮" - }, - { - "id": 9073, - "string": "暗黑塔" - }, - { - "id": 9074, - "string": "復活聖所" - }, - { - "id": 9075, - "string": "凱爾賽克巢穴" - }, - { - "id": 9076, - "string": "恐怖的迷宮" - }, - { - "id": 9077, - "string": "巴特沙漠" - }, - { - "id": 9078, - "string": "費比修實驗室" - }, - { - "id": 9079, - "string": "札巴勒曼蒼穹" - }, - { - "id": 9080, - "string": "窟拉德緒結界" - }, - { - "id": 9081, - "string": "極寒修練場" - }, - { - "id": 9082, - "string": "鐵壁修練場" - }, - { - "id": 9083, - "string": "突破修練場" - }, - { - "id": 9087, - "string": "秘密基地" - }, - { - "id": 9088, - "string": "凡貝爾宅邸" - }, - { - "id": 9089, - "string": "邪教徒隱身處" - }, - { - "id": 9090, - "string": "森林小徑" - }, - { - "id": 9091, - "string": "次元結界" - }, - { - "id": 9092, - "string": "達坤之墓" - }, - { - "id": 9093, - "string": "阿卡莎隱身處" - }, - { - "id": 9094, - "string": "煞雷諾空中庭園" - }, - { - "id": 9096, - "string": "席幽卡迴廊" - }, - { - "id": 9724, - "string": "遺棄的教堂(攻擊隊)" - }, - { - "id": 9725, - "string": "博得神殿(攻擊隊)" - }, - { - "id": 9793, - "string": "阿卡莎隱身處 (攻擊隊)" - }, - { - "id": 9773, - "string": "暗黑塔 (攻擊隊)" - }, - { - "id": 9775, - "string": "凱爾賽克巢穴" - }, - { - "id": 9776, - "string": "恐怖迷宮 (攻擊隊)" - }, - { - "id": 9801, - "string": "暗黑次元的異空間" - }, - { - "id": 9802, - "string": "暗黑次元的異空間" - }, - { - "id": 9803, - "string": "暗黑次元的異空間" - }, - { - "id": 9026, - "string": "阿勒坤魅迪提亞" - }, - { - "id": 9726, - "string": "阿勒坤魅迪提亞 (攻擊隊)" - }, - { - "id": 9027, - "string": "珊德拉馬奈伊亞(高階)" - }, - { - "id": 9727, - "string": "珊德拉馬奈伊亞" - }, - { - "id": 9095, - "string": "業火之坑" - }, - { - "id": 9795, - "string": "庫札特的礦山" - }, - { - "id": 9045, - "string": "布魯帕斯特山" - }, - { - "id": 9047, - "string": "萬聖節副本" - }, - { - "id": 9126, - "string": "佩特萊養成所" - }, - { - "id": 9975, - "string": "狂暴的凱爾賽克聖所" - }, - { - "id": 9911, - "string": "憤怒的凱爾賽克聖所" - }, - { - "id": 9051, - "string": "骯髒神殿" - }, - { - "id": 9052, - "string": "血腥慶典場" - }, - { - "id": 9711, - "string": "兇暴基露卡爾的洞穴" - }, - { - "id": 9611, - "string": "兇暴基露卡爾的洞穴" - }, - { - "id": 9777, - "string": "古代的低下暗渠" - }, - { - "id": 9766, - "string": "赤紅海團的陷阱" - }, - { - "id": 9043, - "string": "魔法師要塞(高階)" - }, - { - "id": 9643, - "string": "魔法師要塞" - }, - { - "id": 9743, - "string": "魔法師要塞(攻擊隊)" - }, - { - "id": 9053, - "string": "巨人叢林(七人)" - }, - { - "id": 9511, - "string": "黑暗洞窟" - }, - { - "id": 9811, - "string": "黑暗洞窟" - }, - { - "id": 9810, - "string": "拉坎祭壇" - }, - { - "id": 9813, - "string": "奇利安森林" - }, - { - "id": 9821, - "string": "拉格南要塞 2樓" - }, - { - "id": 9822, - "string": "阿克德法基地" - }, - { - "id": 9814, - "string": "阿魯卡那克那伊亞" - }, - { - "id": 9818, - "string": "秘密實驗室" - }, - { - "id": 9827, - "string": "提雅拉尼亞" - }, - { - "id": 9828, - "string": "守護者村莊" - }, - { - "id": 9829, - "string": "提亞蘭樹" - }, - { - "id": 9833, - "string": "古龍峽谷" - }, - { - "id": 9887, - "string": "秘密基地(單人)" - }, - { - "id": 9888, - "string": "凡貝爾宅邸(單人)" - }, - { - "id": 9889, - "string": "邪教徒隱身處(單人)" - }, - { - "id": 9871, - "string": "邪靈術研究所(單人)" - }, - { - "id": 9872, - "string": "黃金迷宮(單人)" - }, - { - "id": 9894, - "string": "煞雷諾空中庭園(單人)" - }, - { - "id": 9876, - "string": "恐怖迷宮(單人)" - }, - { - "id": 9873, - "string": "暗黑塔(單人)" - }, - { - "id": 9879, - "string": "札巴勒曼蒼穹" - }, - { - "id": 9820, - "string": "扺抗軍秘密營地" - }, - { - "id": 9880, - "string": "窟拉德緒結界(單人)" - }, - { - "id": 9824, - "string": "遺棄的教堂(單人)" - }, - { - "id": 9825, - "string": "博得神殿(單人)" - }, - { - "id": 9151, - "string": "聯盟領地某地區" - }, - { - "id": 9808, - "string": "阿克德法武器庫" - }, - { - "id": 9809, - "string": "戴蒙克隆實驗室" - }, - { - "id": 9054, - "string": "Bathysmal Rise (Hard)" - }, - { - "id": 9754, - "string": "Bathysmal Rise" - }, - { - "id": 9055, - "string": "哈露奇亞的安息地" - }, - { - "id": 9823, - "string": "艾爾凱亞號" - }, - { - "id": 9826, - "string": "拉格南要塞地下" - }, - { - "id": 9916, - "string": "Sky Cruiser Endeavor (Hard)" - }, - { - "id": 9716, - "string": "Sky Cruiser Endeavor" - }, - { - "id": 9885, - "string": "幻影之塔" - }, - { - "id": 9886, - "string": "幻影之塔 第16層" - }, - { - "id": 9713, - "string": "奇利安森林 (付費)" - }, - { - "id": 9714, - "string": "優惠專用空間" - }, - { - "id": 9804, - "string": "凱爾賽克巢穴(日本比賽用)" - }, - { - "id": 9979, - "string": "札巴勒曼巢窟" - }, - { - "id": 9057, - "string": "傲慢的阿凱倫炎獄" - }, - { - "id": 9757, - "string": "阿凱倫炎獄" - }, - { - "id": 9029, - "string": "復活教堂" - }, - { - "id": 9056, - "string": "扭曲的法羅納時空" - }, - { - "id": 9756, - "string": "法羅納時空" - }, - { - "id": 9060, - "string": "惡人凱利班突擊船" - }, - { - "id": 9760, - "string": "凱利班突擊船" - }, - { - "id": 9860, - "string": "弱化凱利班突擊船" - }, - { - "id": 9059, - "string": "Forsaken Island" - }, - { - "id": 9759, - "string": "Forsaken Island" - }, - { - "id": 9830, - "string": "天空競技場" - }, - { - "id": 9067, - "string": "Demokron Factory (Hard)" - }, - { - "id": 9767, - "string": "Demokron Factory" - }, - { - "id": 9769, - "string": "莉里斯城" - }, - { - "id": 9969, - "string": "惡女莉里斯城" - }, - { - "id": 9068, - "string": "暴君杜利溫的安息地" - }, - { - "id": 9768, - "string": "杜利溫的安息地" - }, - { - "id": 9070, - "string": "Manglemire" - }, - { - "id": 9069, - "string": "拉格南城的記憶" - }, - { - "id": 9970, - "string": "Ruinous Manor (Hard)" - }, - { - "id": 9770, - "string": "Ruinous Manor" - }, - { - "id": 9950, - "string": "破壞的神界關口" - }, - { - "id": 9710, - "string": "扭曲的拉坎祭壇" - }, - { - "id": 9780, - "string": "貝利卡地下關口" - }, - { - "id": 9980, - "string": "倒塌的貝利卡地下關口" - }, - { - "id": 9981, - "string": "Velik's Sanctuary (Hard)" - }, - { - "id": 9781, - "string": "Velik's Sanctuary" - }, - { - "id": 9681, - "string": "貝里克之夢" - }, - { - "id": 9066, - "string": "Demon’s Wheel" - }, - { - "id": 9794, - "string": "賽伊洛斯研究基地" - }, - { - "id": 9994, - "string": "阿爾法賽伊洛斯研究基地" - }, - { - "id": 9735, - "string": "RK-9 Kennel" - }, - { - "id": 9935, - "string": "RK-9 Kennel (Hard)" - }, - { - "id": 9505, - "string": "破壞的貝利卡宴會場" - }, - { - "id": 9506, - "string": "貝利卡宴會場" - }, - { - "id": 9507, - "string": "龍界" - }, - { - "id": 9508, - "string": "內面世界" - }, - { - "id": 9509, - "string": "和平的貝利卡宴會場" - }, - { - "id": 9739, - "string": "革命團總部" - }, - { - "id": 9939, - "string": "森嚴的革命團總部" - }, - { - "id": 9920, - "string": "Antaroth's Abyss (Hard)" - }, - { - "id": 9720, - "string": "Antaroth's Abyss" - }, - { - "id": 9034, - "string": "殘酷幻影之塔" - }, - { - "id": 9783, - "string": "Dark Reach Citadel" - }, - { - "id": 9983, - "string": "Dark Reach Citadel (Hard)" - }, - { - "id": 9782, - "string": "Grotto of Lost Souls" - }, - { - "id": 9982, - "string": "Grotto of Lost Souls (Hard)" - }, - { - "id": 9044, - "string": "Bahaar's Sanctum" - }, - { - "id": 3012, - "string": "守護者訓練所" - }, - { - "id": 3016, - "string": "莉里斯城(單人)" - }, - { - "id": 3018, - "string": "Dark Reach Citadel (7-man)" - }, - { - "id": 3019, - "string": "Grotto of Lost Souls (7-man)" - }, - { - "id": 3017, - "string": "Antaroth's Abyss (7-man)" - }, - { - "id": 3001, - "string": "秘密基地(1人)" - }, - { - "id": 3002, - "string": "凡貝爾宅邸(1人)" - }, - { - "id": 3003, - "string": "邪教徒隱身處(1人)" - }, - { - "id": 3101, - "string": "Gossamer Vault" - }, - { - "id": 3023, - "string": "Akalath Quarantine" - }, - { - "id": 3020, - "string": "金鳞号" - }, - { - "id": 3026, - "string": "Corrupted Skynest" - }, - { - "id": 3027, - "string": "Forbidden Arena" - }, - { - "id": 3126, - "string": "Corrupted Skynest (Hard) Entrance" - }, - { - "id": 3201, - "string": "Gossamer Vault (Hard)" - } - ] -} \ No newline at end of file diff --git a/StrSheet_RU_Dungeon.json b/StrSheet_RU_Dungeon.json deleted file mode 100644 index 53d473b2..00000000 --- a/StrSheet_RU_Dungeon.json +++ /dev/null @@ -1,864 +0,0 @@ -{ - "String": [ - { - "id": 9999, - "string": "被遺忘的副本探險隊" - }, - { - "id": 8999, - "string": "貝里克神殿" - }, - { - "id": 9001, - "string": "沙魔爾官邸" - }, - { - "id": 9002, - "string": "生命之泉" - }, - { - "id": 9003, - "string": "爆炎山脈深層" - }, - { - "id": 9005, - "string": "小丑別墅" - }, - { - "id": 9006, - "string": "真實惡夢的王座" - }, - { - "id": 9007, - "string": "突沙軍團指揮所" - }, - { - "id": 9008, - "string": "瑪拉基實驗室" - }, - { - "id": 9010, - "string": "凱亞多勒司令官室" - }, - { - "id": 9011, - "string": "鐵匠工房" - }, - { - "id": 9012, - "string": "三個塔上層部" - }, - { - "id": 9013, - "string": "阿勒坤能量儲藏庫" - }, - { - "id": 9014, - "string": "卡諾比亞激戰地" - }, - { - "id": 9016, - "string": "黎明庭園" - }, - { - "id": 9017, - "string": "太陽燈塔" - }, - { - "id": 9018, - "string": "前線地下地窟" - }, - { - "id": 9019, - "string": "神秘地帶研究所前院" - }, - { - "id": 9020, - "string": "秘密基地後門" - }, - { - "id": 9021, - "string": "隱藏地窟" - }, - { - "id": 9022, - "string": "苦痛殿堂" - }, - { - "id": 9023, - "string": "庫特摩修克隱身處" - }, - { - "id": 9024, - "string": "遺棄的教堂" - }, - { - "id": 9025, - "string": "Храм Балдера" - }, - { - "id": 9028, - "string": "瑪拉基實驗室" - }, - { - "id": 9031, - "string": "Убежище Акаши (подземелье испытаний)" - }, - { - "id": 9032, - "string": "Золотой Лабиринт (подземелье испытаний)" - }, - { - "id": 9033, - "string": "Абсцесс (сложно) (подземелье испытаний)" - }, - { - "id": 9036, - "string": "卡若斯帢召喚地" - }, - { - "id": 9037, - "string": "暗黑裂縫入口" - }, - { - "id": 9038, - "string": "未知叢林" - }, - { - "id": 9039, - "string": "護送隊襲擊地" - }, - { - "id": 9040, - "string": "貝利卡廣場" - }, - { - "id": 9041, - "string": "貝利卡東門" - }, - { - "id": 9042, - "string": "貝利卡司令部" - }, - { - "id": 9046, - "string": "受咒綠洲" - }, - { - "id": 9050, - "string": "Край Разлома (сложно) (10 игроков)" - }, - { - "id": 9750, - "string": "Край Разлома (10 игроков)" - }, - { - "id": 9061, - "string": "巨人遺跡地" - }, - { - "id": 9062, - "string": "小丑別墅" - }, - { - "id": 9063, - "string": "漆黑祭壇" - }, - { - "id": 9064, - "string": "熔岩之廳" - }, - { - "id": 9065, - "string": "女神花園" - }, - { - "id": 9071, - "string": "Гробница Некроманта" - }, - { - "id": 9072, - "string": "Золотой Лабиринт" - }, - { - "id": 9073, - "string": "Эбеновая Башня" - }, - { - "id": 9074, - "string": "復活聖所" - }, - { - "id": 9075, - "string": "Гнездо Келсаика" - }, - { - "id": 9076, - "string": "Лабиринт Ужаса" - }, - { - "id": 9077, - "string": "巴特沙漠" - }, - { - "id": 9078, - "string": "Пик Сурьяти" - }, - { - "id": 9079, - "string": "Логово Сараваша" - }, - { - "id": 9080, - "string": "Знак Адстринго" - }, - { - "id": 9081, - "string": "極寒修練場" - }, - { - "id": 9082, - "string": "Храм Безрассудства" - }, - { - "id": 9083, - "string": "突破修練場" - }, - { - "id": 9087, - "string": "Бастион Лока" - }, - { - "id": 9088, - "string": "Зловещий Особняк" - }, - { - "id": 9089, - "string": "Убежище Культистов" - }, - { - "id": 9090, - "string": "森林小徑" - }, - { - "id": 9091, - "string": "次元結界" - }, - { - "id": 9092, - "string": "達坤之墓" - }, - { - "id": 9093, - "string": "Убежище Акаши" - }, - { - "id": 9094, - "string": "Небесный сад Салерона" - }, - { - "id": 9096, - "string": "Галерея Сирджуки" - }, - { - "id": 9724, - "string": "遺棄的教堂(攻擊隊)" - }, - { - "id": 9725, - "string": "博得神殿(攻擊隊)" - }, - { - "id": 9793, - "string": "Убежище Акаши (сложно)" - }, - { - "id": 9773, - "string": "Эбеновая Башня (сложно)" - }, - { - "id": 9775, - "string": "Гнездо Келсаика (сложно)" - }, - { - "id": 9776, - "string": "Лабиринт Ужаса (сложно)" - }, - { - "id": 9801, - "string": "暗黑次元的異空間" - }, - { - "id": 9802, - "string": "暗黑次元的異空間" - }, - { - "id": 9803, - "string": "暗黑次元的異空間" - }, - { - "id": 9026, - "string": "Аргонские залы" - }, - { - "id": 9726, - "string": "阿勒坤魅迪提亞 (攻擊隊)" - }, - { - "id": 9027, - "string": "Обитель Манайи (сложно)" - }, - { - "id": 9727, - "string": "Обитель Манайи" - }, - { - "id": 9095, - "string": "Огненный Горн" - }, - { - "id": 9795, - "string": "庫札特的礦山" - }, - { - "id": 9045, - "string": "布魯帕斯特山" - }, - { - "id": 9047, - "string": "萬聖節副本" - }, - { - "id": 9126, - "string": "佩特萊養成所" - }, - { - "id": 9975, - "string": "Рейд на Келсаика (20 игроков)" - }, - { - "id": 9911, - "string": "Рейд на Келсаика (10 игроков)" - }, - { - "id": 9051, - "string": "骯髒神殿" - }, - { - "id": 9052, - "string": "血腥慶典場" - }, - { - "id": 9711, - "string": "兇暴基露卡爾的洞穴" - }, - { - "id": 9611, - "string": "Абсцесс (сложно)" - }, - { - "id": 9777, - "string": "Каналы (3 игрока)" - }, - { - "id": 9766, - "string": "Погибший Флот" - }, - { - "id": 9043, - "string": "Замок Чудес(高階)" - }, - { - "id": 9643, - "string": "Замок Чудес" - }, - { - "id": 9743, - "string": "Замок Чудес (10 игроков)" - }, - { - "id": 9053, - "string": "Ущелье Кеззела (7 игроков)" - }, - { - "id": 9511, - "string": "Абсцесс" - }, - { - "id": 9811, - "string": "Абсцесс" - }, - { - "id": 9810, - "string": "Тюрьма Лакана" - }, - { - "id": 9813, - "string": "奇利安森林" - }, - { - "id": 9821, - "string": "拉格南要塞 2樓" - }, - { - "id": 9822, - "string": "阿克德法基地" - }, - { - "id": 9814, - "string": "阿魯卡那克那伊亞" - }, - { - "id": 9818, - "string": "秘密實驗室" - }, - { - "id": 9827, - "string": "提雅拉尼亞" - }, - { - "id": 9828, - "string": "守護者村莊" - }, - { - "id": 9829, - "string": "提亞蘭樹" - }, - { - "id": 9833, - "string": "古龍峽谷" - }, - { - "id": 9887, - "string": "秘密基地(單人)" - }, - { - "id": 9888, - "string": "凡貝爾宅邸(單人)" - }, - { - "id": 9889, - "string": "邪教徒隱身處(單人)" - }, - { - "id": 9871, - "string": "邪靈術研究所(單人)" - }, - { - "id": 9872, - "string": "黃金迷宮(單人)" - }, - { - "id": 9894, - "string": "煞雷諾空中庭園(單人)" - }, - { - "id": 9876, - "string": "恐怖迷宮(單人)" - }, - { - "id": 9873, - "string": "暗黑塔(單人)" - }, - { - "id": 9879, - "string": "札巴勒曼蒼穹" - }, - { - "id": 9820, - "string": "扺抗軍秘密營地" - }, - { - "id": 9880, - "string": "窟拉德緒結界(單人)" - }, - { - "id": 9824, - "string": "遺棄的教堂(單人)" - }, - { - "id": 9825, - "string": "博得神殿(單人)" - }, - { - "id": 9151, - "string": "聯盟領地某地區" - }, - { - "id": 9808, - "string": "Арсенал Сабекс" - }, - { - "id": 9809, - "string": "Мясницкие Катакомбы" - }, - { - "id": 9054, - "string": "Глубинный Храм (сложно)" - }, - { - "id": 9754, - "string": "Глубинный Храм" - }, - { - "id": 9055, - "string": "Алчное Ущелье (3 игрока)" - }, - { - "id": 9823, - "string": "艾爾凱亞號" - }, - { - "id": 9826, - "string": "拉格南要塞地下" - }, - { - "id": 9916, - "string": "Крейсер Стремление (Сложно)" - }, - { - "id": 9716, - "string": "Крейсер Стремление" - }, - { - "id": 9885, - "string": "Шпиль страха" - }, - { - "id": 9886, - "string": "幻影之塔 第16層" - }, - { - "id": 9713, - "string": "奇利安森林 (付費)" - }, - { - "id": 9714, - "string": "優惠專用空間" - }, - { - "id": 9804, - "string": "凱爾賽克巢穴(日本比賽用)" - }, - { - "id": 9979, - "string": "Логово Сараваша" - }, - { - "id": 9057, - "string": "Акероново пекло (сложно)" - }, - { - "id": 9757, - "string": "Акероново пекло" - }, - { - "id": 9029, - "string": "Сокровищница Капримы" - }, - { - "id": 9056, - "string": "Хроноплоскость (сложно)" - }, - { - "id": 9756, - "string": "Хроноплоскость" - }, - { - "id": 9060, - "string": "Корабль Келивана (сложно)" - }, - { - "id": 9760, - "string": "Корабль Келивана" - }, - { - "id": 9860, - "string": "Корабль Келивана (легко)" - }, - { - "id": 9059, - "string": "Остров Мертвых" - }, - { - "id": 9759, - "string": "Остров Мертвых (сложно)" - }, - { - "id": 9830, - "string": "天空競技場" - }, - { - "id": 9067, - "string": "Лаборатория Берна (сложно)" - }, - { - "id": 9767, - "string": "Лаборатория Берна" - }, - { - "id": 9769, - "string": "Замок Лилит" - }, - { - "id": 9969, - "string": "Замок Кошмарной Лилит" - }, - { - "id": 9068, - "string": "Убежище Дуриона (сложно)" - }, - { - "id": 9768, - "string": "Убежище Дуриона" - }, - { - "id": 9070, - "string": "Замок Парадоксов" - }, - { - "id": 9069, - "string": "Память о Треллум-Консурго" - }, - { - "id": 9970, - "string": "Руины Кошмарной Абнукты" - }, - { - "id": 9770, - "string": "Руины Абнукты" - }, - { - "id": 9950, - "string": "破壞的神界關口" - }, - { - "id": 9710, - "string": "Разрушенный алтарь Лакана" - }, - { - "id": 9780, - "string": "Вход в катакомбы Велики" - }, - { - "id": 9980, - "string": "Вход в разрушенные катакомбы Велики" - }, - { - "id": 9981, - "string": "Разрушенное Святилище Велики" - }, - { - "id": 9781, - "string": "Святилище Велики" - }, - { - "id": 9681, - "string": "貝里克之夢" - }, - { - "id": 9066, - "string": "Рулетка Демороса" - }, - { - "id": 9794, - "string": "Лаборатория Сайрекса" - }, - { - "id": 9994, - "string": "Лаборатория Альфа-сайрекса" - }, - { - "id": 9735, - "string": "Ангар RK-9" - }, - { - "id": 9935, - "string": "Ангар совершенного RK-9" - }, - { - "id": 9505, - "string": "破壞的貝利卡宴會場" - }, - { - "id": 9506, - "string": "貝利卡宴會場" - }, - { - "id": 9507, - "string": "龍界" - }, - { - "id": 9508, - "string": "內面世界" - }, - { - "id": 9509, - "string": "和平的貝利卡宴會場" - }, - { - "id": 9739, - "string": "Лагерь повстанцев" - }, - { - "id": 9939, - "string": "Секретный лагерь повстанцев" - }, - { - "id": 9920, - "string": "Омут Бездушного Антароса" - }, - { - "id": 9720, - "string": "Омут Антароса" - }, - { - "id": 9034, - "string": "殘酷幻影之塔" - }, - { - "id": 9783, - "string": "Крепость Тенебриса" - }, - { - "id": 9983, - "string": "Крепость Темного Тенебриса" - }, - { - "id": 9782, - "string": "Мастерская Леандра" - }, - { - "id": 9982, - "string": "Заброшенная мастерская Леандра" - }, - { - "id": 9044, - "string": "Святилище Бахаара" - }, - { - "id": 3012, - "string": "守護者訓練所" - }, - { - "id": 3016, - "string": "Замок Лилит (подземелье испытаний)" - }, - { - "id": 3018, - "string": "Крепость Темного Тенебриса (7 чел.)" - }, - { - "id": 3019, - "string": "Заброшенная мастерская Леандра (7 чел.)" - }, - { - "id": 3017, - "string": "Омут Бездушного Антароса (7 чел.)" - }, - { - "id": 3001, - "string": "秘密基地(1人)" - }, - { - "id": 3002, - "string": "凡貝爾宅邸(1人)" - }, - { - "id": 3003, - "string": "邪教徒隱身處(1人)" - }, - { - "id": 3004, - "string": "邪靈術研究所(1人)" - }, - { - "id": 3005, - "string": "黃金迷宮(1人)" - }, - { - "id": 3006, - "string": "阿卡莎隱身處(1人)" - }, - { - "id": 3007, - "string": "煞雷諾空中庭園(1人)" - }, - { - "id": 3008, - "string": "恐怖迷宮(1人)" - }, - { - "id": 3009, - "string": "暗黑塔(1人)" - }, - { - "id": 3010, - "string": "凱爾賽克巢穴(1人)" - }, - { - "id": 3011, - "string": "珊德拉馬奈伊亞(1人)" - }, - { - "id": 9503, - "string": "巴其溫聯盟總司令官官邸" - }, - { - "id": 3101, - "string": "Гнездо Паркин" - }, - { - "id": 3201, - "string": "Гнездо сверкающей Паркин" - }, - { - "id": 3024, - "string": "阿勒卡夫孵化場" - }, - { - "id": 3025, - "string": "阿勒卡夫孵化場(困難)" - }, - { - "id": 3023, - "string": "Секретное подземелье крепости Берарк" - }, - { - "id": 2000, - "string": "艾索杜勒" - }, - { - "id": 2100, - "string": "龍族建築物" - }, - { - "id": 2101, - "string": "幼蟲孵化場" - }, - { - "id": 2102, - "string": "毗利氐安濕地懸崖監獄" - }, - { - "id": 3020, - "string": "金鳞号" - }, - { - "id": 3026, - "string": "Логово Келсаика" - }, - { - "id": 3027, - "string": "Арена безумия" - }, - { - "id": 3126, - "string": "Логово Бессмертного Келсаика" - }, - { - "id": 2103, - "string": "貝爾亞克城堡核心機關室" - } - ] -} \ No newline at end of file diff --git a/dbg.json b/dbg.json deleted file mode 100644 index 670de4be..00000000 --- a/dbg.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - - "debug": { - "debug": false, - "hp": false, - "abnormal": false, - "skill": false, - "boss": false, - "chat": true, - "dm": false, - "qb": false - } - -} \ No newline at end of file diff --git a/dispatch.js b/dispatch.js deleted file mode 100644 index 2e454ab5..00000000 --- a/dispatch.js +++ /dev/null @@ -1,32 +0,0 @@ -class DispatchWrapper { - constructor(dispatch) { - this._dispatch = dispatch; - this._hooks = []; - } - - hook(...args) { - this._hooks.push(this._dispatch.hook(...args)); - } - - hookOnce(...args) { - this._dispatch.hookOnce(...args); - } - - unhook(...args) { - throw new Error("unhook not supported for tera-guide"); - } - - _remove_all_hooks() { - for(const hook of this._hooks) this._dispatch.unhook(hook); - } - - get require() { - return this._dispatch.require; - } - - toServer(...args) { return this.send(...args); } - toClient(...args) { return this.send(...args); } - send(...args) { return this._dispatch.send(...args); } -} - -module.exports = DispatchWrapper; \ No newline at end of file diff --git a/guides/2800.js b/guides/2800.js new file mode 100644 index 00000000..03841270 --- /dev/null +++ b/guides/2800.js @@ -0,0 +1,749 @@ +// Dreadspire VALKYTEQ +// +// made by TristanPW + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + // FIRST FLOOR + + let knockbackCounter = 0; + let knockbackTimer = null; + + function knockback_firstfloor() { + dispatch._mod.clearTimeout(knockbackTimer); + knockbackCounter++; + + if (knockbackCounter === 2) { + handlers.text({ type: "text", sub_type: "message", message: "KNOCKBACK", message_RU: "Будет Отбрасывание", speech: true }); + knockbackCounter = 0; + } + + knockbackTimer = dispatch._mod.setTimeout(() => knockbackCounter = 0, 5000); + } + + + // THIRD FLOOR + + const PizzaA = { + offsets: [0.24, 1.29, 2.33, -2.88, -1.84, -0.8], + distance: 200 + }; + + const PizzaB = { + offsets: [-0.26, 0.79, 1.83, 2.9, -2.34, -1.3], + distance: 200 + }; + + const PizzaC = { + offsets: [-0.26, 1.29, 2.9, -1.84], + distance: 200 + }; + + const CounterPizzaC = { + offsets: [0.24, 2.33, -2.88, -0.8, 0.79, 1.83, -2.34, -1.3], + distance: 200 + }; + + const Inner = { + offsets: [0.24, 1.29, 2.33, -2.88, -1.84, -0.8, -0.26, 0.79, 1.83, 2.9, -2.34, -1.3], + distance: 275 + }; + + const Outer = { + offsets: [0.24, 1.29, 2.33, -2.88, -1.84, -0.8, -0.26, 0.79, 1.83, 2.9, -2.34, -1.3], + distance: 150 + }; + + PizzaA.counter = PizzaB; + PizzaB.counter = PizzaA; + PizzaC.counter = CounterPizzaC; + Inner.counter = Outer; + Outer.counter = Inner; + + const Mechanics = { + 1122: { + order: [PizzaA, Inner, Outer, PizzaB, PizzaC], + delays: [0, 1000, 2000, 3000, 4000] + }, + 1123: { + order: [PizzaB, PizzaA, Outer, Inner, PizzaC], + delays: [200, 1200, 2200, 3200, 4200] + }, + 1124: { + order: [Inner, PizzaB, PizzaA, Outer, PizzaC], + delays: [0, 1000, 2000, 3000, 4000] + }, + 1127: { + order: [PizzaA, PizzaB, Inner, Outer, PizzaC], + delays: [200, 1200, 2200, 3200, 4200] + } + }; + + const debuffs_thirdfloor = [false, false, false, false, false]; // False = Blue (Avoid Hit), True = Red (Take Hit) + + function cage_mechanic_thirdfloor(id, _, event, entity) { + const mechanic = Mechanics[id]; + + if (mechanic && entity.stage == 0) { + let flower_id = 559; + + // eslint-disable-next-line guard-for-in + for (const i in mechanic.order) { + const pattern = !debuffs_thirdfloor[i] ? mechanic.order[i] : mechanic.order[i].counter; + + for (const offset of pattern.offsets) { + handlers.event([{ "type": "spawn", + "id": flower_id, + "delay": mechanic.delays[i], + "sub_delay": mechanic.delays[i] + 1900, + "distance": pattern.distance, + "offset": offset + }]); + } + flower_id = flower_id == 559 ? 556 : 559; + } + } + } + + function cage_set_debuff(id, bool) { + debuffs_thirdfloor[id] = bool; + } + + + // FIFTH FLOOR + + let fifth_debuff = null; + + + // SIXTH FLOOR + + function sixth_regress() { + handlers.text({ sub_type: "notification", message: "Plague/Regress", message_RU: "[c=#E904CA]!!!!![/c][c=#E904CA]!!!![/c][c=#39FF33]!!!![/c]!!!!!!![c=#F90531]!!!!!!!!!!![/c] Регресс[c=#39FF33]!![/c][c=#E904CA]!!!!![/c]!!!![c=#0517F9]!!!![/c]!!!!!!![c=#F90531]!!!!!!!!!!![/c]" }); + // handlers.text({ sub_type: "alert", message: "Plague/Regress", message_RU: "Регресс!!", delay: 0 }); + handlers.text({ sub_type: "warning", message: "Plague/Regress", message_RU: "Регресс!!" }); + handlers.text({ sub_type: "message", message: "Plague/Regress", message_RU: "Регресс!!" }); + // handlers.text({ sub_type: "alert", message: "Plague/Regress", message_RU: "Регресс!!" }); + // handlers.text({ sub_type: "warning", message: "Plague/Regress", message_RU: "Регресс!!" }); + // handlers.text({ sub_type: "message", message: "Plague/Regress", message_RU: "Регресс!!" }); + // handlers.text({ sub_type: "speech", message: "Plague/Regress", message_RU: "Регресс!!" }); + } + + + // SEVENTH FLOOR + + let seventh_fifty = false; + + function seventh_message_event(skillid) { + switch (skillid) { + // Lakan has noticed you. + case 1043: + if (!seventh_fifty) { + handlers.text({ + sub_type: "notification", + message: "Debuffs > Circles > Bombs", + message_RU: "ДКБ" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Debuffs > Bombs > Circles", + message_RU: "ДБК" + }); + } + break; + // Lakan is trying to take you on one at a time. + case 1044: + if (!seventh_fifty) { + handlers.text({ + sub_type: "notification", + message: "Circles > Bombs > Debuffs", + message_RU: "КБД" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Circles > Debuffs > Bombs", + message_RU: "КДБ" + }); + } + break; + // Lakan intends to kill all of you at once. + case 1045: + if (!seventh_fifty) { + handlers.text({ + sub_type: "notification", + message: "Bombs > Debuffs > Circles", + message_RU: "БДК" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Bombs > Circles > Debuffs", + message_RU: "БКД" + }); + } + break; + } + } + + function seventh_spawn_tables() { + handlers.event([ + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 2.8, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 3.46, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 4.12, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 4.75, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 5.38, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 5.97, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 6.58, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 7.2, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 7.8, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 8.44, "ownerName": "SAFE SPOT", "message": "SAFE" } + ]); + } + + // Lasers mech + const lasers_markers_seventhfloor = []; + const inverted_lasers_markers_seventhfloor = []; + const sign_offsets_seventhfloor = [-0.32, -0.94, -1.57, -2.2, -2.83, 2.83, 2.2, 1.57, 0.94, 0.32]; + + for (const offset of sign_offsets_seventhfloor) { + const event = { + "type": "spawn", + "sub_type": "build_object", + "id": 1, + "sub_delay": 4000, + "distance": 450, + "ownerName": "SAFE SPOT", + "message": "SAFE", + "offset": offset + }; + + lasers_markers_seventhfloor.push(event); + inverted_lasers_markers_seventhfloor.push(event); + } + + for (let distance = 175; distance <= 425; distance += 25) { + lasers_markers_seventhfloor.push({ + "type": "spawn", + "id": 603, + "sub_delay": 4000, + "distance": distance, + "offset": 0 + }); + lasers_markers_seventhfloor.push({ + "type": "spawn", + "id": 603, + "sub_delay": 4000, + "distance": distance, + "offset": 1.25 + }); + lasers_markers_seventhfloor.push({ + "type": "spawn", + "id": 603, + "sub_delay": 4000, + "distance": distance, + "offset": 2.5 + }); + lasers_markers_seventhfloor.push({ + "type": "spawn", + "id": 603, + "sub_delay": 4000, + "distance": distance, + "offset": -2.5 + }); + lasers_markers_seventhfloor.push({ + "type": "spawn", + "id": 603, + "sub_delay": 4000, + "distance": distance, + "offset": -1.25 + }); + + inverted_lasers_markers_seventhfloor.push({ + "type": "spawn", + "id": 603, + "sub_delay": 4000, + "distance": distance, + "offset": 0.62 + }); + inverted_lasers_markers_seventhfloor.push({ + "type": "spawn", + "id": 603, + "sub_delay": 4000, + "distance": distance, + "offset": 1.87 + }); + inverted_lasers_markers_seventhfloor.push({ + "type": "spawn", + "id": 603, + "sub_delay": 4000, + "distance": distance, + "offset": 3.12 + }); + inverted_lasers_markers_seventhfloor.push({ + "type": "spawn", + "id": 603, + "sub_delay": 4000, + "distance": distance, + "offset": -1.88 + }); + inverted_lasers_markers_seventhfloor.push({ + "type": "spawn", + "id": 603, + "sub_delay": 4000, + "distance": distance, + "offset": -0.63 + }); + } + + + return { + // FIRST FLOOR + + "nd-9034-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + // Clone Mechanic + // "h-2800-1000-99": [{"type": "text","sub_type": "notification","message": "BlackJacka is looking after you","message_RU": "БлекДжека присматривает за вами" }], + "ab-2800-1000-90340105": [{ type: "text", sub_type: "message", message: "STUN IT", message_RU: "Застанить босса!" }], + // Backstep + Knockback + // "s-2800-1000-212-0": [{type: "text", sub_type: "message", message: "BACKSTEP + KNOCKBACK", message_RU: "Назад + Отбрасывание"}], + // "s-2800-1000-304-0": [{type: "text", sub_type: "message", message: "STUN", message_RU: "СТАН!"}, + // { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 250, 0, 1500] }], + "s-2800-1000-1102-0": [{ type: "text", sub_type: "message", message: "Running", message_RU: "Пробежка" }, + { type: "func", func: knockback_firstfloor.bind(null) }], + "s-2800-1000-1105-0": [{ type: "text", sub_type: "message", message: "KNOCKBACK", message_RU: "Атака вперед" }], + "s-2800-1000-1108-0": [{ type: "text", sub_type: "message", message: "KNOCKBACK", message_RU: "Отбрасывание" }], + "s-2800-1000-1203-0": [{ type: "text", sub_type: "message", message: "Sleep", message_RU: "Сон!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 250, 0, 3500] }], + "s-2800-1000-1304-0": [{ type: "text", sub_type: "message", message: "BACKSTEP + KNOCKBACK", message_RU: "Назад + Отбрасывание" }], + "s-2800-1000-2102-0": "s-2800-1000-1102-0", + "s-2800-1000-2105-0": "s-2800-1000-1105-0", + "s-2800-1000-2108-0": "s-2800-1000-1108-0", + "s-2800-1000-2203-0": "s-2800-1000-1203-0", + "s-2800-1000-2304-0": "s-2800-1000-1304-0", + + + // SECOND FLOOR + + // "s-2800-2000-101-0": [{type: "text", sub_type: "message", message: "SMASH COMING", message_RU: "Скоро разгром"}], + "s-2800-2000-1102-0": [{ type: "text", sub_type: "message", message: "SPIN", message_RU: "Вращение" }], + "s-2800-2000-1107-0": [{ type: "text", sub_type: "message", message: "BACK", message_RU: "Стан назад" }], + "s-2800-2000-1108-0": [{ type: "text", sub_type: "message", message: "FRONT", message_RU: "Атака вперед" }], + "s-2800-2000-1109-0": [{ type: "text", sub_type: "message", message: "BACK SPIN", message_RU: "Вращение назад" }], + "s-2800-2000-1110-0": [{ type: "text", sub_type: "message", message: "OUT", message_RU: "От босса!" }], + "s-2800-2000-1119-0": [{ type: "text", sub_type: "message", message: "PULL", message_RU: "Притяжка + вращение" }], + "s-2800-2000-1122-0": [{ type: "text", sub_type: "message", message: "IN", message_RU: "К боссу!" }], + "s-2800-2000-1306-0": [{ type: "text", sub_type: "message", message: "Run away", message_RU: "Текайте, глупцы!" }], + "s-2800-2000-2102-0": "s-2800-2000-1102-0", + "s-2800-2000-2107-0": "s-2800-2000-1107-0", + "s-2800-2000-2108-0": "s-2800-2000-1108-0", + "s-2800-2000-2109-0": "s-2800-2000-1109-0", + "s-2800-2000-2110-0": "s-2800-2000-1110-0", + "s-2800-2000-2119-0": "s-2800-2000-1119-0", + "s-2800-2000-2122-0": "s-2800-2000-1122-0", + "s-2800-2000-2306-0": "s-2800-2000-1306-0", + + + // THIRD FLOOR + + // Cage Mechanic + "s-2800-3000-1122-0": [{ "type": "func", "func": cage_mechanic_thirdfloor.bind(1122) }], + "s-2800-3000-1123-0": [{ "type": "func", "func": cage_mechanic_thirdfloor.bind(1123) }], + "s-2800-3000-1124-0": [{ "type": "func", "func": cage_mechanic_thirdfloor.bind(1124) }], + "s-2800-3000-1127-0": [{ "type": "func", "func": cage_mechanic_thirdfloor.bind(1127) }], + "ae-0-0-90340306": [{ "type": "func", "func": cage_set_debuff.bind(0, true) }], + "ae-0-0-90340307": [{ "type": "func", "func": cage_set_debuff.bind(0, false) }], + "ae-0-0-90340308": [{ "type": "func", "func": cage_set_debuff.bind(1, true) }], + "ae-0-0-90340309": [{ "type": "func", "func": cage_set_debuff.bind(1, false) }], + "ae-0-0-90340310": [{ "type": "func", "func": cage_set_debuff.bind(2, true) }], + "ae-0-0-90340311": [{ "type": "func", "func": cage_set_debuff.bind(2, false) }], + "ae-0-0-90340312": [{ "type": "func", "func": cage_set_debuff.bind(3, true) }], + "ae-0-0-90340313": [{ "type": "func", "func": cage_set_debuff.bind(3, false) }], + "ae-0-0-90340314": [{ "type": "func", "func": cage_set_debuff.bind(4, true) }], + "ae-0-0-90340315": [{ "type": "func", "func": cage_set_debuff.bind(4, false) }], + "s-2800-3000-1106-0": [{ type: "text", sub_type: "message", message: "Kick back!", message_RU: "Удар назад!" }], + "s-2800-3000-1108-0": [{ type: "text", sub_type: "message", message: "Kick forward!", message_RU: "Удар вперед!" }], + "s-2800-3000-1112-0": [{ type: "text", sub_type: "message", message: "To the Boss", message_RU: "К Боссу" }], // + "s-2800-3000-1130-0": [ + { type: "text", sub_type: "message", "message": "LEFT SWIPE", message_RU: "Удар вправо" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 200, "offset": 2.3, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 200, "offset": 1, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 200, "offset": 2.3 }, + { "type": "spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 200, "offset": 1 } + ], + "s-2800-3000-1131-0": [ + { type: "text", sub_type: "message", "message": "RIGHT SWIPE", message_RU: "Удар влево" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 200, "offset": -2.3, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 200, "offset": -1, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 200, "offset": -2.3 }, + { "type": "spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 200, "offset": -1 } + ], + "s-2800-3000-1134-0": [{ type: "text", sub_type: "message", message: "DEBUFF", message_RU: "ДЕБАФ" }], // + "s-2800-3000-1502-0": [{ type: "text", sub_type: "message", message: "FORCED CAGE", message_RU: "Скоро клетка" }], // + "ns-2800-3004": [{ type: "text", sub_type: "message", message: "Kill mobs", message_RU: "Убить мобов" }], + "s-2800-3000-2106-0": "s-2800-3000-1106-0", + "s-2800-3000-2108-0": "s-2800-3000-1108-0", + "s-2800-3000-2112-0": "s-2800-3000-1112-0", + "s-2800-3000-2130-0": "s-2800-3000-1130-0", + "s-2800-3000-2131-0": "s-2800-3000-1131-0", + "s-2800-3000-2134-0": "s-2800-3000-1134-0", + "s-2800-3000-2502-0": "s-2800-3000-1502-0", + + + // FOURTH FLOOR + + "s-2800-4000-1102-0": [{ type: "text", sub_type: "message", message: "From boss - to boss", message_RU: "От босса - к боссу" }], + "s-2800-4000-1103-0": [{ type: "text", sub_type: "message", message: "To the boss", message_RU: "К боссу" }], + "s-2800-4000-1107-0": [{ type: "text", sub_type: "message", message: "Under the tank, then under the dd", message_RU: "Под танка, затем под мили дд" }], + "s-2800-4000-1108-0": [ + { type: "text", sub_type: "message", message: "Lines", message_RU: "Линии" }, + { type: "spawn", func: "vector", args: [553, 90, 20, 175, 300, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 90, -20, -175, 300, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 5, 300, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 90, -20, -5, 300, 0, 4000] } + ], + "s-2800-4000-1109-1": [{ type: "text", sub_type: "message", message: "Beam", message_RU: "Луч" }], + "s-2800-4000-1109-2": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-2800-4000-1205-0": [{ type: "text", sub_type: "message", message: "Beam in a circle", message_RU: "Луч по кругу" }], + "s-2800-4000-1206-0": [{ type: "text", sub_type: "message", message: "Beam forward, left, right", message_RU: "Луч вперед, лево, право" }], + "ns-2800-4001": [{ type: "text", sub_type: "message", message: "Kill mobs", message_RU: "Убить мобов" }], + "s-2800-4000-2102-0": "s-2800-4000-1102-0", + "s-2800-4000-2103-0": "s-2800-4000-1103-0", + "s-2800-4000-2107-0": "s-2800-4000-1107-0", + "s-2800-4000-2108-0": "s-2800-4000-1108-0", + "s-2800-4000-2109-1": "s-2800-4000-1109-1", + "s-2800-4000-2109-2": "s-2800-4000-1109-2", + "s-2800-4000-2205-0": "s-2800-4000-1205-0", + "s-2800-4000-2206-0": "s-2800-4000-1206-0", + + + // FIFTH FLOOR + + "h-2800-5000-85": [{ "type": "text", "sub_type": "notification", "message": "85%... Big Jump + mob ", "message_RU": "85% Скоро Большой прыжок + мобы" }], + "h-2800-5000-55": [{ "type": "text", "sub_type": "notification", "message": "55%... Big Jump + mob ", "message_RU": "55% Скоро Большой прыжок + мобы" }], + "h-2800-5000-25": [{ "type": "text", "sub_type": "notification", "message": "25%... Big Jump + mob ", "message_RU": "25% Скоро Большой прыжок + мобы" }], + "h-2800-5000-10": [{ "type": "text", "sub_type": "notification", "message": "10%... Big Jump + mob ", "message_RU": "10% Скоро Большой прыжок + мобы" }], + "s-2800-5000-1103-0": [ + { type: "text", sub_type: "message", message: "Tail", message_RU: "Хвост" }, + { type: "spawn", func: "semicircle", args: [140, 260, 553, 0, 0, 10, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 135, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 260, 500, 0, 2000] } + ], + "s-2800-5000-1104-0": [ + { type: "text", sub_type: "message", message: "Ice Storm DOTs", message_RU: "Ледяные лужи" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 500, 0, 5000] } + ], + "s-2800-5000-1105-0": [ + { type: "text", sub_type: "message", message: "Fire Bombs", message_RU: "Огненные бомбы" }, + { type: "spawn", func: "circle", args: [false, 553, 135, 500, 10, 125, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 315, 500, 10, 125, 0, 3250] }, + { type: "spawn", func: "circle", args: [false, 553, 45, 500, 10, 125, 0, 3500] }, + { type: "spawn", func: "circle", args: [false, 553, 235, 500, 10, 125, 0, 3750] }, + { type: "spawn", func: "circle", args: [false, 553, 90, 500, 10, 125, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 270, 500, 10, 125, 0, 4250] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 500, 10, 125, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 553, 180, 500, 10, 125, 0, 4750] }, + { type: "spawn", func: "circle", args: [false, 493, 0, 0, 0, 250, 0, 4750] } + ], + "s-2800-5000-1107-0": [ + { type: "text", sub_type: "message", message: "Change", message_RU: "Смена" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 50, 0, 250, 0, 3000] } + ], + "s-2800-5000-1118-0": [{ type: "text", sub_type: "message", message: "Big Jump + mobs", message_RU: "Большой прыжок + мобы" }], + "s-2800-5000-1118-2": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-2800-5000-1120-0": [ + { type: "text", sub_type: "message", message: "Stun + reclining", message_RU: "Стан + откид" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 150, 0, 680, 0, 7000] } + ], + "s-2800-5000-1124-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-2800-5000-1127-0": [{ type: "text", sub_type: "message", message: "DEBUFF", message_RU: "ДЕБАФ" }], + "ns-2800-5002": [ + { type: "text", sub_type: "message", message: "Kill your mob(fire)", message_RU: "Убить своего моба(огонь)", check_func: () => fifth_debuff === "blue" }, + { type: "spawn", func: "marker", args: [false, 0, 0, 0, 30000, true, null], tag: "mob1", check_func: () => fifth_debuff === "blue" } + ], + "ns-2800-5003": [ + { type: "text", sub_type: "message", message: "Kill your mob(ice)", message_RU: "Убить своего моба(лед)", check_func: () => fifth_debuff === "red" }, + { type: "spawn", func: "marker", args: [false, 0, 0, 0, 30000, true, null], tag: "mob2", check_func: () => fifth_debuff === "red" } + ], + "nd-2800-5002": [{ type: "despawn_all", tag: "mob1" }], + "nd-2800-5003": [{ type: "despawn_all", tag: "mob2" }], + "s-2800-5000-2103-0": "s-2800-5000-1103-0", + "s-2800-5000-2104-0": "s-2800-5000-1104-0", + "s-2800-5000-2105-0": "s-2800-5000-1105-0", + "s-2800-5000-2107-0": "s-2800-5000-1107-0", + "s-2800-5000-2118-0": "s-2800-5000-1118-0", + "s-2800-5000-2118-2": "s-2800-5000-1118-2", + "s-2800-5000-2120-0": "s-2800-5000-1120-0", + "s-2800-5000-2124-0": "s-2800-5000-1124-0", + "s-2800-5000-2127-0": "s-2800-5000-1127-0", + // Debuff tracker + "am-2800-5000-90340501": [ + { type: "text", sub_type: "message", message: "Ice is taken", message_RU: "Взят лед" }, + { type: "func", "func": () => fifth_debuff = "red" } + ], + "am-2800-5000-90340502": [ + { type: "text", sub_type: "message", message: "Fire is taken", message_RU: "Взят огонь" }, + { type: "func", "func": () => fifth_debuff = "blue" } + ], + "am-2800-5000-90340503": [{ type: "func", "func": () => fifth_debuff = null }], + // Mob Wave Attack + "s-2800-5002-1106-0": [{ type: "spawn", func: "vector", args: [553, 120, 30, 10, 450, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 120, -30, -10, 450, 0, 4000] }], + "s-2800-5003-1101-0": "s-2800-5002-1106-0", + "s-2800-5002-2106-0": "s-2800-5002-1106-0", + "s-2800-5003-2101-0": "s-2800-5002-1106-0", + + + // SIXTH FLOOR + + "qb-2800-6000-434601": [{ type: "func", func: sixth_regress.bind(null) }], + "s-2800-6000-1101-0": [ + { type: "text", sub_type: "message", message: "Blow from the ground", message_RU: "Удар из под земли" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 } + ], + "s-2800-6000-1103-0": [ + { type: "text", sub_type: "message", message: "Impact", message_RU: "Удар" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 225, 0, 425, 0, 3000] } + ], + "s-2800-6000-1104-0": [ + { type: "text", sub_type: "message", message: "Impact", message_RU: "Удар + взмах" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 225, 0, 375, 0, 3000] } + ], + "s-2800-6000-1106-0": [ + { type: "text", sub_type: "message", message: "Series + Impact", message_RU: "Серия + Удар" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 225, 0, 375, 3000, 2000] } + ], + "s-2800-6000-1107-0": [{ type: "text", sub_type: "message", message: "Boms", message_RU: "Бомба" }], + "s-2800-6000-1109-0": [ + { type: "text", sub_type: "message", message: "1 strike", message_RU: "1 удар" }, + { type: "spawn", func: "semicircle", args: [-160, 105, 553, 0, 0, null, 550, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, -160, 550, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 105, 550, 0, 3000] }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 3000, "distance": 350, "offset": 2.6, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "item", "id": 98260, "sub_delay": 3000, "distance": 350, "offset": 2.6 } + ], + "s-2800-6000-1110-0": [ + { type: "text", sub_type: "message", message: "2 strikes", message_RU: "2 удара" }, + { type: "spawn", func: "semicircle", args: [-160, 105, 553, 0, 0, null, 550, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, -160, 550, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 105, 550, 0, 3000] }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 3000, "distance": 350, "offset": 2.6, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "item", "id": 98260, "sub_delay": 3000, "distance": 350, "offset": 2.6 } + ], + "s-2800-6000-1111-0": [{ type: "text", sub_type: "message", message: "Left kick", message_RU: "Удар левой" }], + "s-2800-6000-1112-0": [{ type: "text", sub_type: "message", message: "Right kick", message_RU: "Удар правой" }], + "s-2800-6000-1113-0": [{ type: "text", sub_type: "message", message: "Laser", message_RU: "Лазер" }], + "s-2800-6000-1113-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-2800-6000-1133-0": [ + { type: "text", sub_type: "message", message: "Strike", message_RU: "Удар" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 225, 0, 475, 0, 3000] } + ], + "s-2800-6000-1134-0": [ + { type: "text", sub_type: "message", message: "Impact", message_RU: "Удар + взмах" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 225, 0, 475, 0, 3000] } + ], + "s-2800-6000-2101-0": "s-2800-6000-1101-0", + "s-2800-6000-2103-0": "s-2800-6000-1103-0", + "s-2800-6000-2104-0": "s-2800-6000-1104-0", + "s-2800-6000-2106-0": "s-2800-6000-1106-0", + "s-2800-6000-2107-0": "s-2800-6000-1107-0", + "s-2800-6000-2109-0": "s-2800-6000-1109-0", + "s-2800-6000-2110-0": "s-2800-6000-1110-0", + "s-2800-6000-2111-0": "s-2800-6000-1111-0", + "s-2800-6000-2112-0": "s-2800-6000-1112-0", + "s-2800-6000-2113-0": "s-2800-6000-1113-0", + "s-2800-6000-2113-1": "s-2800-6000-1113-1", + "s-2800-6000-2133-0": "s-2800-6000-1133-0", + "s-2800-6000-2134-0": "s-2800-6000-1134-0", + + + // SEVENTH FLOOR + + // Lasers + Mechanic + // "s-2800-7000-901-0": [{"type": "text","sub_type": "notification","message": "DEBUFF (CLOSEST)"}].concat(lasers_markers_seventhfloor), + // "s-2800-7000-902-0": [{"type": "text","sub_type": "notification","message": "DEBUFF (FURTHEST)"}].concat(inverted_lasers_markers_seventhfloor), + // "s-2800-7000-903-0": [{"type": "text","sub_type": "notification","message": "GATHER + CLEANSE"}].concat(lasers_markers_seventhfloor), + // "s-2800-7000-904-0": [{"type": "text","sub_type": "notification","message": "GATHER + NO CLEANSE"}].concat(inverted_lasers_markers_seventhfloor), + // "s-2800-7000-905-0": [{"type": "text","sub_type": "notification","message": "SPREAD"}].concat(lasers_markers_seventhfloor), + // "s-2800-7000-906-0": [{"type": "text","sub_type": "notification","message": "GATHER"}].concat(inverted_lasers_markers_seventhfloor), + "nd-2800-7000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-2800-7000-99": [{ type: "func", func: () => seventh_fifty = false }], + "h-2800-7000-50": [{ type: "func", func: () => seventh_fifty = true }], + "dm-0-0-90340703": [{ type: "func", func: seventh_message_event, args: [1043] }], // Lakan has noticed you. + "dm-0-0-90340704": [{ type: "func", func: seventh_message_event, args: [1044] }], // Lakan is trying to take you on one at a time. + "dm-0-0-90340705": [{ type: "func", func: seventh_message_event, args: [1045] }], // Lakan intends to kill all of you at once. + "s-2800-7000-1105-0": [ + { type: "text", sub_type: "message", message: "Discarding", message_RU: "Откид пятка" }, + { type: "spawn", func: "vector", args: [553, 0, 0, -95, 850, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 95, 850, 0, 3000] } + ], + "s-2800-7000-1136-0": [{ type: "text", sub_type: "message", message: "Claw", message_RU: "Когти" }], + "s-2800-7000-1110-0": [{ type: "text", sub_type: "message", message: "Claw", message_RU: "Когти" }], + "s-2800-7000-1129-0": [{ type: "text", sub_type: "message", message: "IN", message_RU: "К Боссу!" }], + "s-2800-7000-1130-0": [ + { type: "text", sub_type: "message", message: "Shield Strike", message_RU: "Удар щитом" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 130, 0, 270, 0, 2500] } + ], + "s-2800-7000-1132-0": [ + { type: "text", sub_type: "message", message: "AOE Shield", message_RU: "АОЕ щитом!" }, + { type: "spawn", func: "semicircle", args: [-65, 65, 553, 0, 0, null, 600, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 40, -65, 600, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 40, 65, 600, 0, 3000] } + ], + "s-2800-7000-1133-0": [ + { type: "text", sub_type: "message", message: "AOE Shield", message_RU: "АОЕ щитом!" }, + { type: "spawn", func: "semicircle", args: [-65, 65, 553, 0, 0, null, 600, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 0, 40, -65, 600, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 0, 40, 65, 600, 0, 6000] } + ], + "s-2800-7000-1135-0": [{ type: "text", sub_type: "message", message: "IN", message_RU: "К Боссу!" }], + "s-2800-7000-1240-0": [ + { type: "text", sub_type: "message", message: "Donuts", message_RU: "Бублики!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 200, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 380, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 520, 0, 6000] } + ], + "s-2800-7000-1401-0": [{ type: "text", sub_type: "message", message: "Plague/Regress", message_RU: "Регресс!!" }], + "s-2800-7000-1402-0": [{ type: "text", sub_type: "message", message: "Sleep", message_RU: "Слип!!" }], + "s-2800-7000-1701-0": [{ type: "text", sub_type: "message", message: "Back + front", message_RU: "Назад + Вперед" }], + // + "s-2800-7000-1113-0": [{ type: "text", sub_type: "message", message: "Bait", message_RU: "Байт" }], + "s-2800-7000-1151-0": [{ type: "text", sub_type: "message", message: "Attention stun", message_RU: "Стан" }], + "s-2800-7000-1152-0": [ + { type: "text", sub_type: "message", message: "Stun + Back", message_RU: "Стан + Откид назад" }, + { type: "spawn", func: "semicircle", args: [110, 250, 553, 0, 0, null, 1000, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 70, -1000, 70, 1000, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 290, -1000, -70, 1000, 0, 6000] } + ], + "s-2800-7000-1138-0": [{ type: "spawn", func: "circle", args: [false, 553, 0, 10, 0, 250, 0, 3000] }], + "s-2800-7000-1140-0": [ + { type: "text", sub_type: "message", message: "Donuts", message_RU: "Бублики!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 200, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 380, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 520, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 700, 0, 6000] } + ], + "s-2800-7000-1154-0": [ + { "type": "text", "sub_type": "message", "message": "OUT + IN", message_RU: "От него => К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 10, 0, 250, 0, 3000] } + ], + "s-2800-7000-1155-0": [ + { "type": "text", "sub_type": "message", "message": "IN + OUT", message_RU: "К нему => От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 10, 0, 250, 0, 3000] } + ], + "s-2800-7000-1142-0": [ + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 2.8, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 3.46, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 4.12, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 4.75, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 5.38, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 5.97, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 6.58, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 7.2, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 7.8, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 8.44, "ownerName": "SAFE SPOT", "message": "SAFE" } + ], + "s-2800-7000-1143-0": "s-2800-7000-1142-0", + "s-2800-7000-1910-0": [{ type: "func", func: seventh_spawn_tables.bind(null) }], + "s-2800-7000-1901-0": [ + { type: "text", sub_type: "message", message: "(Debuffs) Closest", message_RU: "Дебафф (ближние)" }, + { type: "func", func: seventh_spawn_tables.bind(null) } + ], + "s-2800-7000-1902-0": [ + { type: "text", sub_type: "message", message: "(Debuffs) Farthest", message_RU: "Дебафф (дальние)" }, + { type: "func", func: seventh_spawn_tables.bind(null) } + ], + "s-2800-7000-1903-0": [ + { type: "text", sub_type: "message", message: "(Bombs) Gather + Cleanse", message_RU: "Бомбы (вместе!) + клинс" }, + { type: "func", func: seventh_spawn_tables.bind(null) } + ], + "s-2800-7000-1904-0": [ + { type: "text", sub_type: "message", message: "(Bombs) Gather + No cleanse", message_RU: "Бомбы (вместе!) + БЕЗ клинса" }, + { type: "func", func: seventh_spawn_tables.bind(null) } + ], + "s-2800-7000-1905-0": [ + { type: "text", sub_type: "message", message: "(Circles) Spread", message_RU: "Круги (отдельно!)" }, + { type: "func", func: seventh_spawn_tables.bind(null) } + ], + "s-2800-7000-1906-0": [ + { type: "text", sub_type: "message", message: "(Circles) Gather", message_RU: "Круги (вместе!)" }, + { type: "func", func: seventh_spawn_tables.bind(null) } + ], + "s-2800-7000-1144-0": [ + { "type": "text", "sub_type": "message", "message": "OUT", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 10, 0, 250, 0, 3000] } + ], + "s-2800-7000-1145-0": [ + { "type": "text", "sub_type": "message", "message": "IN", message_RU: "К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 10, 0, 250, 0, 3000] } + ], + "s-2800-7000-2105-0": "s-2800-7000-1105-0", + "s-2800-7000-2136-0": "s-2800-7000-1136-0", + "s-2800-7000-2110-0": "s-2800-7000-1110-0", + "s-2800-7000-2129-0": "s-2800-7000-1129-0", + "s-2800-7000-2130-0": "s-2800-7000-1130-0", + "s-2800-7000-2132-0": "s-2800-7000-1132-0", + "s-2800-7000-2133-0": "s-2800-7000-1133-0", + "s-2800-7000-2135-0": "s-2800-7000-1135-0", + "s-2800-7000-2401-0": "s-2800-7000-1401-0", + "s-2800-7000-2402-0": "s-2800-7000-1402-0", + "s-2800-7000-2701-0": "s-2800-7000-1701-0", + "s-2800-7000-2113-0": "s-2800-7000-1113-0", + "s-2800-7000-2151-0": "s-2800-7000-1151-0", + "s-2800-7000-2152-0": "s-2800-7000-1152-0", + "s-2800-7000-2138-0": "s-2800-7000-1138-0", + "s-2800-7000-2140-0": "s-2800-7000-1140-0", + "s-2800-7000-2154-0": "s-2800-7000-1154-0", + "s-2800-7000-2155-0": "s-2800-7000-1155-0", + "s-2800-7000-2240-0": "s-2800-7000-1240-0", + "s-2800-7000-2142-0": "s-2800-7000-1142-0", + "s-2800-7000-2143-0": "s-2800-7000-1143-0", + "s-2800-7000-2901-0": "s-2800-7000-1901-0", + "s-2800-7000-2902-0": "s-2800-7000-1902-0", + "s-2800-7000-2903-0": "s-2800-7000-1903-0", + "s-2800-7000-2904-0": "s-2800-7000-1904-0", + "s-2800-7000-2905-0": "s-2800-7000-1905-0", + "s-2800-7000-2144-0": "s-2800-7000-1144-0", + "s-2800-7000-2145-0": "s-2800-7000-1145-0", + + + // EIGHTH FLOOR + + "s-2800-8000-1102-0": [ + { type: "text", sub_type: "message", message: "Pull in 5 sec", message_RU: "Скоро стяжка" }, + { type: "text", sub_type: "message", message: "Pull", message_RU: "Стяжка", delay: 4500 } + ], + "s-2800-8000-2102-0": [ + { type: "text", sub_type: "message", message: "Pull in 5 sec", message_RU: "Скоро стяжка" }, + { type: "text", sub_type: "message", message: "Pull", message_RU: "Стяжка", delay: 3500 } + ], + "s-2800-8000-1101-0": [ + { type: "text", sub_type: "message", message: "Soon AOE", message_RU: "Скоро АОЕ" }, + { type: "text", sub_type: "message", message: "AOE", message_RU: "AOE", delay: 4500 } + ], + "s-759-1003-2101-0": [ + { type: "text", sub_type: "message", message: "Soon AOE", message_RU: "Скоро АОЕ" }, + { type: "text", sub_type: "message", message: "AOE", message_RU: "AOE", delay: 3500 } + ], + "s-2800-8000-2110-0": [ + { type: "text", sub_type: "message", message: "Clover", message_RU: "Клевер" }, + { type: "spawn", func: "circle", args: [false, 553, 45, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 135, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 225, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 315, 180, 12, 230, 0, 3000] } + ], + "s-2800-8000-1110-0": [ + { type: "text", sub_type: "message", message: "Clover", message_RU: "Клевер" }, + { type: "spawn", func: "circle", args: [false, 553, 45, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 135, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 225, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 315, 180, 12, 230, 0, 3000] } + ] + }; +}; \ No newline at end of file diff --git a/guides/3017.js b/guides/3017.js deleted file mode 100644 index 4d53502d..00000000 --- a/guides/3017.js +++ /dev/null @@ -1,534 +0,0 @@ -const SPAWN_CIRCLES = true; - -// AAHM -//made by Yuyuko - -let counter = 0;//后砸计数 count for back attacks -let timer;//后砸统计重置时间 reset time -let print = true;//二王HP提示开关 secondboss Health - -let SPAWNING_FIRST_CIRCLE_FLOWERS = []; -let SPAWNING_SECOND_CIRCLE_FLOWERS = []; - -const TIMER_DELAY = 600; -const ITEM_SPAWNED_ON_SWIPE_ID = 6;//576:trees 556:grass -const ITEM_SPAWNED_ON_SWIPE_SUB_DELAY = 2500; -const ITEM_SPAWNED_ON_SWIPE_DISTANCE = 150; - -const stepone = 2 * Math.PI / 40;//40 flowers in total if u think the flower is too many ,u can change the num to smaller. -const steptwo = 2 * Math.PI / 72;//72 flowers in total - -//内圈 -//inner flower circle - -for(let angle = -Math.PI; angle <= Math.PI; angle += stepone) { -if(!SPAWN_CIRCLES) continue; -SPAWNING_FIRST_CIRCLE_FLOWERS.push({ -"type": "spawn", -"id": 548, -"sub_delay": 6000, -"distance": 143, -"offset": angle -}); - -SPAWNING_SECOND_CIRCLE_FLOWERS.push({ -"type": "spawn", -"id": 548, -"sub_delay": 6000, -"distance": 157, -"offset": angle -}); -} -//外圈 -//outer flower circle - -for(let angle = -Math.PI; angle <= Math.PI; angle += steptwo) { -if(!SPAWN_CIRCLES) continue; -SPAWNING_FIRST_CIRCLE_FLOWERS.push({ -"type": "spawn", -"id": 548, -"sub_delay": 6000, -"distance": 293, -"offset": angle -}); - -SPAWNING_SECOND_CIRCLE_FLOWERS.push({ -"type": "spawn", -"id": 548, -"sub_delay": 6000, -"distance": 307, -"offset": angle -}); -} - - -//剑舞前戳+逆时针旋转+右手扇形攻击+外到内甜甜圈 -//heart thrust+anticlockwise spin+right swipe+AOEs from out to in - -SPAWNING_FIRST_CIRCLE_FLOWERS.push({"type": "text","class_position":"tank","sub_type": "message","message": "right→>out to in","message_TW": "右→ + 从外到内"}); -SPAWNING_FIRST_CIRCLE_FLOWERS.push({"type": "text","class_position":"dps","sub_type": "message","message": "left←>out to in","message_TW": "左← + 从外到内"}); -SPAWNING_FIRST_CIRCLE_FLOWERS.push({"type": "text","class_position":"heal","sub_type": "message","message": "left←>out to in","message_TW": "左← + 从外到内"}); -SPAWNING_FIRST_CIRCLE_FLOWERS.push({"type": "spawn","id": ITEM_SPAWNED_ON_SWIPE_ID,"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY,"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE,"offset": -1}); -SPAWNING_FIRST_CIRCLE_FLOWERS.push({"type": "spawn","id": ITEM_SPAWNED_ON_SWIPE_ID,"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY,"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE,"offset": -2.3}); - -//剑舞前戳+顺时针旋转+左手扇形攻击+内到外甜甜圈 -//heart thrust+clockwise spin+left swipe+AOEs from in to out - -SPAWNING_SECOND_CIRCLE_FLOWERS.push({"type": "text","class_position":"tank","sub_type": "message","message": "left←>in to out","message_TW": "左← + 从内到外"}); -SPAWNING_SECOND_CIRCLE_FLOWERS.push({"type": "text","class_position":"dps","sub_type": "message","message": "right→>in to out","message_TW": "右→ + 从内到外"}); -SPAWNING_SECOND_CIRCLE_FLOWERS.push({"type": "text","class_position":"heal","sub_type": "message","message": "right→>in to out","message_TW": "右→ + 从内到外"}); -SPAWNING_SECOND_CIRCLE_FLOWERS.push({"type": "spawn","id": ITEM_SPAWNED_ON_SWIPE_ID,"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY,"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE,"offset": 1}); -SPAWNING_SECOND_CIRCLE_FLOWERS.push({"type": "spawn","id": ITEM_SPAWNED_ON_SWIPE_ID,"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY,"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE,"offset": 2.3}); - -//一王击飞躲避提示延迟推送 -//Ghergof: Knock up mech, AKA 'Your flesh will be deleted' callout - -const EVENT_DELAY_FIRST_BOSS_HM = [ -{ -"type": "text", -"sub_type": "message", -"delay": TIMER_DELAY, -"message": "Dodge!", -"message_TW": "注意躲避" -}, -]; - - - -//二王血量显示 -//secondboss Health tips - -function start_boss() { -print = true; -} -function print_fifty(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "50%", -"message_TW": "50%" -}); -} -print = false; -} -function print_twenty(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "20%", -"message_TW": "20%" -}); -} -print = false; -} - -//三王后砸前置计数 -//thirdboss: counter of back attacks -function back_attack_HM(handlers) { -clearTimeout(timer); -counter++; -if(counter >= 2) { -handlers['text']({ -"sub_type": "message", -"message": "Back attack", -"message_TW": "后砸" -}); -} -timer = setTimeout(()=>{ -counter = 0; -}, 3000); -} - -//三王色鉴,针对色盲玩家的特别帮助 -//thirdboss: color marks in cage -/* ------------------------------------------- */ -let colour_to_use = null; -const COLOURS_OFFSETS = { -"red": 0, -"yellow": 2.5, -"blue": -2.5, -}; - -function set_clockwise(clockwise, handlers, _, third_boss_entity) { -setTimeout(()=> { -// Get the colour rotation -const colour_rotation = clockwise ? ["red", "yellow", "blue"] : ["blue", "yellow", "red"]; - -// Loop thru the three cage rotations -for(let i = 0; i < 3; i++) { -let current_colour = colour_rotation[(colour_rotation.indexOf(colour_to_use) + i) % 3]; - -handlers['spawn']({ -"sub_type": "item", -"id": 369, -"delay": i * 2600, -"sub_delay": (i + 1) * 3000, -"distance": 150, -"offset": COLOURS_OFFSETS[current_colour] -}, third_boss_entity); -handlers['spawn']({ -"sub_type": "build_object", -"id": 1, -"ownerName": "yuyuko", -"message": "safe", -"delay": i * 2600, -"sub_delay": (i + 1) * 3000, -"distance": 150, -"offset": COLOURS_OFFSETS[current_colour] -}, third_boss_entity); -} - -// clear out clockwise -setTimeout(()=> { -clockwise = null; -}, 12000); -}, 1000); -} - -function change_colour(colour) { -colour_to_use = colour; -} -/* ------------------------------------------- */ - - -module.exports = { - -//一王 不愤怒 -//firstboss, not enraged - -//后跳+内外圈,安全区域:站里面+站外面 -//Backstep+donuts, stay in, get out - -"s-3017-1000-1117-0": [{"type": "text","sub_type": "message","message": "stay in↑ + get out↓","message_TW": "站里面↑+站外面↓"}], - -//原地抬腿+内外圈,安全区域:站外面+站里面 -//Stomp+donuts, get out, stay in - -"s-3017-1000-1116-0": [{"type": "text","sub_type": "message","message": "get out↓ + stay in↑","message_TW": "站外面↓+站里面↑"}], - -//剑戳地2下+后方挥盾 -//ground thrust 2x+shield swing - -"s-3017-1000-1109-0": [{"type": "text","sub_type": "message","message": "back attack","message_TW": "后方攻击"}], - -//三圈顺序:全+外+内 站里面站外面 -//Massive In-Out Big AoE+Outer AoE+Inner AoE - -"s-3017-1000-1130-0": [{"type": "text","sub_type": "message","message": "full>outer>inner","message_TW": "伤害顺序:全>外>内"}], - - -//一王愤怒 -//firstboss, enraged - -//后跳+内外圈,安全区域:站里面+站外面 -//Backstep+donuts, stay in, get out - -"s-3017-1000-2117-0": [{"type": "text","sub_type": "message","message": "stay in↑ + get out↓","message_TW": "站里面↑+站外面↓"}], - -//原地抬腿+内外圈,安全区域:站外面+站里面 -//Stomp+donuts, get out, stay in - -"s-3017-1000-2116-0": [{"type": "text","sub_type": "message","message": "get out↓ + stay in↑","message_TW": "站外面↓+站里面↑"}], - -//剑戳地2下+后方挥盾 -//ground thrust 2x+shield swing - -"s-3017-1000-2109-0": [{"type": "text","sub_type": "message","message": "back attack","message_TW": "后方攻击"}], - -//愤怒时 三圈顺序:全+内+外 -//enraged Massive In-Out Big AoE+Inner AoE+Outer AoE - -"s-3017-1000-2130-0": [{"type": "text","sub_type": "message","message": "full>inner>outer","message_TW": "伤害顺序:全>内>外"}], - -//一王特殊技能 -//firstboss special attack - -//击飞攻击 -//knockup attack - -"s-3017-1000-1300-0": EVENT_DELAY_FIRST_BOSS_HM, - -//二王 不愤怒 -//secondboss, not enraged - -//点名转身划刀 -//target one player then turn aroud with swing - -"s-3017-2000-1108-0": [{"type": "text","sub_type": "message","message": "Target swing","message_TW": "点名划刀攻击"}], - -//点名转身划刀,左手边伤害 -//target one player then turn aroud with left swing - -"s-3017-2000-1113-0": [{"type": "text","sub_type": "message","message": "right hand swing","message_TW": "左手伤害"}], - -//点名转身划刀,右手边伤害 -//target one player then turn aroud with right swing - -"s-3017-2000-1114-0": [{"type": "text","sub_type": "message","message": "left hand swing","message_TW": "右手伤害"}], - -//转圈攻击(1106) -//Spin attack - -"s-3017-2000-1106-0": [{"type": "text","sub_type": "message","message": "Spin attack","message_TW": "转圈攻击"}], - -//后方攻击(1105) -//Back attack - -"s-3017-2000-1105-0": [{"type": "text","sub_type": "message","message": "Back attack","message_TW": "后方攻击"}], - -//点名大跳晕人 -//Random aggro stun - -"s-3017-2000-1104-0": [{"type": "text","sub_type": "message","message": "Random jump","message_TW": "点名大跳"}], - - -//眩晕攻击 -//Stun attack - -"s-3017-2000-1110-0": [{"type": "text","sub_type": "message","message": "Stun attack","message_TW": "眩晕攻击"}], - -//BOSS右手边划刀,安全区域:坦右,打左 -//right hand side swing, tank goes to right, dps goes to left - -"s-3017-2000-1112-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "left←","message_TW": "左←"}], - -//BOSS左手边划刀,安全区域:坦左,打右 -//left hand side swing, tank goes to left, dps goes to right - -"s-3017-2000-1111-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "right→","message_TW": "右→"}], - -//二王 愤怒 -//secondboss,enraged - -//转圈攻击(1106) -//Spin attack - -"s-3017-2000-2106-0": [{"type": "text","sub_type": "message","message": "Spin attack","message_TW": "转圈攻击"}], - -//愤怒后方攻击(2105) -//enraged back attack - -"s-3017-2000-2105-0": [{"type": "text","sub_type": "message","message": "back attack","message_TW": "后方攻击"}], - -//点名大跳晕人 -//Random aggro stun - -"s-3017-2000-2104-0": [{"type": "text","sub_type": "message","message": "Random jump","message_TW": "点名大跳"}], - -//BOSS右手边划刀,安全区域:坦右,打左 -//right hand side swing, tank goes to right, dps goes to left - -"s-3017-2000-2112-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "left←","message_TW": "左←"}], - -//BOSS左手边划刀,安全区域:坦左,打右 -//left hand side swing, tank goes to left, dps goes to right - -"s-3017-2000-2111-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "right→","message_TW": "右→"}], - -//眩晕攻击 -//Stun attack - -"s-3017-2000-2110-0": [{"type": "text","sub_type": "message","message": "Stun attack","message_TW": "眩晕攻击"}], - -//点名转身划刀 -//target one player then turn aroud with swing - -"s-3017-2000-2108-0": [{"type": "text","sub_type": "message","message": "Target swing","message_TW": "点名划刀攻击"}], - -//点名转身划刀,左手边伤害 -//target one player then turn aroud with left swing - -"s-3017-2000-2113-0": [{"type": "text","sub_type": "message","message": "right hand swing","message_TW": "左手伤害"}], - -//点名转身划刀,右手边伤害 -//target one player then turn aroud with right swing - -"s-3017-2000-2114-0": [{"type": "text","sub_type": "message","message": "left hand swing","message_TW": "右手伤害"}], - - -//二王特殊技能 -//secondboss, special attacks - -//红色鉴定,安全区域:15M外 -//Red, stay 15m away - -"s-3017-2000-3119-0": [{"type": "text","sub_type": "message","message": "red: get out↓","message_TW": "红色:外↓"}], - -//蓝色鉴定,安全区域:15M内(3220) -//Blue, stay near within 15m - -"s-3017-2000-3220-0": [{"type": "text","sub_type": "message","message": "blue: stay in↑","message_TW": "蓝色:内↑"}], - -//眩晕圈(3116)+外圈伤害(3118) -//stun+donut - -"s-3017-2000-3116-0": [{"type": "text","sub_type": "message","message": "dodge + stay in↑","message_TW": "躲避+内↑"}], - -//点名喷长条毒(3107) -//random aggro poison(3107) - - -//二王HP血量检测 -//secondboss Health tips - -//BOSS血量低于50%后,左右划刀变成双面 -//50% - -"h-3017-2000-99": [{"type": "func","func": start_boss}], -"h-3017-2000-50": [{"type": "func","func": print_fifty}], - -//BOSS血量20%后,会有概率出现连续鉴定 -//20% - -"h-3017-2000-21": [{"type": "func","func": start_boss}], -"h-3017-2000-20": [ {"type": "func","func": print_twenty}], - -//三王 不愤怒 -//thirdboss, unenraged - -//进场的推人红圈 -//pushback when engaging - -"s-3017-3000-1315-0": [{"type": "text","sub_type": "message","message": "Pushback","message_TW": "开场推人"}], - -//点名大跳晕人(1107) -//random aggro stun - -"s-3017-3000-1107-0": [{"type": "text","sub_type": "message","message": "Random jump","message_TW": "点名大跳"}], - -//点名出剑刃风暴(1204) -//random target energy beam -"s-3017-3000-1204-0": [{"type": "text","sub_type": "message","message": "energy beam","message": "点名剑气"}], - -//剑舞前戳+逆时针旋转+右手扇形攻击+外到内甜甜圈 注:坦右边安全,打左边安全请自行更改 -//heart thrust+anticlockwise spin+right swipe+AOEs from out to in - -"s-3017-3000-1109-0": SPAWNING_FIRST_CIRCLE_FLOWERS, - -//剑舞前戳+顺时针旋转+左手扇形攻击+内到外甜甜圈 注:坦左边安全,打右边安全请自行更改 -//heart thrust+clockwise spin+left swipe+AOEs from in to out - -"s-3017-3000-1111-0": SPAWNING_SECOND_CIRCLE_FLOWERS, - -//前后砸 -//front, back slam - -"s-3017-3000-1113-0": [{"type": "text","sub_type": "message","message": "front, back slam","message_TW": "前后砸"}], - -//旋转攻击 -//spinning attack - -"s-3017-3000-1115-0": [{"type": "text","sub_type": "message","message": "spinning attack","message_TW": "旋转攻击"}], - -//2连斜上挥(1104)后接的后砸(1119) -//golf swing x2 + back slam - -"s-3017-3000-1104-0": [{"type": "func","func": back_attack_HM}], - -//后闪+旋转or前后砸 -//teleport back+ spin or front, back slam - -"s-3017-3000-1202-0": [{"type": "text","sub_type": "message","message": "spin or front,back slam","message_TW": "旋转or前后砸"}], - -//蓝球+镭射 -//target energy beam(almost tank ?_?) - -"s-3017-3000-1120-0": [{"type": "text","sub_type": "message","message": "energy beam","message_TW": "剑气攻击"}], - -//三王 愤怒 -//thirdboss, enraged - -//点名出剑刃风暴,手里握篮球挥篮球(1204),剑刃风暴(1121) -//random aggro, holding blue orb, energy beam - -"s-3017-3000-2204-0": [{"type": "text","sub_type": "message","message": "enraged:energy beam","message_TW": "愤怒:点名剑气"}], - -//剑舞前戳+逆时针旋转+右手扇形攻击+外到内甜甜圈 注:坦右边安全,打左边安全请自行更改 -//heart thrust+anticlockwise spin+right swipe+AOEs from out to in - -"s-3017-3000-2109-0": SPAWNING_FIRST_CIRCLE_FLOWERS, - -//剑舞前戳+顺时针旋转+左手扇形攻击+内到外甜甜圈 注:坦左边安全,打右边安全请自行更改 -//heart thrust+clockwise spin+left swipe+AOEs from in to out - -"s-3017-3000-2111-0": SPAWNING_SECOND_CIRCLE_FLOWERS, - -//前后砸 -//front, back slam - -"s-3017-3000-2113-0": [{"type": "text","sub_type": "message","message": "front, back slam","message_TW": "前后砸"}], - -//2连斜上挥(1104)后接的后砸(1119) -//golf swing x2 + back slam - -"s-3017-3000-2104-0": [{"type": "func","func": back_attack_HM}], - -//旋转攻击 -//spinning attack - -"s-3017-3000-2115-0": [{"type": "text","sub_type": "message","message": "spinning attack","message_TW": "旋转攻击"}], - -//点名大跳晕人(1107) -//random aggro stun - -"s-3017-3000-2107-0": [{"type": "text","sub_type": "message","message": "Random jump","message_TW": "点名大跳"}], - -//后闪+旋转or前后砸 -//teleport back+ spin or front, back slam - -"s-3017-3000-2202-0": [{"type": "text","sub_type": "message","message": "spin or front,back slam","message_TW": "旋转or前后砸"}], - -//蓝球+镭射 -//target energy beam(almost tank ?_?) - -"s-3017-3000-2120-0": [{"type": "text","sub_type": "message","message": "energy beam","message_TW": "剑气攻击"}], - -//三王特殊技能 -//thirdboss, special attacks - -//召唤分身出点名剑气 -//clones, random aggro, energy beam - -"s-3017-3000-1400-0": [{"type": "text","sub_type": "message","message": "beam","message_TW": "召咄分身:点名剑气"}], - -//召唤分身出旋转攻击 -//clones, random aggro, spin attack - -"s-3017-3000-1401-0": [{"type": "text","sub_type": "message","message": "spin","message_TW": "召咄分身:旋转攻击"}], - -//三王色鉴颜色位置标识 -//color marks in cage -/* -------------------------------- */ -// 红色 red -"ae-0-0-9203037": [{"type": "text","sub_type": "message","message": "Red","message_TW": "红色"}, -{"type": "func","func": change_colour.bind(null, 'red')}], - -// 黄色 yellow -"ae-0-0-9203038": [{"type": "text","sub_type": "message","message": "Yellow","message_TW": "黄色"}, -{"type": "func","func": change_colour.bind(null, 'yellow')}], - - -// 蓝色 blue -"ae-0-0-9203039": [{"type": "text","sub_type": "message","message": "Blue","message_TW": "蓝色"}, -{"type": "func","func": change_colour.bind(null, 'blue')}], - -// 逆时针色鉴 -// anti-clockwise - -"s-3017-3000-1317-0": [{"type": "func","func": set_clockwise.bind(null, false)}], - -// 顺时针色鉴 -// clockwise - -"s-3017-3000-1318-0": [{"type": "func","func": set_clockwise.bind(null, true)}] - - /* -------------------------------- */ -}; diff --git a/guides/3018.js b/guides/3018.js deleted file mode 100644 index b2e60d17..00000000 --- a/guides/3018.js +++ /dev/null @@ -1,205 +0,0 @@ -//DRC -//made by michengs - -let notice_guide = true; -let player, entity, library, effect; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message": "获取更多信息 proxy频道输入:補助 help" -}); - -handlers['text']({ -"sub_type": "notification", -"delay": 2000, -"message": "获取更多信息 proxy频道输入:補助 help" -}); -} -notice_guide = false; - -} -const SPAWN_CIRCLES = true; -const steptwo = 2 * Math.PI / 30;//20 flowers in total -//内圈 -let SPAWNING_FIRST_CIRCLE_FLOWERS = []; -let SPAWNING_SECOND_CIRCLE_FLOWERS = []; -let SPAWNING_THIRD_CIRCLE_FLOWERS = []; -//外圈 - -for(let angle = -Math.PI; angle <= Math.PI; angle += steptwo) { - if(!SPAWN_CIRCLES) continue; - SPAWNING_FIRST_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": 680, - "offset": angle - }); - - SPAWNING_THIRD_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 6000, - "distance": 225, - "offset": angle - }); - -} - - -let SPAWNING_right_FLOWERS = []; //303 -let SPAWNING_left_FLOWERS = []; //306 -for (let distance = 50; distance <= 250; distance += 50) { - SPAWNING_right_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": 1.57 - }, -{ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": -1.57 - }, - -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": -1.39 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": -1.39 - - } , - -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": 1.745 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": 1.745 - - }); - - SPAWNING_left_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": 1.57 - }, -{ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": -1.57 - }, -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": 1.39 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": 1.39 - } , -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": -1.745 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": -1.745 - }); -} - - - -module.exports = { - - //"h-3018-1000-100": [{"type": "text","sub_type": "message", "message": "地毯眩晕" }].concat(SPAWNING_left_FLOWERS), -// "h-3018-1000-100": [{"type": "func","func": guid_voice}], - - - - "s-3018-1000-108-0": [{"type": "text","sub_type": "message","message": "back stun","message_TW": "后跳眩晕" }], - "s-3018-1000-109-0": [{"type": "text","sub_type": "message","message": "Knockback","message_TW": "后扫击退" }], - "s-3018-1000-119-0": [{"type": "text","sub_type": "message","message": "energy","message_TW": "蓄力捶地" }], - "s-3018-1000-127-0": [{"type": "text","sub_type": "message","message": "thunder","message_TW": "雷电!!" }], - "dm-0-0-9783103": [{"type": "text","sub_type": "message","message": "100","message_TW": "100能量鉴定!!" }], - "dm-0-0-93018103": [{"type": "text","sub_type": "message","message": "100","message_TW": "100能量鉴定!!" }], - //二王 - "s-3018-2000-110-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_TW": "前砸闪避" }], - "s-3018-2000-111-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "right back","message_TW": "右后踢击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "right back","message_TW": "右后踢击退" }], - "s-3018-2000-115-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "left back","message_TW": "左后踢击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "left back","message_TW": "左后踢击退" }], - "s-3018-2000-119-0": [{"type": "text","sub_type": "message","message": "jump stun","message_TW": "跳跃眩晕" }], - "s-3018-2000-120-0": [{"type": "text","sub_type": "message","message": "front + back","message_TW": "前拳+后踢击退" }], - "s-3018-2000-316-0": [{"type": "text","sub_type": "message","message": "Flame Blast","message_TW": "火焰爆炸" }], - "s-3018-2000-317-0": [{"type": "text","sub_type": "message","message": "water wave","message_TW": "水波击飞" }], - "s-3018-2000-318-0": [{"type": "text","sub_type": "message","message": "stun","message_TW": "地毯眩晕" }].concat(SPAWNING_FIRST_CIRCLE_FLOWERS), - - - - //三王 - "s-3018-3000-106-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_TW": "前推击退" }], - "s-3018-3000-109-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "stun","message_TW": "前插眩晕" }], - "s-3018-3000-112-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "Knockback","message_TW": "后扫击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "Knockback","message_TW": "后扫击退" }], - "s-3018-3000-301-0": [{"type": "text","sub_type": "message","message": "diaup","message_TW": "地刺击飞" }], - - "s-3018-3000-303-0": [{"type": "text","sub_type": "message","message": "right","message_TW": "右" }].concat(SPAWNING_right_FLOWERS), - "s-3018-3000-306-0": [{"type": "text","sub_type": "message","message": "left","message_TW": "左" }].concat(SPAWNING_left_FLOWERS), - "s-3018-3000-309-0": [{"type": "text","sub_type": "message","message": "Debuffs","message_TW": "注视!!" }], - "s-3018-3000-315-0": [{"type": "text","sub_type": "message","message": "suck blood","message_TW": "恐惧吸血" }] - - - -}; \ No newline at end of file diff --git a/guides/3019.js b/guides/3019.js deleted file mode 100644 index c1a512a6..00000000 --- a/guides/3019.js +++ /dev/null @@ -1,312 +0,0 @@ -// -//made by michengs -let notice_guide = true; -let player, entity, library, effect; - -let power = true; -let Level = 0; -let powerMsg = null; -let notice = true ; -let steptwo = false ; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); - -handlers['text']({ -"sub_type": "notification", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); -} -notice_guide = false; - -} - - - - - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } - -// 召喚光柱 ,告示牌提示( 角度 距离 时间) -function SpawnThing( degrees, radius, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "SAFE SPOT", - "message": "SAFE" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} - //构建直线(提示标志 角度 最远距离 时间) -function Spawnitem1(item,degrees, maxRadius, times, handlers, event, entity) { - let angle = degrees * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, entity); - } -} - - - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - -function start_boss() { -power = false; -Level = 0; -notice = true; -powerMsg = null; -steptwo = false ; -} - - function skilld_event(skillid, handlers, event, ent, dispatch) { - if (!notice) return; - if (notice && [118, 139, 141, 150, 152].includes(skillid)) { - notice = false; - setTimeout(() => notice = true, 4000); - } - if (skillid === 300) power = true, Level = 0, powerMsg = null; - if (skillid === 360 || skillid === 399) Level = 0; - if (power && [118, 143, 145, 146, 144, 147, 148, 154, 155, 161, 162, 213, 215].includes(skillid)) { - Level++; - //powerMsg = '(' + Level + ') '; - powerMsg = `{` + Level + `} `; - - -if (Level== 4) { -handlers['text']({ -"sub_type": "message", -"message_TW": "电量填充完毕!!", -"message": "fully charged!!" - -}); -handlers['text']({ -"sub_type": "notification", -"message_TW": "电量填充完毕!!", -"message": "fully charged!!" -}); -} else if (Level== 2 && steptwo) { -handlers['text']({ -"sub_type": "message", -"message_TW": "电量填充完毕!!", -"message": "fully charged!!" -}); -handlers['text']({ -"sub_type": "notification", -"message_TW": "电量填充完毕!!", -"message": "fully charged!!" -}); -} - -if ( powerMsg !== null && skillid !== 399){ - -if ( !steptwo && Level !== 4){ -handlers['text']({ -"sub_type": "message", -"message_TW": powerMsg, -"message": powerMsg -}); -} -if ( steptwo && Level !== 2){ -handlers['text']({ -"sub_type": "message", -"message_TW": powerMsg, -"message": powerMsg -}); -} -} - - - } - - -if ( skillid === 399){ -steptwo = true ; -} -} - - - -module.exports = { - - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - - }, - -// "h-3019-1000-100": [{"type": "func","func": guid_voice}], - - - //一王 - - - "s-3019-1000-106-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "Heavy","message_TW": "重击" }], - "s-3019-1000-107-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "Pushback","message_TW": "后喷击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "Pushback","message_TW": "后喷击退" }], - "s-3019-1000-108-0": [{"type": "text","class_position":"dps","sub_type": "message","message_TW": "点名击飞" }, - {"type": "text","class_position":"heal","sub_type": "message","message_TW": "点名击飞" }], - "s-3019-1000-109-0": [{"type": "text","sub_type": "message","message": "Rocks (Small)","message_TW": "滚石" }], - "s-3019-1000-110-0": [{"type": "text","sub_type": "message","message": "Rocks (Large)","message_TW": "滚石" }], - "s-3019-1000-301-0": [{"type": "text","sub_type": "message","message": "Flower stuns","message_TW": "食人花眩晕" }], - "s-3019-1000-307-0": [{"type": "text","class_position":"dps","sub_type": "message","message_TW": "笼子禁锢" }, - {"type": "text","class_position":"heal","sub_type": "message","message_TW": "笼子禁锢" }], - "s-3019-1000-309-0": [{"type": "text","sub_type": "message","message": "1 flower","message_TW": "1朵花-鉴定!!" }], - "s-3019-1000-310-0": [{"type": "text","sub_type": "message","message": "2 flower","message_TW": "2朵花-鉴定!!" }], - "s-3019-1000-116-0": [{"type": "text","sub_type": "message","message": "Big AoE attack!!","message_TW": "全屏攻击!!" }], - "s-3019-1000-312-0": [{"type": "text","sub_type": "message","message": "Golden flower!!","message_TW": "金色花!!" }], - - - //二王 - - "s-3019-2000-105-0": [{"type": "text","sub_type": "message","message": "Spin","message_TW": "翻滚" }], - "s-3019-2000-113-0": [{"type": "text","sub_type": "message","message": "Stun inc","message_TW": "双手眩晕" }], - "s-3019-2000-114-0": [{"type": "text","sub_type": "message","message": "Get IN","message_TW": "三连地板靠近" }, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,260,0,3000)}], - "s-3019-2000-116-0": [{"type": "text","sub_type": "message","message": "Front then Back","message_TW": "前砸 后砸" }, - {"type": "func","func": Spawnitem1.bind(null,912,90,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,270,500,5000)}], - "s-3019-2000-301-0": [{"type": "text","sub_type": "message","message": "↓ Get OUT + dodge","message_TW": "捶地远离 旋转击退"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,260,0,3000)} - ], - "s-3019-2000-302-0": [{"type": "text","sub_type": "message","message": "↑ Get IN + dodge","message_TW": "旋转靠近 捶地击飞" }, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,260,0,3000)} - ], - -//三王 - "h-3019-3000-99": [{"type": "func","func": start_boss}], - - "s-3019-3000-118-0": [{"type": "text","sub_type": "message","message": "Front triple","message_TW": "三连击左-右-喷" }, - {"type": "func","func": skilld_event.bind(null, 118)} - ], - "s-3019-3000-143-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←←","message_TW": "左后" }, - {"type": "func","func": skilld_event.bind(null, 143)} - ], - "s-3019-3000-145-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←←","message_TW": "左后" }, - {"type": "func","func": skilld_event.bind(null, 145)} - ], - "s-3019-3000-146-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←← (pulses)","message_TW": "左后扩散" }, - {"type": "func","func": SpawnThing.bind(null,215,370,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,6,800,2500,8000)}, - {"type": "func","func": skilld_event.bind(null, 146)} ], - "s-3019-3000-154-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←← (pulses)","message_TW": "左后扩散" }, - {"type": "func","func": SpawnThing.bind(null,215,370,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,6,800,2500,8000)}, - {"type": "func","func": skilld_event.bind(null, 154)} - ], - - - "s-3019-3000-144-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→","message_TW": "右后" }, - {"type": "func","func": skilld_event.bind(null, 144)}], - - - "s-3019-3000-147-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→","message_TW": "右后" }, - {"type": "func","func": skilld_event.bind(null,147 )} ], - - "s-3019-3000-148-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→ (pulses)","message_TW": "右后扩散" }, - {"type": "func","func": SpawnThing.bind(null,155,388,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,6,800,2500,8000)}, - {"type": "func","func": skilld_event.bind(null, 148)} ], - - "s-3019-3000-155-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→ (pulses)","message_TW": "右后扩散" }, - {"type": "func","func": SpawnThing.bind(null,155,388,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,6,800,2500,8000)}, - {"type": "func","func": skilld_event.bind(null, 155)} ], - - "s-3019-3000-161-0": [{"type": "text","sub_type": "message","message": "Back then Front","message_TW": "后砸 前砸" }, - {"type": "func","func": skilld_event.bind(null, 161)} - ], - "s-3019-3000-162-0": [{"type": "text","sub_type": "message","message": "Back then Front","message_TW": "后砸 前砸" }, - {"type": "func","func": skilld_event.bind(null, 162)} - ], - "s-3019-3000-213-0": [{"type": "text","sub_type": "message","message": "Tail","message_TW": "尾巴" }, - {"type": "func","func": skilld_event.bind(null, 213)} - ], - "s-3019-3000-215-0": [{"type": "text","sub_type": "message","message": "Tail!!","message_TW": "尾巴!!" }, - {"type": "func","func": skilld_event.bind(null, 215)} - ], - "s-3019-3000-139-0": [{"type": "text","sub_type": "message","message": "Left safe","message_TW": "打右边" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,270,200,8000)}, - {"type": "func","func": skilld_event.bind(null, 139)} ], - "s-3019-3000-150-0": [{"type": "text","sub_type": "message","message": "Left safe","message_TW": "打右边" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,270,200,8000)}, - {"type": "func","func": skilld_event.bind(null, 150)} ], - "s-3019-3000-141-0": [{"type": "text","sub_type": "message","message": "Right safe","message_TW": "打左边" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,90,200,8000)}, - {"type": "func","func": skilld_event.bind(null, 141)} ], - "s-3019-3000-152-0": [{"type": "text","sub_type": "message","message": "Right safe","message_TW": "打左边" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,90,200,8000)}, - {"type": "func","func": skilld_event.bind(null, 152)} ], - "s-3019-3000-300-0": [{"type": "text","sub_type": "message","message": "Dodge!! (Awakening 1","message_TW": "一次觉醒 推人" }, - {"type": "func","func": skilld_event.bind(null, 300)} ], - "s-3019-3000-399-0": [{"type": "text","sub_type": "message","message": "Dodge!! (Awakening 2)","message_TW": "二次觉醒 推人" }, - {"type": "func","func": skilld_event.bind(null, 399)} - - ], - "s-3019-3000-360-0": [{"type": "text","sub_type": "message","message": "Explosion!!","message_TW": "爆炸爆炸" }, - {"type": "func","func": skilld_event.bind(null, 360)} ] - -}; \ No newline at end of file diff --git a/guides/3020.js b/guides/3020.js deleted file mode 100644 index 72f35813..00000000 --- a/guides/3020.js +++ /dev/null @@ -1,296 +0,0 @@ -//Sailing Instance -//made by michengs - -let player, entity, library, effect; -let green = false; -let purple = false; -let boss_thirty = false; -let print = false; -function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; -} -// 召喚光柱 ,告示牌提示( 角度 距离 延迟时间 时间) -function SpawnThing( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - /*handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "SAFE SPOT", - "message": "SAFE" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); */ -} - - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - -function Spawnitem3(item,degree,distance, intervalDegrees, radius, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": (boss_thirty ? 7000:5000), - "sub_delay": (boss_thirty ? 9000:7000), - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - - - //构建直线(提示标志 偏移角度 偏移距离 角度 最远距离 时间) -function Spawnitem1(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -function skilld_event(skillid, handlers, event, ent, dispatch) { - - if (skillid == 121) green = true; - if (skillid == 122) purple = true; - -if (skillid == 120){ - if (purple && !boss_thirty){ - handlers['text']({"sub_type": "msgcp","message": "back","message_RU": "К нему-От него-К нему"}); - setTimeout(() => purple = false, 2000); - } else if(purple && boss_thirty){ - handlers['text']({"sub_type": "msgcp","message": "back","message_RU": "К нему-От него"}); - handlers['text']({"sub_type": "msgcp","delay": 6000,"message": "back","message_RU": "К нему"}); - setTimeout(() => purple = false, 2000); - - } -} -if (skillid == 123){ - if (green && !boss_thirty){ - handlers['text']({"sub_type": "msgcp","message": "back","message_RU": "От него-К нему-От него"}); - setTimeout(() => green = false, 2000); - } else if(purple && !boss_thirty){ - handlers['text']({"sub_type": "msgcp","message": "back","message_RU": "К нему-От него-От него"}); - setTimeout(() => purple = false, 2000); - } else if(green && boss_thirty){ - handlers['text']({"sub_type": "msgcp","message": "back","message_RU": "От него-От него"}); - handlers['text']({"sub_type": "msgcp","delay":6000,"message": "back","message_RU": "От него"}); - setTimeout(() => purple = false, 2000); - } else if(purple && boss_thirty){ - handlers['text']({"sub_type": "msgcp","message": "back","message_RU": "К нему-От него"}); - handlers['text']({"sub_type": "msgcp","delay": 6000,"message": "back","message_RU": "От него"}); - setTimeout(() => purple = false, 2000); - } - } -} - function start_boss() { -if (print) return - boss_thirty = true; - print = true ; -} - -let debuff_tracker_started = false; -let debuffs_targe = { - 30209101: {name: "Молния (эвейд)",}, - 30209102: {name: "Ведьма (эвейд)"}, -}; -let debuff_call_event = null; -function start_Sailing_Instance(handlers, event, entity, dispatch) { - const abnormality_change = (added, event) => { - if ((player.isMe(event.target) || player.playersInParty.includes(event.target.toString())) && debuffs_targe[event.id]) { - if (added) { - if (debuff_call_event) { - clearTimeout(debuff_call_event); - } - debuff_call_event = setTimeout(() => { - handlers['text']({ - "sub_type": "message", - "message": debuffs_targe[event.id].name - }); - debuff_call_event = null; - }, 2000); - } else { - - } - } - }; - - if (!debuff_tracker_started) { - dispatch.hook('S_ABNORMALITY_BEGIN', 4, abnormality_change.bind(null, true)); - dispatch.hook('S_ABNORMALITY_END', 1, abnormality_change.bind(null, false)); - debuff_tracker_started = true; - } -} - -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - - - -"s-3020-1900-104-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Высасывание(Выйти)"}, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,15,300,200,3000)}], - -"s-3020-1200-103-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Высасывание(Выйти)"}], - /*{"type": "func","func": Spawnitem2.bind(null,445,0,0,15,200,200,3000)}*/ - - - - -"s-3020-2200-108-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Стан"}, - {"type": "func","func": Spawnitem2.bind(null,445,0,170,20,120,200,2000)}], - - - - - - -//121 123 前砸 旋转 大前砸 绿绿 -//122 120 旋转 前砸 旋转 紫紫 前方走 -//122 123 旋转 前砸 大前砸 紫绿 第二下前方移動 - - - // 三连击 结束技能 - -"ae-0-0-4030": [ {"type": "func","func": start_Sailing_Instance}], -"ae-0-0-4020": [ {"type": "func","func": start_Sailing_Instance}], -"h-3020-2200-30": [ {"type": "func","func": start_boss}], -"h-3020-2200-29": [ {"type": "func","func": start_boss}], -"h-3020-2200-28": [ {"type": "func","func": start_boss}], -"h-3020-2200-27": [ {"type": "func","func": start_boss}], -"h-3020-2200-26": [ {"type": "func","func": start_boss}], -"h-3020-2200-25": [ {"type": "func","func": start_boss}], -"h-3020-2200-24": [ {"type": "func","func": start_boss}], -"h-3020-2200-23": [ {"type": "func","func": start_boss}], -"h-3020-2200-22": [ {"type": "func","func": start_boss}], -"h-3020-2200-21": [ {"type": "func","func": start_boss}], -"h-3020-2200-20": [ {"type": "func","func": start_boss}], -"h-3020-2200-19": [ {"type": "func","func": start_boss}], -"h-3020-2200-18": [ {"type": "func","func": start_boss}], -"h-3020-2200-17": [ {"type": "func","func": start_boss}], -"h-3020-2200-16": [ {"type": "func","func": start_boss}], -"h-3020-2200-15": [ {"type": "func","func": start_boss}], -"h-3020-2200-14": [ {"type": "func","func": start_boss}], -"h-3020-2200-13": [ {"type": "func","func": start_boss}], -"h-3020-2200-12": [ {"type": "func","func": start_boss}], -"h-3020-2200-11": [ {"type": "func","func": start_boss}], -"h-3020-2200-10": [ {"type": "func","func": start_boss}], -"h-3020-2200-9": [ {"type": "func","func": start_boss}], -"h-3020-2200-8": [ {"type": "func","func": start_boss}], -"h-3020-2200-7": [ {"type": "func","func": start_boss}], -"h-3020-2200-6": [ {"type": "func","func": start_boss}], -"h-3020-2200-5": [ {"type": "func","func": start_boss}], -"h-3020-2200-4": [ {"type": "func","func": start_boss}], -"h-3020-2200-3": [ {"type": "func","func": start_boss}], -"h-3020-2200-2": [ {"type": "func","func": start_boss}], -"h-3020-2200-1": [ {"type": "func","func": start_boss}], - -"s-3020-2200-120-0": [{"type": "func","func": skilld_event.bind(null, 120)}, - {"type": "func","func": Spawnitem3.bind(null,445,0,150,8,280)}], - - - -"s-3020-2200-121-0": [{"type": "func","func": skilld_event.bind(null, 121)}, - {"type": "func","func": Spawnitem2.bind(null,445,0,170,8,290,200,3000)}, //绿色 - {"type": "func","func": Spawnitem2.bind(null,445,0,170,8,280,3000,5000)}, //绿色 - {"type": "func","func": Spawnitem2.bind(null,445,0,170,4,570,3000,5000)}],// - - - - -"s-3020-2200-122-0": [{"type": "func","func": skilld_event.bind(null, 122)}, //紫色 - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,280,200,3000)}, //紫色 - {"type": "func","func": Spawnitem2.bind(null,445,0,0,4,570,200,3000)}, - {"type": "func","func": Spawnitem2.bind(null,445,0,170,8,290,3000,5000)}], - - -"s-3020-2200-123-0": [{"type": "func","func": skilld_event.bind(null, 123)}, - {"type": "func","func": Spawnitem3.bind(null,445,0,200,8,450)}], - -//"s-3020-9101-122-0": [{"type": "text","sub_type": "message","message": "Jump","message_TW": "强袭"}], - - -//"s-3020-9101-124-0": [{"type": "text","sub_type": "message","message": "Jump","message_TW": "前砸"}], -//"s-3020-9101-125-0": [{"type": "text","sub_type": "message","message": "Jump","message_TW": "转圈"}], -//"s-3020-9101-126-0": [{"type": "text","sub_type": "message","message": "Jump","message_TW": "大前砸"}], - - - -// "s-3020-2201-121-0": [{"type": "text","sub_type": "message","message": 'Left swipe',"message_TW": "2201-121" },{"type": "func","func": SpawnThing.bind(null,0,0,100,2000)}], -//"s-3020-2201-125-0": [{"type": "text","sub_type": "message","message": 'Left swipe',"message_TW": "2201-125" },{"type": "func","func": SpawnThing.bind(null,0,0,100,2000)}], -// "s-3020-2201-126-0": [{"type": "text","sub_type": "message","message": 'Left swipe',"message_TW": "2201-126" },{"type": "func","func": SpawnThing.bind(null,0,0,100,2000)}], - "s-3020-2201-201-0": [{"type": "func","func": SpawnThing.bind(null,0,0,100,2000)}], - - -// "s-3020-6103-203-0": [{"type": "text","sub_type": "message","message": 'Left swipe',"message_TW": "6103-203" },{"type": "func","func": SpawnThing.bind(null,0,0,100,2000)}], -// "s-3020-6103-202-0": [{"type": "text","sub_type": "message","message": 'Left swipe',"message_TW": "6103-202" },{"type": "func","func": SpawnThing.bind(null,0,0,100,2000)}], -// "s-3020-6103-201-0": [{"type": "text","sub_type": "message","message": 'Left swipe',"message_TW": "6103-201" },{"type": "func","func": SpawnThing.bind(null,0,0,100,2000)}], - "s-3020-2200-127-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Прыжок | К"}, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,15,200,250,1000)}, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,10,300,1000,4000)} - - ], - - -"s-3020-2200-128-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Черкаш + подлет"}], -"s-3020-2200-129-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Полоса в цель"}, - {"type": "func","func": Spawnitem1.bind(null,445,90,100,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,445,270,100,0,500,6000)}], -"s-3020-2200-131-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Прыжок | От"}], - -"s-3020-2200-133-1": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Бублики"}, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,10,300,200,4000)}], - -"s-3020-2200-135-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Волны х5"}], - -"s-3020-2200-137-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Волна от"}], - -"s-3020-2200-139-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Волна к"}], - -"s-3020-2200-202-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Защита 3сек"}], -"s-3020-2200-203-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Защита 10сек"}], -"s-3020-2200-204-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Видоизменение"}] -}; \ No newline at end of file diff --git a/guides/3023.js b/guides/3023.js index db94000a..c493cc2f 100644 --- a/guides/3023.js +++ b/guides/3023.js @@ -1,247 +1,122 @@ -//made by michengs -let lastboss = false; -let player, entity, library, effect; -let print = true; -let debuff = 0 ; -let timer1; -let timer2; -let timer3; -let timer4; -let timer5; -let counter = 0; - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 时间) -function Spawnitem2(item,degrees,distance, intervalDegrees, radius, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - //构建特殊圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitemsp2(d1,d2,item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI/ d1; angle <= Math.PI/ d2; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - //构建直线(提示标志 偏移角度 偏移距离 角度 最远距离 时间) -function Spawnitem1(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -function skilld_event(skillid, handlers, event, ent, dispatch) { -if (skillid === 99020020) { //死亡解除debuff -debuff = 0 -clearTimeout(timer2); -clearTimeout(timer1); -} -if (skillid === 185) { //死亡解除debuff -clearTimeout(timer5); -timer5 = setTimeout(()=>{ -handlers['text']({ -"sub_type": "message", -"message_RU": "!!!", -"message": "Big jump coming soon!" -}); - }, 110000); -} -if (skillid === 3119 && debuff === 1 ) { //紅色气息判断 -handlers['text']({ -"sub_type": "message", -"message": "OUT", -"message_RU": "От" -}); -} else if (skillid === 3119 && debuff === 2 ) { //紅色气息判断 -handlers['text']({ -"sub_type": "message", -"message": "IN", -"message_RU": "К" -}); -} else if (skillid === 3220 && debuff === 1 ) { //蓝色气息判断 -handlers['text']({ -"sub_type": "message", -"message": "IN", -"message_RU": "К" -}); -} else if (skillid === 3220 && debuff === 2 ) { //蓝色气息判断 -handlers['text']({ -"sub_type": "message", -"message": "OUT", -"message_RU": "От" -}); -} -if ([30231000, 1000].includes(skillid)) { //debuff为红色 -debuff = 1 -clearTimeout(timer1); -clearTimeout(timer2); -timer1 = setTimeout(()=>{ -handlers['text']({ -"sub_type": "message", -"message_RU": "!", -}); - debuff = 0 - }, 70000); -} -if ([30231001, 1001].includes(skillid)) { //debuff为蓝色 -debuff = 2 -clearTimeout(timer2); -clearTimeout(timer1); -timer2 = setTimeout(()=>{ -handlers['text']({ -"sub_type": "message", -"message_RU": "!", -}); - debuff = 0 - }, 70000); - } - if ([1113, 1114].includes(skillid)) { //4连挥刀预判 -clearTimeout(timer3); -counter++; -if(counter >= 4) { -clearTimeout(timer4); -timer4 = setTimeout(()=>{ -handlers['text']({ -"sub_type": "message", -//"message_RU": "4 полосы!!!", -"message": "4 полосы!!!" -}); - }, 70000); -} -timer3 = setTimeout(()=>{ -counter = 0; - }, 20000); - } -} -function start_boss() { -let print = true; -debuff = 0; -} -function start_1boss80(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "80%", -"message_RU": "4 полосы!!!" -}); -} -print = false; -setTimeout(() => print = true, 10000); -} -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - // First boss - "h-3023-1000-99": [{"type": "func","func": start_boss}], - "h-3023-1000-80": [{"type": "func","func": start_1boss80}], - "s-3023-1000-104-0": [{"type": "text","sub_type": "message","message": 'jump',"message_RU": "Прыжок + Стан" }], - "s-3023-1000-105-0": [{"type": "text","sub_type": "message","message": 'back',"message_RU": "Удар назад" }], - "s-3023-1000-110-0": [{"type": "text","sub_type": "message","message": 'stun',"message_RU": "Передний стан" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,175,10,225,6000)}], - "s-3023-1000-111-0": [{"type": "text","sub_type": "message","message": '↓ left pull',"message_RU": "| Левая полоса" }, - {"type": "func","func": Spawnitem1.bind(null,445,270,200,180,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,270,200,0,300,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,0,180,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,0,0,300,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,300,270,200,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,180,500,270,200,2000)}], - "s-3023-1000-112-0": [{"type": "text","sub_type": "message","message": 'right pull ↓',"message_RU": "Правая полоса |" }, - {"type": "func","func": Spawnitem1.bind(null,445,90,200,180,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,90,200,0,300,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,0,180,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,0,0,300,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,300,90,200,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,180,500,90,200,2000)}], - "s-3023-1000-113-0": [{"type": "text","sub_type": "message","message": '↓ left pull',"message_RU": "| Левая полоса" }, - {"type": "func","func": skilld_event.bind(null, 1113)}, - {"type": "func","func": Spawnitem1.bind(null,445,270,200,180,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,270,200,0,300,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,0,180,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,0,0,300,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,300,270,200,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,180,500,270,200,2000)}], - "s-3023-1000-114-0": [{"type": "text","sub_type": "message","message": 'right pull ↓',"message_RU": "Правая полоса |" }, - {"type": "func","func": skilld_event.bind(null, 1114)}, - {"type": "func","func": Spawnitem1.bind(null,445,90,200,180,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,90,200,0,300,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,0,180,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,0,0,300,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,0,300,90,200,2000)}, - {"type": "func","func": Spawnitem1.bind(null,445,180,500,90,200,2000)}], - "s-3023-1000-115-0": [{"type": "text","sub_type": "message","message": 'back attack',"message_RU": "Удар назад" }, - {"type": "func","func": Spawnitemsp2.bind(null,1,-2,445,0,0,20,150,100,2000)}, - {"type": "func","func": Spawnitemsp2.bind(null,-2,1,445,0,0,20,150,100,2000)}, - {"type": "func","func": Spawnitemsp2.bind(null,1,-2,445,0,0,10,300,100,2000)}, - {"type": "func","func": Spawnitemsp2.bind(null,-2,1,445,0,0,10,300,100,2000)} - ], - "s-3023-1000-116-0": [{"type": "text","sub_type": "message","message": 'get out',"message_RU": "Взрыв (Кайя)!!!" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,500,6000)}], - "am-3023-1000-30231001": [{"type": "func","func": skilld_event.bind(null, 1001)}], - "am-3023-1000-30231000": [{"type": "func","func": skilld_event.bind(null, 1000)}], - "ae-0-0-99020020": [{"type": "func","func": skilld_event.bind(null, 99020020)}], //复生 - "ae-0-0-30231000": [{"type": "func","func": skilld_event.bind(null, 30231000)}], //开始红色 - "ae-0-0-30231001": [{"type": "func","func": skilld_event.bind(null, 30231001)}], //开始蓝色 - "s-3023-1000-3107-0": [{"type": "text","sub_type": "message","message": 'smash',"message_RU": "Конус вперед" }, - {"type": "func","func": Spawnitem1.bind(null,445,90,80,10,1000,4000)}, - {"type": "func","func": Spawnitem1.bind(null,445,270,80,350,1000,4000)} - ], - "s-3023-1000-3115-0": [{"type": "text","sub_type": "message","message": 'spin',"message_RU": "Крутилка" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,320,3500)}], - "s-3023-1000-3116-0": [{"type": "text","sub_type": "message","message": 'spin',"message_RU": "Круги + Крутилка" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,320,5000)}], - "s-3023-1000-3119-0": [{"type": "func","func": skilld_event.bind(null, 3119)}, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,575,6000)}], - "s-3023-1000-3220-0": [{"type": "func","func": skilld_event.bind(null, 3220)}, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,575,6000)}], - // "s-3023-1000-3223-0": [{"type": "text","sub_type": "message","message_RU": "Красный дебаф" }], - // 2 boss - "s-3023-2000-164-0": [{"type": "text","sub_type": "message","message": 'Counter attack (bleeding)',"message_RU": "Отпрыжка (Кровоток)" }], - "s-3023-2000-166-0": [{"type": "text","sub_type": "message","message": 'turn-back',"message_RU": "Обернуться" }], - "s-3023-2000-175-0": [{"type": "text","sub_type": "message","message": 'debuff',"message_RU": "Рёв (Эвейд)!!!" }], - "s-3023-2000-178-0": [{"type": "text","sub_type": "message","message": ' scratching',"message_RU": "Крутилка" }], - "s-3023-2000-181-0": [{"type": "text","sub_type": "message","message": 'Insert the floor',"message_RU": "Полоса вперед" }, - {"type": "func","func": Spawnitem1.bind(null,445,90,80,10,1000,4000)}, - {"type": "func","func": Spawnitem1.bind(null,445,270,80,350,1000,4000)}], - "s-3023-2000-182-0": [{"type": "text","sub_type": "message","message": 'Knock down',"message_RU": "Опрокид" }], - "s-3023-2000-185-0": [{"type": "text","sub_type": "message","message": 'big jump',"message_RU": "Взрыв (Кайя)!!!" }, - {"type": "func","func": skilld_event.bind(null, 185)}, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,10,500,6000)}, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,750,6000)}], - "s-3023-2000-202-0": [{"type": "text","sub_type": "message","message": 'BACKSTAB',"message_RU": "Назад + Вперед" }], - "s-3023-2000-207-0": [{"type": "text","sub_type": "message","message": 'Phantom x5(bleed)',"message_RU": "Прыжки x5 (Кровоток)" }], - "s-3023-2000-212-0": [{"type": "text","sub_type": "message","message": 'Flash (bleed)',"message_RU": "Байт (Кровоток)" }], -}; +// Akalath Quarantine +// +// made by michengs + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = ES; + + let debuff = null; // default debuff + + return { + // 1 BOSS + "nd-3023-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + // Debuff removed + "die": [{ type: "func", func: () => { debuff = null; } }], + // Debuf added + "ae-0-0-30231000": [{ type: "func", func: () => debuff = 1 }], // AoE (red) + "ae-0-0-30231001": [{ type: "func", func: () => debuff = 2 }], // AoE (blue) + "am-3023-1000-30231000": [{ type: "func", func: () => debuff = 1 }], // Red + "am-3023-1000-30231001": [{ type: "func", func: () => debuff = 2 }], // Blue + // + "s-3023-1000-104-0": [{ type: "text", sub_type: "message", message: "Random Jump", message_RU: "Прыжок + Стан" }], + "s-3023-1000-105-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Поворот назад" }], + "s-3023-1000-110-0": [ + { type: "text", sub_type: "message", message: "Stun", message_RU: "Передний стан" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 175, 10, 260, 0, 6000] } + ], + "s-3023-1000-111-0": [ + { type: "text", sub_type: "message", message: "Left Slash", message_RU: "Левая полоса" }, + { type: "spawn", func: "vector", args: [553, 270, 200, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 200, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 6, 302, 270, 200, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 176, 502, 270, 200, 0, 2000] } + ], + "s-3023-1000-112-0": [ + { type: "text", sub_type: "message", message: "Right Slash", message_RU: "Правая полоса" }, + { type: "spawn", func: "vector", args: [553, 90, 200, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 200, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 20, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 20, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 354, 302, 90, 200, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 184, 502, 90, 200, 0, 2000] } + ], + "s-3023-1000-113-0": "s-3023-1000-111-0", + "s-3023-1000-114-0": "s-3023-1000-112-0", + "s-3023-1000-115-0": [ + { type: "text", sub_type: "message", message: "Back Attack", message_RU: "Удар назад" }, + { type: "spawn", func: "semicircle", args: [90, 280, 553, 0, 0, 15, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [90, 275, 553, 0, 0, 10, 250, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [90, 270, 553, 0, 0, 10, 340, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 150, 90, 150, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 150, 270, 150, 0, 2000] } + ], + "s-3023-1000-116-0": [ + { type: "text", sub_type: "message", message: "Kaia's Shield", message_RU: "Кайа", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Thrall of Protection", message_RU: "Кайа", class_position: "mystic" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 560, 0, 6000] } + ], + "s-3023-1000-3107-0": [ + { type: "text", sub_type: "message", message: "Smash", message_RU: "Конус вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 10, 1000, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 350, 1000, 0, 4000] } + ], + "s-3023-1000-3115-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-3023-1000-3116-0": [ + { type: "text", sub_type: "message", message: "Circles + Spin", message_RU: "Круги + Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 5000] } + ], + "s-3023-1000-3119-0": [ // red inside + { type: "text", sub_type: "message", message: "OUT (red)", message_RU: "ОТ НЕГО", check_func: () => debuff === 1, delay: 500 }, + { type: "text", sub_type: "message", message: "IN (blue)", message_RU: "К НЕМУ", check_func: () => debuff === 2, delay: 500 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 270, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 650, 0, 4000] } + ], + "s-3023-1000-3220-0": [ // blue inside + { type: "text", sub_type: "message", message: "IN (blue)", message_RU: "К НЕМУ", check_func: () => debuff === 1, delay: 500 }, + { type: "text", sub_type: "message", message: "OUT (red)", message_RU: "ОТ НЕГО", check_func: () => debuff === 2, delay: 500 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 270, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 650, 0, 4000] } + ], + + // 2 BOSS + "nd-3023-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-3023-2000-164-0": [{ type: "text", sub_type: "message", message: "Counter Attack (bleed)", message_RU: "Отпрыжка (Кровоток)" }], + "s-3023-2000-166-0": [{ type: "text", sub_type: "message", message: "Turn-back", message_RU: "Оборот назад" }], + "s-3023-2000-175-0": [ + { type: "text", sub_type: "message", message: "Incoming Stun", message_RU: "Рёв" }, + { type: "text", sub_type: "message", delay: 1500, message: "Dodge", message_RU: "Эвейд" } + ], + "s-3023-2000-178-0": [{ type: "text", sub_type: "message", message: "Scratching (bleed)", message_RU: "Крутилка (Кровоток)" }], + "s-3023-2000-181-0": [ + { type: "text", sub_type: "message", message: "Rock Throw", message_RU: "Полоса вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 10, 1000, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 350, 1000, 0, 4000] } + ], + "s-3023-2000-182-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-3023-2000-185-0": [ + { type: "text", sub_type: "message", message: "Big jump (Kaia's Shield)", message_RU: "Прыжок (кайа)", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Big jump (Thrall of Protection)", message_RU: "Прыжок (кайа)", class_position: "mystic" }, + { type: "text", sub_type: "alert", delay: 110000, message: "Big jump soon...", message_RU: "Скоро прыжок...", class_position: "heal" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 500, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 750, 0, 6000] } + ], + "s-3023-2000-202-0": [ + { type: "text", sub_type: "message", message: "Backstab", message_RU: "Назад + Вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 180, 500, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 180, 500, 0, 3000] } + ], + "s-3023-2000-207-0": [{ type: "text", sub_type: "message", message: "Phantom x5 (bleed)", message_RU: "Прыжки x5 (Кровоток)" }], + "s-3023-2000-212-0": [{ type: "text", sub_type: "message", message: "Flash (bleed)", message_RU: "Байт (Кровоток)" }] + }; +}; \ No newline at end of file diff --git a/guides/3026.js b/guides/3026.js index efcf3c86..7d8f969c 100644 --- a/guides/3026.js +++ b/guides/3026.js @@ -1,235 +1,380 @@ -//Corrupted Skynest -//made by michengs -let player, entity, library, effect; -let print = true; -let debuff = null ; -let timer1; -let timer2; -let timer3; -let timer4; -let timer5; -let qbacting = null; -function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; -} - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -const CK_TipMsg = -{ - 0: {msgt: 'IN', msg: 'К'}, - 1: {msgt: 'OUT', msg: 'От'} -}; -const debuff_TipMsg = -{ - 0: {msg: '------Готов к переключению красного-------!'}, - 1: {msg: '------Подготовка к переключению синего-------'} -}; -const boss_skill = -{ - 213: {msg: 'Лево', msgt: 'left'}, - 214: {msg: 'Право', msgt: 'right'}, - 212: {msg: 'Право', msgt: 'right'}, - 215: {msg: 'Лево', msgt: 'left'} -}; -function skilld_event(skillid, handlers, event, ent, dispatch) { -if ([3026004,3126004,3026005,3126005].includes(skillid)) { // //愤怒0 恐惧1 -qbacting = skillid % 2; -//qbacting = null -} -if ([3026001,3126001,3026002,3126002].includes(skillid)) { // //蓝色0 红色1 -//debuff = skillid % 2; -clearTimeout(timer1); -clearTimeout(timer2); -clearTimeout(timer3); -clearTimeout(timer4); -clearTimeout(timer5); - timer1 = setTimeout(()=>{ - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message_RU": "дебафф 20сек" -}); - } - }, 70000); - timer2 = setTimeout(()=>{ - if (debuff != null) { -handlers['text']({ -"sub_type": "notification", -"message_RU": (`${debuff_TipMsg[debuff % 2].msg} `) -}); -handlers['text']({ -"sub_type": "message", -"message": "debuff 50s", -"message_RU": "дебафф 50сек" -}); - } - }, 40000); - timer3 = setTimeout(()=>{ - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message": "warning debuff 15s", -"message_RU": "дебафф 15сек" -}); - } - }, 75000); - timer4 = setTimeout(()=>{ - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message": "warning debuff 10s", -"message_RU": "дебафф 10сек" -}); - } - }, 80000); - timer5 = setTimeout(()=>{ - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message": "warning debuff 5s", -"message_RU": "дебафф 5сек" -}); - } - }, 85000); -} -if ([213,214].includes(skillid)) { // //蓝内 - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message": (`${boss_skill[skillid].msgt} | ${CK_TipMsg[(qbacting + debuff +1) %2].msgt}`), -"message_RU": (`${boss_skill[skillid].msg} | ${CK_TipMsg[(qbacting + debuff +1) %2].msg}`) -}); - } -} -if ([212,215].includes(skillid)) { // //红内 - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message": (`${boss_skill[skillid].msgt} | ${CK_TipMsg[(qbacting + debuff) %2].msgt}`), -"message_RU": (`${boss_skill[skillid].msg} | ${CK_TipMsg[(qbacting + debuff) %2].msg}`) -}); - } -} -if (skillid === 99020020) { //死亡解除debuff -//debuff = null; -clearTimeout(timer1); -clearTimeout(timer2); -} -/* -if (skillid === 157) { //debuff - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message": debuffs_targe[debuff] - }); -} -} -*/ -} -// NULL % 2 =0 -// 1 % 2 =1 -//0 % 2 =0 -//2 % 2 =0 -let debuff_tracker_started = false; -let debuffs_targe = { - 30260001: "Огненный дебафф", - 30260002: "Ледяной дебафф", - 31260001: "Огненный дебафф", - 31260002: "Ледяной дебафф" -}; -function start_debuff(handlers, event, entity, dispatch) { - const abnormality_change = (added, event) => { - if ((player.isMe(event.target) || player.playersInParty.includes(event.target.toString())) && debuffs_targe[event.id]) { +// Corrupted Skynest +// +// made by michengs / HSDN / ZC + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + const { player } = dispatch.require.library; + const { MARKER_ITEM } = module.parent.exports.spawn; + + let debuff = null; + let timer1 = null; + let timer2 = null; + let timer3 = null; + let timer4 = null; + let timer5 = null; + let boss_ent = null; + let boss_offset = 0; + let qbacting = null; + let blue = false; + let red = false; + let debuff_tracker_started = false; + + const mech_messages = { + 0: { message: "IN", message_RU: "К НЕМУ" }, + 1: { message: "OUT", message_RU: "ОТ НЕГО" } + }; + + const qbacting_messages = { + 0: { message: "different", message_RU: "разные" }, + 1: { message: "same", message_RU: "одинаковые" } + }; + + const debuff_messages = { + 0: { message: "Ready to get Fire debuff", message_RU: "Готовность к переключению на Огонь" }, + 1: { message: "Ready to get Ice debuff", message_RU: "Готовность к переключению на Лед" } + }; + + // NULL % 2 = 0 + // 1 % 2 = 1 + // 0 % 2 = 0 + // 2 % 2 = 0 + + function spawn_marker(out) { + if (!boss_ent) return; + + let distance = 220; + let caption = "IN"; + + if (out) { + distance = 620; + caption = "OUT"; + } + + handlers.event([ + { type: "spawn", func: "marker", args: [false, 45 + boss_offset, distance, 0, 4000, true, [caption, "SAFE"]] }, + { type: "spawn", func: "marker", args: [false, 135 + boss_offset, distance, 0, 4000, true, [caption, "SAFE"]] }, + { type: "spawn", func: "marker", args: [false, 225 + boss_offset, distance, 0, 4000, true, [caption, "SAFE"]] }, + { type: "spawn", func: "marker", args: [false, 315 + boss_offset, distance, 0, 4000, true, [caption, "SAFE"]] } + ], boss_ent); + } + + function debuff_added(id) { + debuff_removed(); + debuff = id; // debuff event id + + timer1 = dispatch.setTimeout(() => { + if (debuff != null) { + handlers.text({ + sub_type: "message", + message: "Debuff 20 seconds", + message_RU: "Дебафф 20 сек." + }); + } + }, 70000); + + timer2 = dispatch.setTimeout(() => { + if (debuff != null) { + dispatch.setTimeout(() => { + handlers.text({ + sub_type: "alert", + message: (`${debuff_messages[debuff % 2].message}`), + message_RU: (`${debuff_messages[debuff % 2].message_RU}`) + }); + }, 2000); + + handlers.text({ + sub_type: "message", + message: "Debuff 50 seconds", + message_RU: "Дебафф 50 сек." + }); + } + }, 40000); + + timer3 = dispatch.setTimeout(() => { + if (debuff != null) { + handlers.text({ + sub_type: "message", + message: "Warning! Debuff 15 seconds", + message_RU: "Дебафф 15 сек." + }); + } + }, 75000); + + timer4 = dispatch.setTimeout(() => { + if (debuff != null) { + handlers.text({ + sub_type: "message", + message: "Warning! Debuff 10 seconds", + message_RU: "Дебафф 10 сек." + }); + } + }, 80000); + + timer5 = dispatch.setTimeout(() => { + if (debuff != null) { + handlers.text({ + sub_type: "message", + message: "Warning! Debuff 5 seconds", + message_RU: "Дебафф 5 сек." + }); + } + }, 85000); + + if (blue) { + handlers.text({ + sub_type: "message", + message: (`${mech_messages[(qbacting + debuff + 1) % 2].message}`), + message_RU: (`${mech_messages[(qbacting + debuff + 1) % 2].message_RU}`) + }); + + spawn_marker((qbacting + debuff + 1) % 2); + } else if (red) { + handlers.text({ + sub_type: "message", + message: (`${mech_messages[(qbacting + debuff) % 2].message}`), + message_RU: (`${mech_messages[(qbacting + debuff) % 2].message_RU}`) + }); + + spawn_marker((qbacting + debuff) % 2); + } + } + + function debuff_removed() { + debuff = null; + dispatch.clearTimeout(timer1); + dispatch.clearTimeout(timer2); + dispatch.clearTimeout(timer3); + dispatch.clearTimeout(timer4); + dispatch.clearTimeout(timer5); + } + + function skilld_event(skillid, ent) { + const abnormality_change = (added, event) => { + // Fire/Ice debuff + if (player.isMe(event.target.toString()) && [30260001, 30260002, 31260001, 31260002].includes(event.id)) { if (added) { - setTimeout(() => debuff = event.id, 500); + debuff_added(event.id); + } else { + debuff_removed(); + } + } + + // Argon Priest Essence buff + if (player.isMe(event.target.toString()) && [30261701, 31261701].includes(event.id)) { + if (added && boss_ent) { + handlers.spawn({ // spawn teleport mark + sub_type: "item", + id: MARKER_ITEM, + sub_delay: 50000, + pos: { + x: 53192, + y: 100761, + z: 14233 + } + }, boss_ent); + } + } + }; + + // In-Out quest balloons (qbacting => ярость 0, ужас 1) + if ([3026004, 3126004, 3026005, 3126005].includes(skillid)) { + qbacting = skillid % 2; + } + + // Fire/Ice debuff (debuff % 2 => синий 0, красный 1) + if ([30260001, 31260001, 30260002, 31260002].includes(skillid) && !debuff_tracker_started) { + debuff_added(skillid); + } + + // In-Out identification + if ([212, 213, 214, 215].includes(skillid)) { + boss_ent = ent; + handlers.event([ + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 440, 200, 8000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 4, 840, 200, 8000] } + ]); + } + + if ([212, 214].includes(skillid)) { // Fire claw (141, 142) + boss_offset = 10; + handlers.event([ + { type: "spawn", func: "vector", args: [553, 0, 0, 190, 840, 200, 8000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 10, 840, 200, 8000] } + ]); + } + + if ([213, 215].includes(skillid)) { // Ice claw (143, 144) + boss_offset = -10; + handlers.event([ + { type: "spawn", func: "vector", args: [553, 0, 0, 170, 840, 200, 8000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 350, 840, 200, 8000] } + ]); + } + + if ([213, 214].includes(skillid)) { // Ice inside + dispatch.setTimeout(() => { + if (debuff != null) { + handlers.text({ + sub_type: "message", + message: (`Ice inside (${qbacting_messages[qbacting].message}) | ${mech_messages[(qbacting + debuff + 1) % 2].message}`), + message_RU: (`Внутри лед (${qbacting_messages[qbacting].message_RU}) | ${mech_messages[(qbacting + debuff + 1) % 2].message_RU}`) + }); + + spawn_marker((qbacting + debuff + 1) % 2); } else { - debuff = null + handlers.text({ + sub_type: "message", + message: (`Ice inside (${qbacting_messages[qbacting].message})`), + message_RU: (`Внутри лед (${qbacting_messages[qbacting].message_RU})`) + }); } + }, 500); + + blue = true; + red = false; + + dispatch.setTimeout(() => blue = false, 6500); //6700 } + + if ([212, 215].includes(skillid)) { // Fire inside + dispatch.setTimeout(() => { + if (debuff != null) { + handlers.text({ + sub_type: "message", + message: (`Fire inside (${qbacting_messages[qbacting].message}) | ${mech_messages[(qbacting + debuff) % 2].message}`), + message_RU: (`Внутри огонь (${qbacting_messages[qbacting].message_RU}) | ${mech_messages[(qbacting + debuff) % 2].message_RU}`) + }); + + spawn_marker((qbacting + debuff) % 2); + } else { + handlers.text({ + sub_type: "message", + message: (`Fire inside (${qbacting_messages[qbacting].message})`), + message_RU: (`Внутри огонь (${qbacting_messages[qbacting].message_RU})`) + }); + } + }, 500); + + blue = false; + red = true; + + dispatch.setTimeout(() => red = false, 6500); + } + + if (!debuff_tracker_started) { + dispatch.hook("S_ABNORMALITY_BEGIN", dispatch._mod.majorPatchVersion >= 107 ? 5 : 4, abnormality_change.bind(null, true)); + dispatch.hook("S_ABNORMALITY_END", 1, abnormality_change.bind(null, false)); + + debuff_tracker_started = true; + } + } + + const skills = { + "112-0": [{ type: "text", sub_type: "message", message: "Ice DOT", message_RU: "Лед (полоса)" }], + "110-0": [{ type: "text", sub_type: "message", message: "Fire DOT", message_RU: "Огонь (лужа)" }], + "108-0": [ + { type: "text", sub_type: "message", message: "Turn Right (Repel)", message_RU: "Поворот вправо (откид)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 8, 440, 0, 2000] } + ], + "158-0": [ + { type: "text", sub_type: "message", message: "Turn Right (Repel)", message_RU: "Поворот вправо (откид)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 8, 440, 0, 2000] } + ], + "109-0": [ + { type: "text", sub_type: "message", message: "Turn Left (Repel)", message_RU: "Поворот влево (откид)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 8, 440, 0, 2000] } + ], + "159-0": [ + { type: "text", sub_type: "message", message: "Turn Left (Repel)", message_RU: "Поворот влево (откид)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 8, 440, 0, 2000] } + ], + "120-0": [{ type: "text", sub_type: "message", message: "Together", message_RU: "Яростный рев" }], + "145-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "157-0": [{ type: "text", sub_type: "message", message: "Change", message_RU: "Смена" }], + "103-0": [ + { type: "text", sub_type: "message", message: "Tail (Flying)", message_RU: "Хвост (полет)" }, + { type: "text", sub_type: "message", message: "Arise!", message_RU: "Удочка!", delay: 1500, class_position: "priest" }, + { type: "spawn", func: "semicircle", args: [140, 260, 912, 0, 0, 10, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 135, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 260, 500, 0, 2000] } + ], + "153-0": [ + { type: "text", sub_type: "message", message: "Tail (Flying)", message_RU: "Хвост (полет!!)" }, + { type: "text", sub_type: "message", message: "Arise!", message_RU: "Удочка!", delay: 1500, class_position: "priest" }, + { type: "spawn", func: "semicircle", args: [140, 260, 912, 0, 0, 10, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 135, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 260, 500, 0, 2000] } + ], + + // AOE лед (большой) + "104-0": [ + { type: "text", sub_type: "message", message: "Ice Storm DOTs", message_RU: "Ледяные лужи" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 500, 0, 5000] } + ], + // AOE огонь (большой) + "105-0": [ + { type: "text", sub_type: "message", message: "Fire Bombs", message_RU: "Огненные бомбы" }, + { type: "spawn", func: "circle", args: [false, 553, 135, 500, 10, 270, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 315, 500, 10, 270, 0, 3250] }, + { type: "spawn", func: "circle", args: [false, 553, 45, 500, 10, 270, 0, 3500] }, + { type: "spawn", func: "circle", args: [false, 553, 235, 500, 10, 270, 0, 3750] }, + { type: "spawn", func: "circle", args: [false, 553, 90, 500, 10, 270, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 270, 500, 10, 270, 0, 4250] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 500, 10, 270, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 553, 180, 500, 10, 270, 0, 4750] } + ], + // AOE лед (малый) + "154-0": [ + { type: "text", sub_type: "message", message: "Ice Storm", message_RU: "Ледяной шторм" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 500, 0, 6000] } + ], + // AOE огонь (малый) + "155-0": [{ type: "text", sub_type: "message", message: "Fire (Knockdown)", message_RU: "Огненный столб (опрокид)" }, + { type: "text", sub_type: "message", delay: 1200, message: "Dodge", message_RU: "Эвейд" } + ], + + "206-0": [{ type: "text", sub_type: "message", message: "Jump Back", message_RU: "Прыжок назад" }], + "206-2": [{ type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 350, 0, 3000] }], + "137-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокидывание" }], + "138-0": [{ type: "text", sub_type: "message", message: "AOE", message_RU: "AOE" }], + "139-0": [{ type: "text", sub_type: "message", message: "Fire to all", message_RU: "Огонь всем" }], + "140-0": [{ type: "text", sub_type: "message", message: "Ice to all", message_RU: "Лед всем" }], + + "die": [{ type: "func", func: debuff_removed }], + "nd-3026-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-3026-1000-1118-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-3026-1000-2118-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-3026-1000-1118-1": [{ type: "text", sub_type: "message", message: "Dodge!", message_RU: "Эвейд!", delay: 615 }], + "s-3026-1000-2118-1": [{ type: "text", sub_type: "message", message: "Dodge!", message_RU: "Эвейд!", delay: 625 }], + "s-3026-1000-1212-0": [{ type: "func", func: skilld_event, args: [212] }], + "s-3026-1000-1215-0": [{ type: "func", func: skilld_event, args: [215] }], + "s-3026-1000-1213-0": [{ type: "func", func: skilld_event, args: [213] }], + "s-3026-1000-1214-0": [{ type: "func", func: skilld_event, args: [214] }], + "qb-3026-1000-3026005": [{ type: "func", func: skilld_event, args: [3026005] }], // ужас, одинаковые цвета + "qb-3026-1000-3026004": [{ type: "func", func: skilld_event, args: [3026004] }], // ярость, разные цвета + "qb-3026-1000-3126005": [{ type: "func", func: skilld_event, args: [3126005] }], // ужас, одинаковые цвета + "qb-3026-1000-3126004": [{ type: "func", func: skilld_event, args: [3126004] }], // ярость, разные цвета + "am-3026-1000-30260001": [{ type: "func", func: skilld_event, args: [30260001] }], // красный + "am-3026-1000-30260002": [{ type: "func", func: skilld_event, args: [30260002] }], // синий + "am-3026-1000-31260001": [{ type: "func", func: skilld_event, args: [31260001] }], // красный + "am-3026-1000-31260002": [{ type: "func", func: skilld_event, args: [31260002] }] // синий }; - if (!debuff_tracker_started) { - dispatch.hook('S_ABNORMALITY_BEGIN', 4, abnormality_change.bind(null, true)); - dispatch.hook('S_ABNORMALITY_END', 1, abnormality_change.bind(null, false)); - debuff_tracker_started = true; + + const object = {}; + + for (const [key, value] of Object.entries(skills)) { + if (key.length === 5) { + object[`s-3026-1000-1${key}`] = value; + object[`s-3026-1000-2${key}`] = value; + } else { + object[key] = value; + } } -} -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, -"s-3026-1000-1112-0": [{"type": "text","sub_type": "message","message": "Ice()","message_RU": "Лёд"}], -"s-3026-1000-1110-0": [{"type": "text","sub_type": "message","message": "fire","message_RU": "Огонь"}], -"s-3026-1000-2112-0": [{"type": "text","sub_type": "message","message": "Ice()","message_RU": "Лёд"}], -"s-3026-1000-2110-0": [{"type": "text","sub_type": "message","message": "fire","message_RU": "Огонь"}], -"s-3026-1000-1108-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните направо, чтобы отбить"}], -"s-3026-1000-2108-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните направо, чтобы отбить"}], -"s-3026-1000-1158-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните направо, чтобы отбить"}], -"s-3026-1000-2158-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните направо, чтобы отбить"}], -"s-3026-1000-1109-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните влево, чтобы отбить"}], -"s-3026-1000-2109-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните влево, чтобы отбить"}], -"s-3026-1000-1159-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните влево, чтобы отбить"}], -"s-3026-1000-2159-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните влево, чтобы отбить"}], -"s-3026-1000-1120-0": [{"type": "text","sub_type": "message","message": "together","message_RU": "Яростный рёв"}], -"s-3026-1000-2120-0": [{"type": "text","sub_type": "message","message": "together","message_RU": "Яростный рёв"}], -"s-3026-1000-1157-0": [{"type": "text","sub_type": "message","message": "change","message_RU": "Смена"},{"type": "func","func": start_debuff}], -"s-3026-1000-2157-0": [{"type": "text","sub_type": "message","message": "change","message_RU": "Смена"},{"type": "func","func": start_debuff}], -"s-3026-1000-1103-0": [{"type": "text","sub_type": "message","message": "tail","message_RU": "Хвост"}], -"s-3026-1000-2103-0": [{"type": "text","sub_type": "message","message": "tail","message_RU": "Хвост"}], -"s-3026-1000-1118-1": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Прыжок"}], -"s-3026-1000-2118-1": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Прыжок"}], -//"s-3026-1000-118-2": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "闪"}], -//"s-3026-1000-118-2": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "闪"}], -"s-3026-1000-1145-0": [{"type": "text","sub_type": "message","message": "stun","message_RU": "Стан"}], -"s-3026-1000-2145-0": [{"type": "text","sub_type": "message","message": "stun","message_RU": "Стан"}], -"s-3026-1000-1206-0": [{"type": "text","sub_type": "message","message": "Jump back","message_RU": "Прыжок назад (полет)"}], -"s-3026-1000-2206-0": [{"type": "text","sub_type": "message","message": "Jump back","message_RU": "Прыжок назад (полет)"}], -"s-3026-1000-1206-2": [{"type": "func","func": Spawnitem2.bind(null,553,0,0,15,350,200,3000)}], -"s-3026-1000-2206-2": [{"type": "func","func": Spawnitem2.bind(null,553,0,0,15,350,200,3000)}], -"s-3026-1000-1153-0": [{"type": "text","sub_type": "message","message": "tail","message_RU": "Хвост"}], -"s-3026-1000-2153-0": [{"type": "text","sub_type": "message","message": "tail","message_RU": "Хвост"}], -"s-3026-1000-1154-0": [{"type": "text","sub_type": "message","message": "Ice storm","message_RU": "Ледяной шторм"}], //30不可防 -"s-3026-1000-2154-0": [{"type": "text","sub_type": "message","message": "Ice storm","message_RU": "Ледяной шторм"}], //30不可防 -"s-3026-1000-1155-0": [{"type": "text","sub_type": "message","message": "Knock down","message_RU": "Огненный столб(опрокид)"}], //30不可防 -"s-3026-1000-2155-0": [{"type": "text","sub_type": "message","message": "Knock down","message_RU": "Огненный столб(опрокид)"}], //30不可防 -"s-3026-1000-1137-0": [{"type": "text","sub_type": "message","message": "Knock down","message_RU": "Опрокидывание"},{"type": "func","func": Spawnitem2.bind(null,553,0,0,2,1275,200,13000)}], -"s-3026-1000-2137-0": [{"type": "text","sub_type": "message","message": "Knock down","message_RU": "Опрокидывание"},{"type": "func","func": Spawnitem2.bind(null,553,0,0,2,1275,200,13000)}], -"s-3026-1000-1138-0": [{"type": "text","sub_type": "message","message": "AOE","message_RU": "AOE"}], -"s-3026-1000-2138-0": [{"type": "text","sub_type": "message","message": "AOE","message_RU": "AOE"}], -"s-3026-1000-1139-0": [{"type": "text","sub_type": "message","message": "60°","message_RU": "60° всем (Лёд)"}], -"s-3026-1000-2139-0": [{"type": "text","sub_type": "message","message": "60°","message_RU": "60° всем (Лёд)"}], -"s-3026-1000-1140-0": [{"type": "text","sub_type": "message","message": "40","message_RU": "40° всем (Огонь)"}], -"s-3026-1000-2140-0": [{"type": "text","sub_type": "message","message": "40","message_RU": "40° всем (Огонь)"}], -"s-3026-1000-1212-0": [{"type": "func","func": skilld_event.bind(null, 212)},{"type": "func","func": Spawnitem2.bind(null,445,0,0,8,425,200,6000)}], -"s-3026-1000-1215-0": [{"type": "func","func": skilld_event.bind(null, 215)},{"type": "func","func": Spawnitem2.bind(null,445,0,0,8,425,200,6000)}], -"s-3026-1000-1213-0": [{"type": "func","func": skilld_event.bind(null, 213)},{"type": "func","func": Spawnitem2.bind(null,445,0,0,8,425,200,6000)}], -"s-3026-1000-1214-0": [{"type": "func","func": skilld_event.bind(null, 214)},{"type": "func","func": Spawnitem2.bind(null,445,0,0,8,425,200,6000)}], -"qb-3026-1000-3026005": [{"type": "func","func": skilld_event.bind(null, 3026005)}],//吃同色恐惧 -"qb-3026-1000-3026004": [{"type": "func","func": skilld_event.bind(null, 3026004)}],//吃异色愤怒 -"qb-3026-1000-3126005": [{"type": "func","func": skilld_event.bind(null, 3126005)}],//吃同色恐惧 -"qb-3026-1000-3126004": [{"type": "func","func": skilld_event.bind(null, 3126004)}],//吃异色愤怒 -"ae-0-0-99020020": [{"type": "func","func": skilld_event.bind(null, 99020020)}], -"am-3026-1000-30260001": [{"type": "func","func": skilld_event.bind(null, 3026001)}],//红色 -"am-3026-1000-30260002": [{"type": "func","func": skilld_event.bind(null, 3026002)}],//蓝色 -"am-3026-1000-31260001": [{"type": "func","func": skilld_event.bind(null, 3126001)}],//红色 -"am-3026-1000-31260002": [{"type": "func","func": skilld_event.bind(null, 3126002)}]//蓝色 + + return object; }; \ No newline at end of file diff --git a/guides/3027.js b/guides/3027.js index a9985fd6..755ebb97 100644 --- a/guides/3027.js +++ b/guides/3027.js @@ -1,197 +1,163 @@ -//Forbidden Arena -//made by michengs - -let player, entity, library, effect; -let timer1; -let notices = true; -let print = true; -function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; -} - - - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - //构建直线(提示标志 偏移角度 偏移距离 角度 最远距离 时间) -function Spawnitem1(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -function Spawnitem11(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - -function skilld_event(skillid, handlers, event, ent, dispatch) { - -if ([90,60,30,351].includes(skillid)) { // //Щит -//debuff = skillid % 2; -//clearTimeout(timer1); -if (print) { -print = false; -setTimeout(() => print = true, 15000); -if (skillid == 351) { -handlers['text']({ -"sub_type": "message", -"message": "SHIELD!", -"message_RU": "Щит!!!" -}); - } else { -handlers['text']({ -"sub_type": "message", -"message_RU": "Готов сломать щит" -}); - } - } -if (notices) { -clearTimeout(timer1); -notices = false; -setTimeout(() => notices = true, 5000); - timer1 = setTimeout(()=>{ - -handlers['text']({ -"sub_type": "message", -"message_RU": "Отсчет до щита" -}); - - }, 85000); - } - } -} -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - - - // boss位置 ,角度, 持续时间,类型, 偏角 ,偏距, ,最小半径 ,角度范围 ,间距 ,半径 - //(distance, angle, duration, type, offsetAngle, offsetDistance, minRadius, maxRadius, rotateAngle, rotateRadius) - - -"h-3027-1000-90": [{"type": "func","func": skilld_event.bind(null, 90)}], - -"h-3027-1000-60": [{"type": "func","func": skilld_event.bind(null, 60)}], - -"h-3027-1000-30": [{"type": "func","func": skilld_event.bind(null, 30)}], - - - - - - - - - -"s-3027-1001-255-0": [{"type": "text","sub_type": "message","message": "!","message_RU": "!"},{"type": "func","func": Spawnitem1.bind(null,912,0,0,0,3000,5000)}], //0 -"s-3027-1002-256-0": [{"type": "text","sub_type": "message","message": "!","message_RU": "!"},{"type": "func","func": Spawnitem11.bind(null,912,0,0,0,3000,5000)}], //60 - - - -"s-3027-1000-108-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "Strike(slow)","message_RU": "Меч (медленный)"}], - - - - -"s-3027-1000-112-0": [{"type": "text","sub_type": "message","message": "Back | Strike","message_RU": "Прыжок назад | Нож"}], //连招 -"s-3027-1000-130-0": [{"type": "text","sub_type": "message","message": "random aggro","message_RU": "Таргет"}], - -"s-3027-1000-134-0": [{"type": "text","sub_type": "message","message": "turn around","message_RU": "Поворот"}], //连招 -"s-3027-1000-134-1": [{"type": "text","sub_type": "message","message": "back","message_RU": "Удар назад"}], -"s-3027-1000-147-0": [{"type": "text","sub_type": "message","message": "back","message_RU": "Удар"}], - -"s-3027-1000-355-0": [{"type": "text","sub_type": "message","message": "Eviscerate","message_RU": "Потрошение"}], //连招 右侧上 -"s-3027-1000-114-0": [{"type": "text","sub_type": "message","message": "Split strike","message_RU": "Разделяющий удар"}], - -"s-3027-1000-350-0": [{"type": "text","sub_type": "message","message": "Donuts","message_RU": "Стяжка | Бублики"},{"type": "text","sub_type": "message","delay": 3750,"message": 'Waves soon...',"message_TW": "進"},{"type": "func","func": Spawnitem2.bind(null,445,0,0,12,240,200,5000)},{"type": "func","func": Spawnitem2.bind(null,445,0,0,8,480,200,5000)}], - - -"s-3027-1000-357-0": [{"type": "text","sub_type": "message","message": "get out","message_RU": "Стяжка | От"}], //连招 - - -"s-3027-1000-135-0": [{"type": "text","sub_type": "message","message": "Overhand Strike","message_RU": "Меч (медленный)"}], //连招 - - -"s-3027-1000-111-0": [{"type": "text","sub_type": "message","message": "stun | Strike","message_RU": "Стан | Меч (медленный)"}], //连招 左侧 - - -"s-3027-1000-136-0": [{"type": "text","sub_type": "message","message": "2x360°","message_RU": "2 удара | Меч (медленный)"}], //连招 -"s-3027-1000-144-0": [{"type": "text","sub_type": "message","message": "Sword","message_RU": "Меч"}], - - -"s-3027-1000-356-0": [{"type": "text","sub_type": "message","message": "Teleport","message_RU": "Телепорт(таргет)"}], ////连招 点名 - - -"s-3027-1000-117-0": [{"type": "text","sub_type": "message","message": "Teleport","message_RU": "Телепорт(таргет)"}],//连招 随机 - - -"s-3027-1000-145-0": [{"type": "text","sub_type": "message","message": "3x360°","message_RU": "3 удара | прыжок"}], //连招 3连挥刀 -"s-3027-1000-139-0": [{"type": "text","sub_type": "message","message": "!","message_RU": "!"}], -"s-3027-1000-140-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "прыжок"},{"type": "func","func": Spawnitem2.bind(null,445,0,180,8,460,200,3000)}], - -"s-3027-1000-151-0": [{"type": "text","sub_type": "message","message": "Three chop","message_RU": "3 удара | меч"}], //连招 2次点 -"s-3027-1000-149-0": [{"type": "text","sub_type": "message","message": "random aggro","message_RU": "таргет"}], -"s-3027-1000-149-1": [{"type": "text","sub_type": "message","message": "back Teleport","message_RU": "телепорт назад"}], -"s-3027-1000-148-0": [{"type": "text","sub_type": "message","message": "random aggro","message_RU": "таргет"}], -"s-3027-1000-148-1": [{"type": "text","sub_type": "message","message": "Teleport","message_RU": "телепорт"}], - -"s-3027-1000-141-0": [{"type": "text","sub_type": "message","message": "round | Strike ","message_RU": "круглый | меч"}], //连招 3连挥刀 -"s-3027-1000-146-0": [{"type": "text","sub_type": "message","message": "Eviscerate | Strike","message_RU": "Потрошение | меч"}], - -"s-3027-1000-142-0": [{"type": "text","sub_type": "message","message": "Eviscerate | Strike","message_RU": "Потрошение | меч"}], //连招 3连挥刀 -"s-3027-1000-143-0": [{"type": "text","sub_type": "message","message": "Overhand Strike","message_RU": "меч"}], - -"s-3027-1000-116-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "прыжок)"}], -"s-3027-1000-116-1": [{"type": "text","sub_type": "message","message": "dodge","message_RU": "эвейд!!"},{"type": "func","func": Spawnitem2.bind(null,445,0,180,8,460,200,3000)}], - -"s-3027-1000-402-0": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "прыжок)"}], -"s-3027-1000-109-0": [{"type": "text","sub_type": "message","message": "Forward Jump","message_RU": "Прыжок вперед"}], - -"s-3027-1000-351-0": [{"type": "text","sub_type": "message","message": "SHIELD!","message_RU": "Щит!!"},{"type": "func","func": skilld_event.bind(null, 351)}], - -"s-3027-1000-401-0": [{"type": "text","sub_type": "message","message": "AOE","message_RU": "АОЕ!!!!"}] - +// Forbidden Arena [Hagufna] +// +// made by michengs / HSDN + +/* eslint-disable no-multi-spaces */ + +module.exports = (dispatch, handlers, guide, lang) => { + const { HIGHLIGHT_ITEM } = module.parent.exports.spawn; + + let shield_timer1 = null; + let shield_timer2 = null; + let print_shield = true; + let print_hp = true; + let is_hp_74_39 = false; + + function shield_event() { + dispatch.clearTimeout(shield_timer1); + dispatch.clearTimeout(shield_timer2); + + shield_timer1 = dispatch.setTimeout(() => { + if (!is_hp_74_39) { + handlers.text({ + sub_type: "message", + message: "Shield in 5 seconds!", + message_RU: "Через 5 сек. щит!" + }); + } + }, 85000); + + shield_timer2 = dispatch.setTimeout(() => { + if (!is_hp_74_39) { + handlers.text({ + sub_type: "message", + message: "Shield in 15 seconds!", + message_RU: "Через 15 сек. щит!" + }); + } + }, 75000); + } + + function boss_hp_event(hp) { + if ([74, 39].includes(hp)) { + if (print_hp) { + dispatch.clearTimeout(shield_timer1); + dispatch.clearTimeout(shield_timer2); + print_hp = false; + is_hp_74_39 = true; + dispatch.setTimeout(() => print_hp = true, 15000); + } + } + if ([89, 59, 29].includes(hp)) { // до щита + if (print_shield) { + print_shield = false; + is_hp_74_39 = false; + dispatch.setTimeout(() => print_shield = true, 15000); + + handlers.text({ + sub_type: "alert", + message: "Ready for Shield", + message_RU: "Готовность ломать щит" + }); + } + } + } + + return { + "nd-3027-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-3027-1000-89": [{ type: "func", func: boss_hp_event, args: [89] }], + "h-3027-1000-59": [{ type: "func", func: boss_hp_event, args: [59] }], + "h-3027-1000-29": [{ type: "func", func: boss_hp_event, args: [29] }], + "h-3027-1000-74": [{ type: "func", func: boss_hp_event, args: [74] }], + "h-3027-1000-39": [{ type: "func", func: boss_hp_event, args: [39] }], + + //"s-3027-1001-255-0": [{ type: "spawn", func: "vector", args: [553, 0, 0, 0, 3000, 0, 5000] }], //0 + //"s-3027-1002-256-0": [{ type: "spawn", func: "vector", args: [553, 0, 0, 0, 3000, 0, 5000] }], //60 + //"s-3027-1003-257-0": [{ type: "spawn", func: "vector", args: [553, 0, 0, 0, 3000, 0, 5000] }], //0 + //"s-3027-1004-258-0": [{ type: "spawn", func: "vector", args: [553, 0, 0, 0, 3000, 0, 5000] }], //60 + + "s-3027-1000-108-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Strike (Slow)", message_RU: "Меч (медленный)" }], // 101 121 122 -> 108 + //"s-3027-1000-355-0": [{ type: "text", sub_type: "message", message: "Eviscerate", message_RU: "Потрошение" }], // 102 121 103 -> 355 -> 114 + "s-3027-1000-135-0": [{ type: "text", sub_type: "message", message: "Strike (Slow)", message_RU: "Меч (медленный)" }], // 104 -> 135 -> 130 + "s-3027-1000-111-0": [{ type: "text", sub_type: "message", message: "Stun | Strike", message_RU: "Стан | Меч" }], // 104 -> 111 -> 130 + "s-3027-1000-112-0": [{ type: "text", sub_type: "message", message: "Back Jump | Strike", message_RU: "Прыжок назад | Меч" }], // 121 102 -> 112 -> 130 + + // прыжок + "s-3027-1000-116-0": [ + { type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" } + ], + "s-3027-1000-116-1": [ + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд!" }, + { type: "spawn", func: "circle", args: [true, 912, 0, 110, 8, 480, 0, 3000] } + ], + + // 3 оборота -> прыжок (145 -> 139 -> 140) + "s-3027-1000-145-0": [{ type: "text", sub_type: "message", message: "3x360 | Jump", message_RU: "3 оборота | Прыжок" }], + "s-3027-1000-139-0": [{ type: "text", sub_type: "message", delay: 1000, message: "Jump", message_RU: "Прыжок" }], + "s-3027-1000-140-0": [ + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд!" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 110, 8, 480, 0, 3000] } + ], + + // 109 -> 402 -> 130 + "s-3027-1000-109-0": [{ type: "text", sub_type: "message", message: "Forward Jump", message_RU: "Прыжок вперед" }], + "s-3027-1000-402-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + + // 136 -> 144 -> 130 + "s-3027-1000-136-0": [{ type: "text", sub_type: "message", message: "2x360 | Strike", message_RU: "2 оборота | Меч" }], + "s-3027-1000-144-0": [{ type: "text", sub_type: "message", message: "Strike", message_RU: "Меч" }], + + // 134 -> 147 + "s-3027-1000-134-0": [{ type: "text", sub_type: "message", message: "Turn around | Back", message_RU: "Поворот | Удар назад" }], + "s-3027-1000-134-1": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }], + "s-3027-1000-147-0": [{ type: "text", sub_type: "message", message: "Strike", message_RU: "Меч" }], + + // 142 -> 143 114 130 + "s-3027-1000-142-0": [{ type: "text", sub_type: "message", message: "2x360 | Strike", message_RU: "2 оборота | Меч" }], + "s-3027-1000-143-0": [{ type: "text", sub_type: "message", message: "Strike", message_RU: "Меч" }], + + "s-3027-1000-141-0": [{ type: "text", sub_type: "message", message: "2x360 | Eviscerate", message_RU: "2 оборота | Потрошение" }], // 141 -> 146 114 130 + "s-3027-1000-146-0": [{ type: "text", sub_type: "message", message: "Eviscerate | Strike", message_RU: "Потрошение | Меч" }], // 146 -> 114 -> 130 + + // стяжка -> бублики (350 -> 302) + "s-3027-1000-350-0": [ + { type: "text", sub_type: "message", message: "Red: Donuts (Out > In)", message_RU: "Стяжка | Бублики (От него > К нему)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 240, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 480, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 3, 950, 0, 5000] }, + { type: "spawn", func: "item", args: [HIGHLIGHT_ITEM, 0, 0, 3800, 1000] }, + { type: "text", sub_type: "message", delay: 3800, message: "In", message_RU: "К нему" }, + { type: "spawn", func: "marker", args: [false, 180, 100, 3800, 1000, false, ["CENTER", "IN"]] }, + { type: "spawn", func: "marker", args: [false, 0, 100, 3800, 1000, false, ["CENTER", "IN"]] }, + { type: "spawn", func: "marker", args: [false, 90, 100, 3800, 1000, false, ["CENTER", "IN"]] }, + { type: "spawn", func: "marker", args: [false, 270, 100, 3800, 1000, false, ["CENTER", "IN"]] }, + { type: "text", sub_type: "alert", delay: 58000, message: "Mechanics soon...", message_RU: "Скоро стяжка..." } + ], + // стяжка -> волна (357 -> 110) + "s-3027-1000-357-0": [ + { type: "text", sub_type: "message", message: "Purple: Get Out", message_RU: "Стяжка | От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 20, 500, 2000, 5000] }, + { type: "text", sub_type: "alert", delay: 58000, message: "Mechanics soon...", message_RU: "Скоро стяжка..." } + ], + + //"s-3027-1000-114-0": [{ type: "text", sub_type: "message", message: "Eviscerate (slow)", message_RU: "Потрошение (медленно)" }], + //"s-3027-1000-130-0": [{ type: "text", sub_type: "message", message: "Target", message_RU: "Таргет" }], + "s-3027-1000-151-0": [{ type: "text", sub_type: "message", message: "Back teleport | Strike", message_RU: "Телепорт назад | Меч" }], // 151 149 148 -> 130 + "s-3027-1000-149-1": [{ type: "text", sub_type: "message", message: "Back teleport (Target)", message_RU: "Телепорт назад (таргет)" }], + "s-3027-1000-117-0": [{ type: "text", sub_type: "message", message: "Teleport (Target)", message_RU: "Телепорт (таргет)" }], // 117 -> 130 + "s-3027-1000-356-0": [{ type: "text", sub_type: "message", message: "Teleport (Target)", message_RU: "Телепорт (таргет)" }], // 356 -> 147 + "s-3027-1000-148-1": [{ type: "text", sub_type: "message", message: "Teleport (Target)", message_RU: "Телепорт (таргет)" }], + + "s-3027-1000-351-0": [ + { type: "text", sub_type: "message", message: "Shield!", message_RU: "Щит!" }, + { type: "func", func: shield_event } + ], + "s-3027-1000-401-0": [ + { type: "text", sub_type: "message", message: "30% AOE!", message_RU: "АОЕ" }, + { type: "text", sub_type: "message", delay: 1600, message: "Dodge!", message_RU: "Эвейд!" } + ] + }; }; \ No newline at end of file diff --git a/guides/3030.js b/guides/3030.js new file mode 100644 index 00000000..adcfe115 --- /dev/null +++ b/guides/3030.js @@ -0,0 +1,51 @@ +// Commander's Residence +// +// made by Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + + let print_stun = true; + + return { + // Maknakh + "nd-3030-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-3030-1000-114-0": [{ type: "text", sub_type: "message", message: "Push (Repel)", message_RU: "Откид" }], + "s-3030-1000-303-0": [{ type: "text", sub_type: "message", message: "Meteors AOE", message_RU: "Метеоры (АОЕ)" }], + "s-3030-1000-120-0": [{ type: "text", sub_type: "message", message: "Push Front", message_RU: "Откид вперед" }], + "s-3030-1000-104-0": [{ type: "text", sub_type: "message", message: "Fire Front", message_RU: "Передний огонь" }], + "s-3030-1000-113-0": [{ type: "text", sub_type: "message", message: "Circle AOE Front", message_RU: "Передний АОЕ круг" }], + "s-3030-1000-108-0": [{ type: "text", sub_type: "message", message: "Frontal Thorns", message_RU: "Передние шипы" }], + "s-3030-1000-305-0": [{ type: "text", sub_type: "message", message: "Circle AOE Front", message_RU: "Передний АОЕ круг" }], + "s-3030-1000-301-0": [{ type: "text", sub_type: "message", message: "Hit Frontal | Stun", message_RU: "Передний удар | Стан" }], + "s-3030-1000-307-0": [{ type: "text", sub_type: "message", message: "Tail Stun", message_RU: "Хвост (стан)" }], + "s-3030-1000-112-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-3030-1000-105-0": [{ type: "text", sub_type: "message", message: "Front Fire", message_RU: "Передний огонь" }], + "am-3030-1000-99000580": [{ type: "text", sub_type: "message", message: "Hit Thorns", message_RU: "Шипы" }], + + // LB-1 + "nd-3030-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-3030-2000-309-0": [ + { type: "text", sub_type: "message", message: "AOE circles | Stun", message_RU: "АОЕ круги | Стан", check_func: () => print_stun }, + { type: "func", func: () => print_stun = false }, + { type: "func", func: () => print_stun = true, delay: 4000 } + ], + "s-3030-2000-105-0": [ + { type: "text", sub_type: "message", message: "Laser Frontal (Stun)", message_RU: "Лазер (стан)", check_func: () => print_stun }, + { type: "func", func: () => print_stun = false }, + { type: "func", func: () => print_stun = true, delay: 15000 } + ], + "s-3030-2000-103-0": [{ type: "text", sub_type: "message", message: "Hit Frontal", message_RU: "Передний удар" }], + "s-3030-2000-101-0": [{ type: "text", sub_type: "message", message: "Claws Front", message_RU: "Когти" }], + "s-3030-2000-104-0": [{ type: "text", sub_type: "message", message: "Front Attack | Stun", message_RU: "Атака спереди | Стан" }], + "s-3030-2000-112-0": [{ type: "text", sub_type: "message", message: "Attack Behind (Fire)", message_RU: "Атака сзади (огонь)" }], + "s-3030-2000-305-0": [{ type: "text", sub_type: "message", message: "Circles AOE", message_RU: "Круги АОЕ" }], + "s-3030-2000-109-0": [{ type: "text", sub_type: "message", message: "Laser Back | Stun", message_RU: "Лазер назад | Стан" }], + "s-3030-2000-301-0": [{ type: "text", sub_type: "message", message: "Turn Debuff", message_RU: "Разворот (дебаф)" }] + }; +}; \ No newline at end of file diff --git a/guides/3032.js b/guides/3032.js new file mode 100644 index 00000000..55a3b3d0 --- /dev/null +++ b/guides/3032.js @@ -0,0 +1,122 @@ +// Akalath Quarantine (Guide) +// +// made by michengs + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = ES; + + let debuff = null; // default debuff + + return { + // 1 BOSS + "nd-3032-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + // Debuff removed + "die": [{ type: "func", func: () => { debuff = null; } }], + // Debuf added + "ae-0-0-30321000": [{ type: "func", func: () => debuff = 1 }], // AoE (red) + "ae-0-0-30321001": [{ type: "func", func: () => debuff = 2 }], // AoE (blue) + "am-3032-1000-30321000": [{ type: "func", func: () => debuff = 1 }], // Red + "am-3032-1000-30321001": [{ type: "func", func: () => debuff = 2 }], // Blue + // + "s-3032-1000-104-0": [{ type: "text", sub_type: "message", message: "Random Jump", message_RU: "Прыжок + Стан" }], + "s-3032-1000-105-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Поворот назад" }], + "s-3032-1000-110-0": [ + { type: "text", sub_type: "message", message: "Stun", message_RU: "Передний стан" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 175, 10, 260, 0, 6000] } + ], + "s-3032-1000-111-0": [ + { type: "text", sub_type: "message", message: "Left Slash", message_RU: "Левая полоса" }, + { type: "spawn", func: "vector", args: [553, 270, 200, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 200, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 6, 302, 270, 200, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 176, 502, 270, 200, 0, 2000] } + ], + "s-3032-1000-112-0": [ + { type: "text", sub_type: "message", message: "Right Slash", message_RU: "Правая полоса" }, + { type: "spawn", func: "vector", args: [553, 90, 200, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 200, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 20, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 20, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 354, 302, 90, 200, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 184, 502, 90, 200, 0, 2000] } + ], + "s-3032-1000-113-0": "s-3032-1000-111-0", + "s-3032-1000-114-0": "s-3032-1000-112-0", + "s-3032-1000-115-0": [ + { type: "text", sub_type: "message", message: "Back Attack", message_RU: "Удар назад" }, + { type: "spawn", func: "semicircle", args: [90, 280, 553, 0, 0, 15, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [90, 275, 553, 0, 0, 10, 250, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [90, 270, 553, 0, 0, 10, 340, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 150, 90, 150, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 150, 270, 150, 0, 2000] } + ], + "s-3032-1000-116-0": [ + { type: "text", sub_type: "message", message: "Kaia's Shield", message_RU: "Кайа", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Thrall of Protection", message_RU: "Кайа", class_position: "mystic" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 560, 0, 6000] } + ], + "s-3032-1000-3107-0": [ + { type: "text", sub_type: "message", message: "Smash", message_RU: "Конус вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 10, 1000, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 350, 1000, 0, 4000] } + ], + "s-3032-1000-3115-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-3032-1000-3116-0": [ + { type: "text", sub_type: "message", message: "Circles + Spin", message_RU: "Круги + Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 5000] } + ], + "s-3032-1000-3119-0": [ // red inside + { type: "text", sub_type: "message", message: "OUT (red)", message_RU: "ОТ НЕГО", check_func: () => debuff === 1, delay: 500 }, + { type: "text", sub_type: "message", message: "IN (blue)", message_RU: "К НЕМУ", check_func: () => debuff === 2, delay: 500 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 270, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 650, 0, 4000] } + ], + "s-3032-1000-3220-0": [ // blue inside + { type: "text", sub_type: "message", message: "IN (blue)", message_RU: "К НЕМУ", check_func: () => debuff === 1, delay: 500 }, + { type: "text", sub_type: "message", message: "OUT (red)", message_RU: "ОТ НЕГО", check_func: () => debuff === 2, delay: 500 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 270, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 650, 0, 4000] } + ], + + // 2 BOSS + "nd-3032-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-3032-2000-164-0": [{ type: "text", sub_type: "message", message: "Counter Attack (bleed)", message_RU: "Отпрыжка (Кровоток)" }], + "s-3032-2000-166-0": [{ type: "text", sub_type: "message", message: "Turn-back", message_RU: "Оборот назад" }], + "s-3032-2000-175-0": [ + { type: "text", sub_type: "message", message: "Incoming Stun", message_RU: "Рёв" }, + { type: "text", sub_type: "message", delay: 1500, message: "Dodge", message_RU: "Эвейд" } + ], + "s-3032-2000-178-0": [{ type: "text", sub_type: "message", message: "Scratching (bleed)", message_RU: "Крутилка (Кровоток)" }], + "s-3032-2000-181-0": [ + { type: "text", sub_type: "message", message: "Rock Throw", message_RU: "Полоса вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 10, 1000, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 350, 1000, 0, 4000] } + ], + "s-3032-2000-182-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-3032-2000-185-0": [ + { type: "text", sub_type: "message", message: "Big jump (Kaia's Shield)", message_RU: "Прыжок (кайа)", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Big jump (Thrall of Protection)", message_RU: "Прыжок (кайа)", class_position: "mystic" }, + { type: "text", sub_type: "alert", delay: 110000, message: "Big jump soon...", message_RU: "Скоро прыжок...", class_position: "heal" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 500, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 750, 0, 6000] } + ], + "s-3032-2000-202-0": [ + { type: "text", sub_type: "message", message: "Backstab", message_RU: "Назад + Вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 180, 500, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 180, 500, 0, 3000] } + ], + "s-3032-2000-207-0": [{ type: "text", sub_type: "message", message: "Phantom x5 (bleed)", message_RU: "Прыжки x5 (Кровоток)" }], + "s-3032-2000-212-0": [{ type: "text", sub_type: "message", message: "Flash (bleed)", message_RU: "Байт (Кровоток)" }] + }; +}; \ No newline at end of file diff --git a/guides/3034.js b/guides/3034.js new file mode 100644 index 00000000..334df750 --- /dev/null +++ b/guides/3034.js @@ -0,0 +1,444 @@ +// Rampaging RK-9 Kennel +// +// made by michengs / HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + let orb_notice = true; + let boss_seventy = false; + let msg_a = 3; + let msg_b = 3; + let mech_reverse = false; + let mech_notice = false; + + const mech_messages = { + 0: { message: "Out", message_RU: "От него" }, + 1: { message: "In", message_RU: "К нему" }, + 2: { message: "Wave", message_RU: "Волна" }, + 3: { message: "?", message_RU: "?" } + }; + + // Throwing orbs + function throwing_orb_event() { + if (orb_notice) { + orb_notice = false; + + handlers.text({ + sub_type: "message", + message: "Throwing Orb", + message_RU: "Бомба" + }); + + dispatch.setTimeout(() => orb_notice = true, 13000); + } + } + + // Core mechanics + function thirdboss_mech_event(skillid) { + if ([3034302, 3034303, 3034304, 3034311, 3034312].includes(skillid)) { + switch (skillid) { + // DM + case 3034302: // Out + msg_a = 0; + print_mech(true, false); + break; + + case 3034303: // In + msg_a = 1; + print_mech(true, false); + break; + + case 3034304: // Wave + msg_a = 2; + print_mech(true, false); + break; + + // QB + case 3034311: // STANDARD (1) + mech_reverse = false; + print_mech(true, true); + if (mech_notice) { + print_mech(false, false); + } + break; + + case 3034312: // REVERSE (0) + mech_reverse = true; + print_mech(true, true); + if (mech_notice) { + print_mech(false, false); + } + break; + } + } + // QB + // 0: Out 3034301 + // 1: In 3034302 + // 2: Wave 3034303 + if (skillid >= 0 && skillid < 3) { + msg_b = skillid; + print_mech(false, false); + msg_a = msg_b; + msg_b = 3; + + dispatch.setTimeout(() => { + print_mech(true, false); + }, 7000); + + mech_notice = true; + dispatch.setTimeout(() => mech_notice = false, 3000); + } + } + function print_mech(next, code) { + let message = "", + message_RU = "", + sub_type = "message"; + + if (next) { + message += "Next: "; + message_RU += "Далее: "; + sub_type = "notification"; + } + + if (mech_reverse) { + message += `${mech_messages[msg_b].message} + ${mech_messages[msg_a].message}`; + message_RU += `${mech_messages[msg_b].message_RU} + ${mech_messages[msg_a].message_RU}`; + } else { + message += `${mech_messages[msg_a].message} + ${mech_messages[msg_b].message}`; + message_RU += `${mech_messages[msg_a].message_RU} + ${mech_messages[msg_b].message_RU}`; + } + + if (code) { + message += `, Code: ${mech_reverse ? "0" : "1"}`; + message_RU += `, Код: ${mech_reverse ? "0" : "1"}`; + } + + handlers.text({ + sub_type: sub_type, + message: message, + message_RU: message_RU + }); + } + + // S-attacks + function thirdboss_sattack_event(skillid) { + // Safe: 116/119 [R] + 222-0 [R] > 222-1 [L] > 222-2 [R] > 326/327 + // Safe: 117/118 [L] + 223-0 [L] > 223-1 [R] > 223-2 [L] > 326/327 + const delay = boss_seventy ? 2000 : 0; + let duration = boss_seventy ? 800 : 900; + + if ([1160, 1190].includes(skillid)) { + handlers.text({ sub_type: "message", delay: delay, message: "Right Safe", message_RU: "Справа сейф" }); + } + if ([1170, 1180].includes(skillid)) { + handlers.text({ sub_type: "message", delay: delay, message: "Left Safe", message_RU: "Слева сейф" }); + } + if ([1160, 1170, 1180, 1190].includes(skillid) && boss_seventy) { // <70% + if (mech_reverse) { + handlers.text({ sub_type: "message", message: "Triple-S | Out", message_RU: "Трипл-эска | От него" }); + handlers.text({ sub_type: "message", delay: 4500, message: "Out", message_RU: "От него" }); + } else { + handlers.text({ sub_type: "message", message: "Triple-S | In", message_RU: "Трипл-эска | К нему" }); + handlers.text({ sub_type: "message", delay: 4500, message: "In", message_RU: "К нему" }); + } + handlers.spawn({ func: "circle", args: [false, 445, 0, 0, 10, 300, 5000, 2000] }); + duration = 2000; + } + if ([1160, 1161, 1162, 1163, 1190, 1191, 1192, 1193, 2220, 2222, 2231].includes(skillid)) { // right safe + handlers.event([ + { type: "spawn", func: "marker", args: [false, 160, 300, 0, duration, true, null] }, + { type: "spawn", func: "marker", args: [false, 340, 300, 0, duration, true, null] }, + { type: "spawn", func: "point", args: [202, 170, 200, 0, duration] }, + { type: "spawn", func: "point", args: [202, 350, 200, 0, duration] }, + { type: "spawn", func: "vector", args: [912, 170, 210, 180, 290, 0, duration] }, + { type: "spawn", func: "point", args: [912, 120, 250, 0, duration] }, + { type: "spawn", func: "point", args: [912, 130, 240, 0, duration] }, + { type: "spawn", func: "point", args: [912, 140, 230, 0, duration] }, + { type: "spawn", func: "point", args: [912, 150, 220, 0, duration] }, + { type: "spawn", func: "point", args: [912, 160, 210, 0, duration] }, + { type: "spawn", func: "point", args: [912, 300, 250, 0, duration] }, + { type: "spawn", func: "point", args: [912, 310, 240, 0, duration] }, + { type: "spawn", func: "point", args: [912, 320, 230, 0, duration] }, + { type: "spawn", func: "point", args: [912, 330, 220, 0, duration] }, + { type: "spawn", func: "point", args: [912, 340, 210, 0, duration] }, + { type: "spawn", func: "vector", args: [912, 350, 210, 0, 290, 0, duration] } + ]); + } + if ([1170, 1171, 1172, 1173, 1180, 1181, 1182, 1183, 2230, 2232, 2221].includes(skillid)) { // left safe + handlers.event([ + { type: "spawn", func: "marker", args: [false, 20, 300, 0, duration, true, null] }, + { type: "spawn", func: "marker", args: [false, 200, 300, 0, duration, true, null] }, + { type: "spawn", func: "point", args: [202, 10, 200, 0, duration] }, + { type: "spawn", func: "point", args: [202, 190, 200, 0, duration] }, + { type: "spawn", func: "vector", args: [912, 10, 210, 0, 290, 0, duration] }, + { type: "spawn", func: "point", args: [912, 20, 210, 0, duration] }, + { type: "spawn", func: "point", args: [912, 30, 220, 0, duration] }, + { type: "spawn", func: "point", args: [912, 40, 230, 0, duration] }, + { type: "spawn", func: "point", args: [912, 50, 240, 0, duration] }, + { type: "spawn", func: "point", args: [912, 60, 250, 0, duration] }, + { type: "spawn", func: "point", args: [912, 240, 250, 0, duration] }, + { type: "spawn", func: "point", args: [912, 230, 240, 0, duration] }, + { type: "spawn", func: "point", args: [912, 220, 230, 0, duration] }, + { type: "spawn", func: "point", args: [912, 210, 220, 0, duration] }, + { type: "spawn", func: "point", args: [912, 200, 210, 0, duration] }, + { type: "spawn", func: "vector", args: [912, 190, 210, 180, 290, 0, duration] } + ]); + } + } + + function thirdboss_start_event() { + boss_seventy = false; + } + + function thirdboss_seventy_event() { + boss_seventy = true; + } + + return { + // 1 BOSS + "nd-3034-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "qb-3034-1000-3034101": [{ type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }], + "qb-3034-1000-3034102": [{ type: "text", sub_type: "message", message: "AOE! Jump", message_RU: "AOE! Прыгай!!!" }], + "s-3034-1000-104-0": [{ type: "text", sub_type: "message", message: "Front Clip", message_RU: "Передний зажим" }], + "s-3034-1000-108-0": [{ type: "text", sub_type: "message", message: "Get Out", message_RU: "От него" }], // крутилка + "s-3034-1000-111-0": [{ type: "text", sub_type: "message", message: "Back + Front", message_RU: "Удар назад + вперед" }], + "s-3034-1000-112-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }], + "s-3034-1001-205-0": [{ type: "text", sub_type: "message", message: "Wind (Kaia)", message_RU: "Ветер (кайя)!" }], + "s-3034-1002-205-0": [{ type: "alias", id: "s-3034-1001-205-0" }], + "s-3034-1003-205-0": [{ type: "alias", id: "s-3034-1001-205-0" }], + "s-3034-1004-205-0": [{ type: "alias", id: "s-3034-1001-205-0" }], + "s-3034-1005-205-0": [{ type: "alias", id: "s-3034-1001-205-0" }], + "s-3034-1006-205-0": [{ type: "alias", id: "s-3034-1001-205-0" }], + "s-3034-1007-205-0": [{ type: "alias", id: "s-3034-1001-205-0" }], + "s-3034-1008-205-0": [{ type: "alias", id: "s-3034-1001-205-0" }], + "s-3034-1000-304-0": [{ type: "text", sub_type: "message", message: "Out", message_RU: "От него" }], + "s-3034-1000-305-0": [{ type: "text", sub_type: "message", message: "In", message_RU: "К нему" }], + "s-3034-1000-306-0": [{ type: "text", sub_type: "message", message: "Bombs", message_RU: "Бомбы" }], + "s-3034-1000-307-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Стяжка" }], + "s-3034-1000-309-0": [ + { type: "text", sub_type: "message", message: "Four Missile", message_RU: "Запуск 4 ракет" }, + { type: "text", sub_type: "message", delay: 6000, message: "5", message_RU: "5" }, + { type: "text", sub_type: "message", delay: 7000, message: "4", message_RU: "4" }, + { type: "text", sub_type: "message", delay: 8000, message: "3", message_RU: "3" }, + { type: "text", sub_type: "message", delay: 9000, message: "2", message_RU: "2" }, + { type: "text", sub_type: "message", delay: 10000, message: "1", message_RU: "1" }, + { type: "text", sub_type: "message", delay: 11000, message: "Jump", message_RU: "Прыгай!" } + ], + "s-3034-1000-311-0": [ + { type: "text", sub_type: "message", message: "Safe right front", message_RU: "Справа спереди сейф" }, + { type: "spawn", func: "marker", args: [false, 67, 120, 100, 12000, true, null] } + ], + "s-3034-1000-312-0": [ + { type: "text", sub_type: "message", message: "Safe right back", message_RU: "Справа сзади сейф" }, + { type: "spawn", func: "marker", args: [false, 112, 120, 100, 12000, true, null] } + ], + "s-3034-1000-313-0": [ + { type: "text", sub_type: "message", message: "Safe back left", message_RU: "Сзади слева сейф" }, + { type: "spawn", func: "marker", args: [false, 202, 120, 100, 12000, true, null] } + ], + "s-3034-1000-314-0": [ + { type: "text", sub_type: "message", message: "Safe front left", message_RU: "Спереди слева сейф" }, + { type: "spawn", func: "marker", args: [false, 337, 120, 100, 12000, true, null] } + ], + "s-3034-1000-315-0": [ + { type: "text", sub_type: "message", message: "Safe front right", message_RU: "Спереди справа сейф" }, + { type: "spawn", func: "marker", args: [false, 22, 120, 100, 12000, true, null] } + ], + "s-3034-1000-316-0": [ + { type: "text", sub_type: "message", message: "Safe back right", message_RU: "Сзади справа сейф" }, + { type: "spawn", func: "marker", args: [false, 157, 120, 100, 12000, true, null] } + ], + "s-3034-1000-317-0": [ + { type: "text", sub_type: "message", message: "Safe left back", message_RU: "Слева сзади сейф" }, + { type: "spawn", func: "marker", args: [false, 247, 120, 100, 12000, true, null] } + ], + "s-3034-1000-318-0": [ + { type: "text", sub_type: "message", message: "Safe left front", message_RU: "Слева спереди сейф" }, + { type: "spawn", func: "marker", args: [false, 292, 120, 100, 12000, true, null] } + ], + "s-3034-1000-319-0": [ + { type: "text", sub_type: "message", message: "Safe front right", message_RU: "Спереди справа сейф" }, + { type: "spawn", func: "marker", args: [false, 22, 120, 100, 12000, true, null] } + ], + "s-3034-1000-320-0": [ + { type: "text", sub_type: "message", message: "Safe back right", message_RU: "Сзади справа сейф" }, + { type: "spawn", func: "marker", args: [false, 157, 120, 100, 12000, true, null] } + ], + "s-3034-1000-321-0": [ + { type: "text", sub_type: "message", message: "Safe back left", message_RU: "Сзади слева сейф" }, + { type: "spawn", func: "marker", args: [false, 202, 120, 100, 12000, true, null] } + ], + "s-3034-1000-322-0": [ + { type: "text", sub_type: "message", message: "Safe left front", message_RU: "Слева спереди сейф" }, + { type: "spawn", func: "marker", args: [false, 292, 120, 100, 12000, true, null] } + ], + "s-3034-1000-323-0": [ + { type: "text", sub_type: "message", message: "Safe right front", message_RU: "Справа спереди сейф" }, + { type: "spawn", func: "marker", args: [false, 67, 120, 100, 12000, true, null] } + ], + "s-3034-1000-324-0": [ + { type: "text", sub_type: "message", message: "Safe right back", message_RU: "Справа сзади сейф" }, + { type: "spawn", func: "marker", args: [false, 112, 120, 100, 12000, true, null] } + ], + "s-3034-1000-325-0": [ + { type: "text", sub_type: "message", message: "Safe left back", message_RU: "Слева сзади сейф" }, + { type: "spawn", func: "marker", args: [false, 247, 120, 100, 12000, true, null] } + ], + "s-3034-1000-326-0": [ + { type: "text", sub_type: "message", message: "Safe front left", message_RU: "Спереди слева сейф" }, + { type: "spawn", func: "marker", args: [false, 337, 120, 100, 12000, true, null] } + ], + + // 2 BOSS + "nd-3034-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-3034-2000": [ + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -32904, y: 59440, z: 0 } }, + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -32900, y: 58824, z: 0 } }, + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -32372, y: 58520, z: 0 } }, + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -31842, y: 58833, z: 0 } }, + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -31846, y: 59444, z: 0 } }, + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -32379, y: 59750, z: 0 } } + ], + "s-3034-2000-102-0": [ + { type: "text", sub_type: "message", message: "Pizza Cutter", message_RU: "Пила" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 300, 12, 228, 0, 3000] } + ], + "s-3034-2000-105-0": [ + { type: "text", sub_type: "message", message: "360", message_RU: "Крутилка (откид)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 278, 0, 5000] } + ], + "s-3034-2000-108-0": [ + { type: "text", sub_type: "message", message: "Back Swipe", message_RU: "Откид назад" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 240, 380, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 120, 380, 0, 2000] } + ], + "s-3034-2000-301-0": [{ type: "func", func: throwing_orb_event }], + "s-3034-2000-304-0": [ + { type: "text", sub_type: "message", message: "Get Out", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 400, 0, 4000] } + ], + "s-3034-2000-305-0": [ + { type: "text", sub_type: "message", message: "In | Out", message_RU: "К нему | От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 200, 0, 3000] } + ], + // Safe: |||2|2||| > ||||1|||| > ||3|||3|| + "s-3034-2000-310-0": [{ type: "text", sub_type: "message", message: "2 - 1 - 3" }, + { type: "spawn", func: "marker", args: [false, 40, 220, 0, 1500, true, null] }, // 2 + { type: "spawn", func: "marker", args: [false, -40, 220, 0, 1500, true, null] }, // 2 + { type: "spawn", func: "marker", args: [false, 0, 150, 1600, 1500, true, null] }, // 1 + { type: "spawn", func: "marker", args: [false, 60, 300, 1600, 1500, true, null] }, // 3 + { type: "spawn", func: "marker", args: [false, -60, 300, 3200, 1500, true, null] } // 3 + ], + // Safe: ||||1|||| > ||3|||3|| > |||2|2||| + "s-3034-2000-311-0": [{ type: "text", sub_type: "message", message: "1 - 3 - 2" }, + { type: "spawn", func: "marker", args: [false, 0, 150, 0, 1500, true, null] }, // 1 + { type: "spawn", func: "marker", args: [false, 60, 300, 1600, 1500, true, null] }, // 3 + { type: "spawn", func: "marker", args: [false, -60, 300, 1600, 1500, true, null] }, // 3 + { type: "spawn", func: "marker", args: [false, 40, 220, 3200, 1500, true, null] }, // 2 + { type: "spawn", func: "marker", args: [false, -40, 220, 3200, 1500, true, null] } // 2 + ], + "s-3034-2007-201-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 500, 0, 8000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 500, 0, 8000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 500, 0, 8000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 500, 0, 8000] } + ], + "s-3034-2007-306-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 500, 0, 4000] } + ], + "s-3034-2007-307-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 500, 0, 12000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 500, 0, 12000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 500, 0, 12000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 500, 0, 12000] } + ], + + // 3 BOSS + "nd-3034-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-3034-3000-99": [{ type: "func", func: thirdboss_start_event }], + "h-3034-3000-70": [ + { type: "text", sub_type: "message", message: "70%", message_RU: "70%" }, + { type: "func", func: thirdboss_seventy_event } + ], + // + "dm-0-0-3034311": [{ type: "func", func: thirdboss_mech_event, args: [3034311] }], // 1 std + "dm-0-0-3034312": [{ type: "func", func: thirdboss_mech_event, args: [3034312] }], // 0 rev + "dm-0-0-3034302": [{ type: "func", func: thirdboss_mech_event, args: [3034302] }], // out + "dm-0-0-3034303": [{ type: "func", func: thirdboss_mech_event, args: [3034303] }], // in + "dm-0-0-3034304": [{ type: "func", func: thirdboss_mech_event, args: [3034304] }], // wave + "qb-3034-3000-3034301": [{ type: "func", func: thirdboss_mech_event, args: [0] }], // out + "qb-3034-3000-3034302": [{ type: "func", func: thirdboss_mech_event, args: [1] }], // in + "qb-3034-3000-3034303": [{ type: "func", func: thirdboss_mech_event, args: [2] }], // wave + // right safe S + "s-3034-3000-116-0": [{ type: "func", func: thirdboss_sattack_event, args: [1160] }], + "s-3034-3000-116-1": [{ type: "func", func: thirdboss_sattack_event, args: [1161] }], + "s-3034-3000-116-2": [{ type: "func", func: thirdboss_sattack_event, args: [1162] }], + "s-3034-3000-116-3": [{ type: "func", func: thirdboss_sattack_event, args: [1163] }], + "s-3034-3000-119-0": [{ type: "func", func: thirdboss_sattack_event, args: [1190] }], + "s-3034-3000-119-1": [{ type: "func", func: thirdboss_sattack_event, args: [1191] }], + "s-3034-3000-119-2": [{ type: "func", func: thirdboss_sattack_event, args: [1192] }], + "s-3034-3000-119-3": [{ type: "func", func: thirdboss_sattack_event, args: [1193] }], + "s-3034-3000-223-1": [{ type: "func", func: thirdboss_sattack_event, args: [2231] }], + "s-3034-3000-222-0": [{ type: "func", func: thirdboss_sattack_event, args: [2220] }], + "s-3034-3000-222-2": [{ type: "func", func: thirdboss_sattack_event, args: [2222] }], + // left safe S + "s-3034-3000-117-0": [{ type: "func", func: thirdboss_sattack_event, args: [1170] }], + "s-3034-3000-117-1": [{ type: "func", func: thirdboss_sattack_event, args: [1171] }], + "s-3034-3000-117-2": [{ type: "func", func: thirdboss_sattack_event, args: [1172] }], + "s-3034-3000-117-3": [{ type: "func", func: thirdboss_sattack_event, args: [1173] }], + "s-3034-3000-118-0": [{ type: "func", func: thirdboss_sattack_event, args: [1180] }], + "s-3034-3000-118-1": [{ type: "func", func: thirdboss_sattack_event, args: [1181] }], + "s-3034-3000-118-2": [{ type: "func", func: thirdboss_sattack_event, args: [1182] }], + "s-3034-3000-118-3": [{ type: "func", func: thirdboss_sattack_event, args: [1182] }], + "s-3034-3000-222-1": [{ type: "func", func: thirdboss_sattack_event, args: [2221] }], + "s-3034-3000-223-0": [{ type: "func", func: thirdboss_sattack_event, args: [2230] }], + "s-3034-3000-223-2": [{ type: "func", func: thirdboss_sattack_event, args: [2232] }], + // + "s-3034-3000-125-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Удар вперед" }], + "s-3034-3000-126-0": [{ type: "text", sub_type: "message", message: "Front | Back", message_RU: "Удар вперед | Удар назад" }], + "s-3034-3000-127-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }], + "s-3034-3000-128-0": [ + { type: "text", sub_type: "message", message: "Combo | Back Wave", message_RU: "Комба | Конус назад" }, + { type: "spawn", func: "vector", args: [553, 180, 40, 120, 1200, 2000, 3000] }, + { type: "spawn", func: "vector", args: [553, 180, 40, 240, 1200, 2000, 3000] } + ], + "s-3034-3000-129-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-3034-3000-305-0": [{ type: "spawn", func: "circle", args: [false, 912, 0, 0, 10, 300, 0, 6000] }], // 3034301 3034302 3034303 -> 305 + "s-3034-3000-321-0": [ + { type: "text", sub_type: "message", message: "Shield!", message_RU: "Щит!" }, + { type: "text", sub_type: "message", delay: 105000, message: "Shield in 10 seconds!", message_RU: "Через 10 сек. Щит!" } + ], + "s-3034-3001-308-0": [ + { type: "text", sub_type: "message", message: "Bait!", message_RU: "Байт!" }, + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 300, 0, 2000] } + ], + // Radar + "qb-3034-3000-3034312": [{ type: "text", sub_type: "message", message: "!!! Radar !!!", message_RU: "!!! Радар !!!" }], + "s-3034-3000-324-0": [ + { type: "text", sub_type: "message", message: "OUT", message_RU: "ОТ НЕГО" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 10, 250, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 12, 200, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 14, 150, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 18, 100, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 50, 50, 0, 3000] } + ], + "s-3034-3000-325-0": [ + { type: "text", sub_type: "message", message: "IN", message_RU: "К НЕМУ" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 3000] } + ] + }; +}; \ No newline at end of file diff --git a/guides/3036.js b/guides/3036.js new file mode 100644 index 00000000..c9573f5d --- /dev/null +++ b/guides/3036.js @@ -0,0 +1,269 @@ +// Sky Cruiser (Hard) +// +// made by michengs / HSDN / icebrog + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + let triple_attack = false; + let back_print = false; + let back_time = 0; + let end_back_time = 0; + let is_one_back = false; + let timer1 = null; + let timer2 = null; + let enrage = 0; + let enrage_time = 0; + let counter = 0; + // let is_hp_79 = false; + let is_hp_49 = false; + let mech_total = 0; + let mech_counter = 0; + + const mech_messages = { + 2: { message: "Two Split Strikes", message_RU: "Два откида" }, + 3: { message: "Three Split Strikes", message_RU: "Три откида" }, + 4: { message: "Four Split Strikes", message_RU: "Четыре откида" } + }; + + function boss_backcombo_event() { + dispatch.clearTimeout(timer2); + counter++; + + if (counter >= 2) { + handlers.text({ + sub_type: "message", + message: "Back Combo", + message_RU: "Задняя комба" + }); + } + + timer2 = dispatch.setTimeout(() => counter = 0, enrage == 1 ? 2200 : 2500); + } + + function boss_backattack_event() { + end_back_time = new Date() - back_time; + + if (!back_print) { + back_print = true; + is_one_back = end_back_time > 0 && end_back_time < 1500; + + handlers.text({ + sub_type: "message", + message: is_one_back ? "Back!" : "!!!", + message_RU: is_one_back ? "Задняя!" : "!!!" + }); + } + + dispatch.setTimeout(() => back_print = false, 3500); + } + + function boss_tripleattack_event() { + dispatch.clearTimeout(timer1); + triple_attack = true; + timer1 = dispatch.setTimeout(() => triple_attack = false, 3500); + } + + function boss_mech_eventP1(skillid) { + handlers.event([ + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1500] } + ]); + + if ([1402].includes(skillid)) { + handlers.event([ // left + { type: "text", sub_type: "alert", speech: false, + message: "Left", + message_RU: "Левый" + }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] } + ]); + } else { + handlers.event([ // right + { type: "text", sub_type: "alert", speech: false, + message: "Right", + message_RU: "Правый" + }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] } + ]); + } + } + + function boss_mech_eventP2(skillid) { + enrage = new Date() - enrage_time >= 35100 ? 0 : 1; + mech_total = triple_attack ? (is_hp_49 ? 4 : 3) : 2; // is_hp_79 + + if (mech_counter == 0) { + handlers.text({ sub_type: "message", + message: mech_messages[mech_total].message, + message_RU: mech_messages[mech_total].message_RU + }); + + mech_counter = mech_total; + } + + mech_counter--; + + handlers.event([ + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1500] } + ]); + + // if (([1401, 1402].includes(skillid) ? (skillid % 2 + enrage) % 2 : skillid % 2) == 0) { + if (([1401, 1402].includes(skillid) ? (skillid % 2) % 2 : skillid % 2) == 0) { + handlers.event([ // left + { type: "text", sub_type: "alert", speech: false, + message: `(${mech_total - mech_counter}) Left`, + message_RU: `(${mech_total - mech_counter}) Левый` + }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] } + ]); + } else { + handlers.event([ // right + { type: "text", sub_type: "alert", speech: false, + message: `(${mech_total - mech_counter}) Right`, + message_RU: `(${mech_total - mech_counter}) Правый` + }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] } + ]); + } + } + + return { + // Phase 1 + "ns-3036-1001": [ + { type: "spawn", func: "marker", args: [false, 281, -500, 100, 60000000, false] }, + { type: "spawn", func: "point", args: [513, 261, 500, 100, 60000000] } + ], + "nd-3036-1001": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-3036-1001-1112-0": [{ type: "text", sub_type: "message", message: "Back Jump", message_RU: "Прыжок назад" }], + "s-3036-1001-1401-0": [{ type: "func", func: boss_mech_eventP1, args: [1401] }], + "s-3036-1001-1402-0": [{ type: "func", func: boss_mech_eventP1, args: [1402] }], + "s-3036-1001-1303-0": [{ type: "text", sub_type: "message", message: "Spin Attack", message_RU: "Крутилка" }], + "s-3036-1001-1101-0": [{ type: "func", func: boss_backattack_event }], + "s-3036-1001-1102-0": [{ type: "func", func: () => back_time = new Date() }], + "s-3036-1001-1103-0": [{ type: "func", func: boss_backcombo_event }], + "s-3036-1001-1106-0": [{ type: "func", func: boss_backcombo_event }], + "s-3036-1001-2101-0": "s-3036-1001-1101-0", + "s-3036-1001-2102-0": "s-3036-1001-1102-0", + "s-3036-1001-2103-0": "s-3036-1001-1103-0", + "s-3036-1001-2106-0": "s-3036-1001-1106-0", + "s-3036-1001-2112-0": "s-3036-1001-1112-0", + // Phase 2 + "ns-3036-1000": [ + { type: "func", func: () => enrage = 0 }, + { type: "func", func: () => mech_counter = 0 }, + { type: "spawn", func: "marker", args: [false, 281, -500, 100, 60000000, false] }, + { type: "spawn", func: "point", args: [513, 261, 500, 100, 60000000] } + ], + "nd-3036-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "rb-3036-1000": [ + // { type: "text", sub_type: "message", message: "Enrage On", message_RU: "Рага" }, + { type: "func", func: () => enrage = 1 }, + { type: "func", func: () => enrage_time = new Date() } + ], + "re-3036-1000": [ + // { type: "text", sub_type: "message", message: "Enrage Off", message_RU: "Конец раги" }, + { type: "func", func: () => enrage = 0 } + ], + // "h-3036-1000-100": [{ type: "func", func: () => is_hp_79 = false }], + "h-3036-1000-100": [{ type: "func", func: () => is_hp_49 = false }], + "h-3036-1000-94": [{ type: "text", sub_type: "message", message: "94%" }], + // "h-3036-1000-79": [{ type: "text", sub_type: "message", message: "79%" }, { type: "func", func: () => is_hp_79 = true }], + "h-3036-1000-49": [{ type: "text", sub_type: "message", message: "49%" }, { type: "func", func: () => is_hp_49 = true }], + "h-3036-1000-35": [{ type: "text", sub_type: "message", message: "Watch the countdown", message_RU: "Смотреть обратный отсчет" }], + "h-3036-1000-34": [{ type: "text", sub_type: "message", message: "Third layer of shrinking ring preparation", message_RU: "Третий этап подготовки кольца" }], + "h-3036-1000-65": [{ type: "text", sub_type: "message", message: "Second layer of shrinking ring preparation", message_RU: "Второй этап подготовки кольца" }], + "s-3036-1000-1101-0": [{ type: "func", func: boss_backattack_event }], + "s-3036-1000-1102-0": [{ type: "func", func: () => back_time = new Date() }], + "s-3036-1000-1103-0": [{ type: "func", func: boss_backcombo_event }], + "s-3036-1000-1106-0": [{ type: "func", func: boss_backcombo_event }], + "s-3036-1000-1112-0": [{ type: "text", sub_type: "message", message: "Back Move", message_RU: "Рывок назад" }], + "s-3036-1000-1114-0": [ + { type: "text", sub_type: "message", message: "Invisible Fire", message_RU: "Невидимые полосы" }, + { type: "spawn", func: "vector", args: [553, 90, 150, 0, 1300, 0, 5830] }, + { type: "spawn", func: "vector", args: [553, 90, 75, 0, 1300, 0, 5830] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 1300, 0, 5830] }, + { type: "spawn", func: "vector", args: [553, 270, 75, 0, 1300, 0, 5830] }, + { type: "spawn", func: "vector", args: [553, 270, 150, 0, 1300, 0, 5830] } + ], + "s-3036-1000-1115-0": [ + { type: "text", sub_type: "message", message: "3" }, + { type: "text", sub_type: "message", delay: 1000, message: "2" }, + { type: "text", sub_type: "message", delay: 2000, message: "1" }, + { type: "text", sub_type: "message", delay: 3200, message: "Dodge", message_RU: "Эвейд" } + ], + "s-3036-1000-1117-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Удар вперед" }], + "s-3036-1000-1118-0": [ + { type: "text", sub_type: "message", message: "Front Cut | Dodge", message_RU: "Передний разрез | Эвейд" }, + { type: "spawn", func: "semicircle", args: [0, 60, 553, 0, 0, 15, 60, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 55, 553, 0, 0, 15, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 45, 553, 0, 0, 10, 250, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 45, 553, 0, 0, 10, 340, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [300, 360, 553, 0, 0, 15, 60, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [305, 360, 553, 0, 0, 15, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [310, 360, 553, 0, 0, 10, 250, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [315, 360, 553, 0, 0, 10, 340, 0, 2000] } + ], + "s-3036-1000-1302-0": [ + { type: "text", sub_type: "message", message: "AOE", message_RU: "AOE" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 500, 100, 6000] } + ], + "s-3036-1000-2101-0": "s-3036-1000-1101-0", + "s-3036-1000-2102-0": "s-3036-1000-1102-0", + "s-3036-1000-1303-0": [{ type: "text", sub_type: "message", message: "Spin Attack", message_RU: "Крутилка" }], + "s-3036-1000-1401-0": [{ type: "func", func: boss_mech_eventP2, args: [1401] }], + "s-3036-1000-1402-0": [{ type: "func", func: boss_mech_eventP2, args: [1402] }], + "s-3036-1000-1701-0": [{ type: "func", func: boss_mech_eventP2, args: [1701] }], // right + "s-3036-1000-1702-0": [{ type: "func", func: boss_mech_eventP2, args: [1702] }], // left + "s-3036-1000-1801-0": [{ type: "text", sub_type: "message", message: "Incoming Stun", message_RU: "Стан" }], + "s-3036-1000-1805-0": [ + { type: "text", sub_type: "message", message: "Between", message_RU: "Между" }, + { type: "text", sub_type: "message", delay: 2150, message: "IN", message_RU: "К нему" }, + { type: "text", sub_type: "message", delay: 3050, message: "All | OUT", message_RU: "Общая | От него" }, + { type: "text", sub_type: "message", delay: 3500, message: "No Cleanse", message_RU: "Без клинса" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 250, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 430, 0, 6000] } + ], + "s-3036-1000-1806-0": [ + { type: "text", sub_type: "message", message: "IN", message_RU: "К нему" }, + { type: "text", sub_type: "message", delay: 2150, message: "Between", message_RU: "Между" }, + { type: "text", sub_type: "message", delay: 3050, message: "All | IN", message_RU: "Общая | К нему" }, + { type: "text", sub_type: "message", delay: 3500, message: "Cleanse", message_RU: "Клинс" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 250, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 430, 0, 6000] } + ], + "s-3036-1000-2103-0": "s-3036-1000-1103-0", + "s-3036-1000-2106-0": "s-3036-1000-1106-0", + "s-3036-1000-2112-0": "s-3036-1000-1112-0", + "s-3036-1000-2114-0": "s-3036-1000-1114-0", + "s-3036-1000-2115-0": "s-3036-1000-1115-0", + "s-3036-1000-2117-0": "s-3036-1000-1117-0", + "s-3036-1000-2118-0": "s-3036-1000-1118-0", + "qb-3036-1000-3036039": [ + { type: "text", sub_type: "message", delay: 75000, message: "Triple Soon", message_RU: "Скоро тройная" }, + { type: "text", sub_type: "notification", delay: 75000, message: "Triple Soon", message_RU: "Скоро тройная", speech: false }, + { type: "func", func: boss_tripleattack_event } + ], + "qb-3036-1000-3036040": [{ type: "func", func: boss_tripleattack_event }], + "qb-3036-1000-3036041": [{ type: "func", func: boss_tripleattack_event }] + }; +}; \ No newline at end of file diff --git a/guides/3037.js b/guides/3037.js new file mode 100644 index 00000000..61cdd752 --- /dev/null +++ b/guides/3037.js @@ -0,0 +1,318 @@ +// Bahaar's Sanctum (Guide) +// +// made by michengs / Emilia-s2 / HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + let print_loading = true; + let print_lasers = true; + + function waves_event() { + handlers.event([ + { type: "spawn", func: "vector", args: [553, 90, 50, 0, 500, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 0, 500, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 90, 50, 180, 500, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 180, 500, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 6, 400, 0, 6000] }, + { type: "text", sub_type: "alert", delay: 60000, message: "Waves soon...", message_RU: "Скоро волны..." } + ]); + } + + return { + // PHASE 1 + "nd-3037-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + // Not enraged + "s-3037-1000-1103-0": [ + { type: "text", sub_type: "message", message: "Front (Dodge)", message_RU: "Удар вперед (эвейд)" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 400, 8, 350, 100, 3000] } + ], + "s-3037-1000-1108-0": [ + { type: "text", sub_type: "message", message: "Back Throw", message_RU: "Стан назад" }, + { type: "spawn", func: "circle", args: [false, 553, 180, 250, 12, 300, 100, 3000] } + ], + "s-3037-1000-1111-0": [ + { type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 185, 500, 8, 490, 1500, 2000] } + ], + "s-3037-1000-1113-0": [{ type: "text", sub_type: "message", message: "Throw (Bait)", message_RU: "Молот (байт)" }], + "s-3037-1000-1114-0": [ + { type: "text", sub_type: "message", message: "Front Slam", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 260, 10, 320, 100, 3000] } + ], + "s-3037-1000-1115-0": [{ type: "text", sub_type: "message", delay: 1100, message: "Dodge", message_RU: "Эвейд" }], // Knockup + "s-3037-1000-1116-0": [ + { type: "text", sub_type: "message", message: "Donuts (In)", message_RU: "Бублики (к нему)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 12, 290, 0, 2000] } + ], + "s-3037-1000-1116-1": [ + { type: "text", sub_type: "message", message: "Out > In", message_RU: "От него > К нему" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 290, 0, 4000] } + ], + "s-3037-1000-1117-0": [{ type: "text", sub_type: "message", message: "Jump (Bait)", message_RU: "Прыжок (байт)" }], + "s-3037-1000-1118-0": [{ type: "text", sub_type: "message", message: "Jump (Tank)", message_RU: "Прыжок (танк)" }], + "s-3037-1000-1118-1": [{ type: "spawn", func: "circle", args: [false, 553, 0, 400, 12, 300, 100, 2000] }], + "s-3037-1000-1121-0": [ + { type: "text", sub_type: "message", message: "Waves (Left)", message_RU: "Волны (левая)" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 37, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 143, 125, 0, 2533, false, ["safe", "safe"]] } + ], + "s-3037-1000-1131-0": [ + { type: "text", sub_type: "message", message: "Front | Left Scratch", message_RU: "Удар вперед | Левый черкаш" }, + { type: "text", sub_type: "message", delay: 1200, message: "Dodge", message_RU: "Эвейд" }, + { type: "spawn", func: "circle", args: [false, 553, 358, 340, 6, 630, 100, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 115, 186, 800, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 90, 115, 6, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 270, 250, 6, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 270, 250, 186, 800, 0, 3500] } + ], + "s-3037-1000-1137-0": [ + { type: "text", sub_type: "message", message: "Hammer Back", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 185, 500, 8, 490, 100, 2000] } + ], + "s-3037-1000-1138-0": [{ type: "text", sub_type: "message", delay: 1100, message: "Dodge", message_RU: "Эвейд" }], // Knockup (Bait) + "s-3037-1000-1139-0": [ + { type: "text", sub_type: "message", delay: 550, message: "Dodge!", message_RU: "Эвейд!" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 20, 160, 0, 2000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 12, 220, 0, 2000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 10, 300, 0, 2000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 8, 360, 0, 2000] } + ], + "s-3037-1000-1140-0": [ + { type: "text", sub_type: "message", message: "Waves (Right)", message_RU: "Волны (правая)" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 323, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 217, 125, 0, 2533, false, ["safe", "safe"]] } + ], + // Enraged + "s-3037-1000-2103-0": "s-3037-1000-1103-0", + "s-3037-1000-2108-0": "s-3037-1000-1108-0", + "s-3037-1000-2111-0": "s-3037-1000-1111-0", + "s-3037-1000-2113-0": "s-3037-1000-1113-0", + "s-3037-1000-2114-0": "s-3037-1000-1114-0", + "s-3037-1000-2115-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], // Knockup + "s-3037-1000-2116-0": "s-3037-1000-1116-0", + "s-3037-1000-2116-1": "s-3037-1000-1116-1", + "s-3037-1000-2117-0": "s-3037-1000-1117-0", + "s-3037-1000-2118-0": "s-3037-1000-1118-0", + "s-3037-1000-2118-1": "s-3037-1000-1118-1", + "s-3037-1000-2121-0": "s-3037-1000-1121-0", + "s-3037-1000-2131-0": "s-3037-1000-1131-0", + "s-3037-1000-2137-0": "s-3037-1000-1137-0", + "s-3037-1000-2138-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], // Knockup (Bait) + "s-3037-1000-2139-0": "s-3037-1000-1139-0", + "s-3037-1000-2140-0": "s-3037-1000-1140-0", + + // PHASE 2 + "nd-3037-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-3037-2000": [ + { type: "spawn", func: "marker", args: [false, 0, -700, 100, 60000000, false, ["Throne", "Throne Direction"]] }, + { type: "spawn", func: "point", args: [513, 0, 800, 100, 60000000] }, + { type: "func", func: () => print_loading = true }, + { type: "func", func: () => print_lasers = true } + ], + // Not enraged + "s-3037-2000-1101-0": [ + { type: "text", sub_type: "message", message: "4 Hit Combo", message_RU: "270 (сейф-зона)" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 195, 500, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 270, 500, 0, 3000] } + ], + "s-3037-2000-1103-0": [ + { type: "text", sub_type: "message", message: "Front (Dodge)", message_RU: "Удар вперед (эвейд)" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 400, 8, 350, 100, 3000] } + ], + "s-3037-2000-1107-0": [{ type: "text", sub_type: "message", message: "4 Hit (3)", message_RU: "4" }], + "s-3037-2000-1108-0": [ + { type: "text", sub_type: "message", message: "Back Throw", message_RU: "Стан назад" }, + { type: "spawn", func: "circle", args: [false, 553, 180, 250, 12, 300, 100, 3000] } + ], + "s-3037-2000-1111-0": [ + { type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 185, 500, 8, 490, 1500, 2000] } + ], + "s-3037-2000-1112-0": [ + { type: "text", sub_type: "message", message: "Perfect Defense (Fast)", message_RU: "Идеальный блок (быстро)" }, + { type: "text", sub_type: "message", delay: 1200, message: "Block", message_RU: "Блок" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 220, 12, 210, 100, 3000] } + ], + "s-3037-2000-1113-0": [{ type: "text", sub_type: "message", message: "Throw (Bait)", message_RU: "Молот (байт)" }], + "s-3037-2000-1114-0": [ + { type: "text", sub_type: "message", message: "Front Slam", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 260, 10, 320, 100, 3000] } + ], + "s-3037-2000-1115-0": [{ type: "text", sub_type: "message", delay: 1100, message: "Dodge", message_RU: "Эвейд" }], // Knockup + "s-3037-2000-1116-0": [ + { type: "text", sub_type: "message", message: "Donuts (In)", message_RU: "Бублики (к нему)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 12, 290, 100, 2000] } + ], + "s-3037-2000-1116-1": [ + { type: "text", sub_type: "message", message: "Out > In", message_RU: "От него > К нему" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 290, 100, 4000] } + ], + "s-3037-2000-1117-0": [{ type: "text", sub_type: "message", message: "Jump (Bait)", message_RU: "Прыжок (байт)" }], + "s-3037-2000-1118-0": [{ type: "text", sub_type: "message", message: "Jump (Tank)", message_RU: "Прыжок (танк)" }], + "s-3037-2000-1118-1": [{ type: "spawn", func: "circle", args: [false, 553, 0, 400, 12, 300, 100, 2000] }], + "s-3037-2000-1119-0": [ + { type: "text", sub_type: "message", message: "Left Swipe", message_RU: "Слева" }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 270, 300, 100, 2000, true, null] } + ], + "s-3037-2000-1120-0": [ + { type: "text", sub_type: "message", message: "Right Swipe", message_RU: "Справа" }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 90, 300, 100, 2000, true, null] } + ], + "s-3037-2000-1121-0": [ + { type: "text", sub_type: "message", message: "Waves (Left)", message_RU: "Волны (левая)" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 37, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 143, 125, 0, 2533, false, ["safe", "safe"]] } + ], + "s-3037-2000-1122-0": [ + { type: "text", sub_type: "message", message: "Waves (Left) 3nd fast", message_RU: "Волны (левая) 3-я быстрая" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 37, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 143, 125, 0, 2533, false, ["safe", "safe"]] } + ], + "s-3037-2000-1123-0": [ + { type: "text", sub_type: "message", message: "Waves (Left) 2nd fast", message_RU: "Волны (левая) 2-я быстрая" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 37, 125, 0, 2500, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 143, 125, 0, 2500, false, ["safe", "safe"]] } + ], + "s-3037-2000-1125-0": [ + { type: "text", sub_type: "message", message: "Front | Right Scratch", message_RU: "Удар вперед | Правый черкаш" }, + { type: "text", sub_type: "message", delay: 1750, message: "Dodge", message_RU: "Эвейд" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 400, 8, 350, 100, 2000] }, + { type: "spawn", func: "vector", args: [553, 60, 290, 175, 800, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 60, 290, -5, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 290, 95, -5, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 290, 95, 175, 800, 0, 3500] } + ], + "s-3037-2000-1131-0": [ + { type: "text", sub_type: "message", message: "Front | Left Scratch", message_RU: "Удар вперед | Левый черкаш" }, + { type: "text", sub_type: "message", delay: 1200, message: "Dodge", message_RU: "Эвейд" }, + { type: "spawn", func: "circle", args: [false, 553, 358, 340, 6, 630, 100, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 115, 186, 800, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 90, 115, 6, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 270, 250, 6, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 270, 250, 186, 800, 0, 3500] } + ], + "s-3037-2000-1135-0": [ + { type: "text", sub_type: "message", message: "Perfect Defense", message_RU: "Идеальный блок" }, + { type: "text", sub_type: "message", delay: 800, message: "Block", message_RU: "Блок" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 220, 12, 210, 100, 3000] } + ], + "s-3037-2000-1137-0": [ + { type: "text", sub_type: "message", message: "Hammer back", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 185, 500, 8, 490, 100, 2000] } + ], + "s-3037-2000-1138-0": [{ type: "text", sub_type: "message", delay: 900, message: "Dodge", message_RU: "Эвейд" }], // Knockup (Bait) + "s-3037-2000-1139-0": [{ type: "text", sub_type: "message", delay: 200, message: "Dodge!", message_RU: "Эвейд!" }], + "s-3037-2000-1140-0": [ + { type: "text", sub_type: "message", message: "Waves (Right)", message_RU: "Волны (правая)" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 323, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 217, 125, 0, 2533, false, ["safe", "safe"]] } + ], + "s-3037-2000-1141-0": [ + { type: "text", sub_type: "message", message: "Waves (Right) 3nd fast", message_RU: "Волны (правая) 3-я быстрая" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 323, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 217, 125, 0, 2533, false, ["safe", "safe"]] } + ], + "s-3037-2000-1142-0": [ + { type: "text", sub_type: "message", message: "Waves (Right) 2nd fast", message_RU: "Волны (правая) 2-я быстрая" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 323, 125, 0, 2500, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 217, 125, 0, 2500, false, ["safe", "safe"]] } + ], + "s-3037-2000-1307-0": [ + { type: "text", sub_type: "message", message: "!", message_RU: "!" }, + { type: "text", sub_type: "message", delay: 20000, message: "Last aerolite", message_RU: "Последний метеор" } + ], + "s-3037-2000-1308-0": [{ type: "text", sub_type: "message", message: "Stun (1)", message_RU: "Стан (1)" }], + "s-3037-2000-1309-0": [{ type: "text", sub_type: "message", message: "Stun (2)", message_RU: "Стан (2)" }], + "s-3037-2000-1310-0": [{ type: "text", sub_type: "message", message: "Stun (3)", message_RU: "Стан (3)" }], + "s-3037-2000-1311-0": [ + { type: "text", sub_type: "message", message: "Wrath (Kaia)", message_RU: "Облепиха (кайа)" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 6000] } + ], + "s-3037-2000-1312-0": [ + { type: "text", sub_type: "message", message: "Wrath (Kaia)", message_RU: "Облепиха (кайа)" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 6000] } + ], + // Enraged + "s-3037-2000-2101-0": "s-3037-2000-1101-0", + "s-3037-2000-2103-0": "s-3037-2000-1103-0", + "s-3037-2000-2107-0": "s-3037-2000-1107-0", + "s-3037-2000-2108-0": "s-3037-2000-1108-0", + "s-3037-2000-2111-0": "s-3037-2000-1111-0", + "s-3037-2000-2112-0": [ + { type: "text", sub_type: "message", delay: 1000, message: "Perfect Defense x2 (Slow)", message_RU: "Идеальный блок x2 (медленно)" }, + { type: "text", sub_type: "message", delay: 2400, message: "Block", message_RU: "Блок" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 220, 12, 210, 100, 4000] } + ], + "s-3037-2000-2113-0": "s-3037-2000-1113-0", + "s-3037-2000-2114-0": "s-3037-2000-1114-0", + "s-3037-2000-2115-0": [{ type: "text", sub_type: "message", delay: 100, message: "Dodge", message_RU: "Эвейд" }], // Knockup + "s-3037-2000-2116-0": "s-3037-2000-1116-0", + "s-3037-2000-2116-1": "s-3037-2000-1116-1", + "s-3037-2000-2117-0": "s-3037-2000-1117-0", + "s-3037-2000-2118-0": "s-3037-2000-1118-0", + "s-3037-2000-2118-1": "s-3037-2000-1118-1", + "s-3037-2000-2119-0": "s-3037-2000-1119-0", + "s-3037-2000-2120-0": "s-3037-2000-1120-0", + "s-3037-2000-2121-0": "s-3037-2000-1121-0", + "s-3037-2000-2122-0": "s-3037-2000-1122-0", + "s-3037-2000-2123-0": "s-3037-2000-1123-0", + "s-3037-2000-2125-0": "s-3037-2000-1125-0", + "s-3037-2000-2131-0": "s-3037-2000-1131-0", + "s-3037-2000-2135-0": [ + { type: "text", sub_type: "message", message: "Perfect Defense x2", message_RU: "Идеальный блок x2" }, + { type: "text", sub_type: "message", delay: 800, message: "Block", message_RU: "Блок" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 220, 12, 210, 100, 4000] } + ], + "s-3037-2000-2137-0": "s-3037-2000-1137-0", + "s-3037-2000-2138-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], // Knockup (Bait) + "s-3037-2000-2139-0": "s-3037-2000-1139-0", + "s-3037-2000-2140-0": "s-3037-2000-1140-0", + "s-3037-2000-2141-0": "s-3037-2000-1141-0", + "s-3037-2000-2142-0": "s-3037-2000-1142-0", + // + "s-3037-2500-1201-0": [ + { type: "event", check_func: () => print_loading, args: [ + { type: "text", sub_type: "alert", message: "Loading lasers...", message_RU: "Зарядка лазеров..." }, + { type: "func", func: () => print_loading = false } + ] } + ], + "s-3037-2500-1305-0": [ + { type: "event", check_func: () => print_lasers, args: [ + { type: "text", sub_type: "message", message: "Laser", message_RU: "Лазер" }, + { type: "func", func: () => print_lasers = false }, + { type: "func", func: () => print_lasers = true, delay: 4000 } + ] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 3000, 0, 4000] } + ], + "ab-3037-2000-30372303": [{ type: "text", sub_type: "message", message: "Plague/Regress", message_RU: "Регресс" }], + "ab-3037-2000-30372304": [ + { type: "text", sub_type: "notification", message: "Stun", message_RU: "Стан!", speech: false }, + { type: "text", sub_type: "message", message: "Stun", message_RU: "Стан!" } + ] + }; +}; \ No newline at end of file diff --git a/guides/3101.js b/guides/3101.js index 86f7212c..84647cd0 100644 --- a/guides/3101.js +++ b/guides/3101.js @@ -1,89 +1,83 @@ -// паркин -let notice_guide = true; -let player, entity, library, effect; +// Gossamer Vault +// +// made by michengs / Emilia-s2 - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 时间) -function Spawnitem2(item,degrees,distance, intervalDegrees, radius, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - // First boss - // "h-3101-1000-100": [{"type": "func","func": guid_voice}], - // 1 boss +module.exports = (dispatch, handlers, guide, lang) => { + return { + // 1 BOSS + "nd-3101-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-3101-1000-104-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Stun Frontal", message_RU: "Стан (танк)" }], + "s-3101-1000-112-0": [{ type: "text", sub_type: "message", message: "Left + Right", message_RU: "Лево + Право" }], + "s-3101-1000-139-0": [ + { type: "text", sub_type: "message", message: "Back + Front (Fast)", message_RU: "Вперед + Назад (фаст)" }, + { type: "spawn", func: "vector", args: [553, 2, 0, 70, 800, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 2, 0, 110, 800, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 2, 0, 250, 800, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 2, 0, 290, 800, 0, 2500] } + ], + "s-3101-1000-124-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Stun Frontal", message_RU: "Стан (танк)" }], + "s-3101-1000-127-0": [ + { type: "text", sub_type: "message", message: "Back (Fast)", message_RU: "Полоса (фаст)" }, + { type: "spawn", func: "vector", args: [553, 90, 139, 173, 800, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 139, -173, 800, 0, 2000] } + ], + "s-3101-1000-131-0": [ + { type: "text", sub_type: "message", message: "Back Wave (Fast)", message_RU: "Волна назад (фаст)" }, + { type: "spawn", func: "vector", args: [553, 0, 100, 112, 800, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 100, -112, 800, 0, 2000] } + ], + "s-3101-1000-132-0": [{ type: "text", sub_type: "message", message: "Left + Right (Fast)", message_RU: "Лево + Право (фаст)" }], + "s-3101-1000-133-0": [ + { type: "text", sub_type: "message", message: "Jump (Fast)", message_RU: "Прыжок (фаст)" }, + { type: "text", sub_type: "message", delay: 1400, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3101-1000-138-0": [ + { type: "text", sub_type: "message", message: "Jump P (Fast)", message_RU: "Прыжок (фаст)" }, + { type: "text", sub_type: "message", delay: 1400, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3101-1000-148-0": [ + { type: "text", sub_type: "message", message: "Right Hand (Flying)", message_RU: "Правая рука (подлет)" }, + { type: "spawn", func: "circle", args: [false, 553, 20, 150, 10, 320, 0, 4000] } + ], + "s-3101-1000-149-0": [ + { type: "text", sub_type: "message", message: "Left Hand (Flying)", message_RU: "Левая рука (подлет)" }, + { type: "spawn", func: "circle", args: [false, 553, 340, 150, 10, 320, 0, 4000] } + ], + "s-3101-1000-151-0": [{ type: "text", sub_type: "message", message: "Stun Attack!", message_RU: "Стан!" }], + "s-3101-1000-313-0": [ + { type: "text", sub_type: "message", message: "Circles (Slow)", message_RU: "Кольцо" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 75, 10, 300, 0, 6000] } + ], + "s-3101-1000-314-0": [ + { type: "text", sub_type: "message", message: "Circles (Fast)", message_RU: "Кольцо (фаст)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 75, 10, 300, 0, 6000] } + ], - //"s-3101-1000-121-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right","message_RU": "право" }], - //"s-3101-1000-122-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left","message_RU": "лево" }], - "s-3101-1000-124-0": [{"type": "text","class_position":"tank","sub_type": "msgcg","message": "Stun attack","message_RU": "Стан (фаст)"}], - "s-3101-1000-127-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "back","message_RU": "|Полоса| (фаст)"}, - {"type": "text","class_position":"heal","sub_type": "message","message": "back","message_RU": "|Полоса| (фаст)"}], - //"s-3101-1000-128-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "Triple Attack","message_RU": "Комба"}], - "s-3101-1000-131-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "Ranged DPS attention","message_RU": "Волна назад (фаст)"}, - {"type": "text","class_position":"heal","sub_type": "message","message": "Ranged DPS attention","message_RU": "Волна назад (фаст)"}], - "s-3101-1000-132-0": [{"type": "text","sub_type": "message","message": "left right ←→","message_RU": "лево + право (фаст)" }], - "s-3101-1000-133-0": [{"type": "text","sub_type": "message","message": "Jump (Fast)","message_RU": "прыжок (фаст) " }], - "s-3101-1000-138-0": [{"type": "text","sub_type": "message","message": "Jump P (Fast)","message_RU": "прыжок (фаст)" }], - "s-3101-1000-139-0": [{"type": "text","sub_type": "message","message": "Back + Front (Fast)","message_RU": "вперед + назад (фаст)" }], - //"s-3101-1000-141-0": [{"type": "text","class_position":"tank","sub_type": "message","message_RU": "? (慢)" }], - "s-3101-1000-142-0": [{"type": "text","class_position":"tank","sub_type": "message","message_RU": "правая + левая"}], - "s-3101-1000-148-0": [{"type": "text","sub_type": "message","message_RU": "Правая рука(подлет)" }], - "s-3101-1000-149-0": [{"type": "text","sub_type": "message","message_RU": "Левая рука(подлет)" }], - "s-3101-1000-305-0": [{"type": "text","sub_type": "message","message": "Pizza","message_RU": "Pizza" }], - "s-3101-1000-313-0": [{"type": "text","sub_type": "msgcp","message": "Circles (Slow)","message_RU": "Кольцо"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,75,15,300,6000)}], - - - - - //2 boss - //"s-3101-2000-101-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right left","message_RU": "правая левая" }], - //"s-3101-2000-102-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left right","message_RU": "левая правая" }], - //"s-3101-2000-103-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "spin","message_RU": "поворот" }], - //"s-3101-2000-104-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right","message_RU": "правая" }], - //"s-3101-2000-105-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_RU": "вперед" }], - //"s-3101-2000-107-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left","message_RU": "левая" }], - "s-3101-2000-108-0": [{"type": "text","sub_type": "message","message": "Back attack!","message_RU": "Вперед | Назад" }], - //"s-3101-2000-109-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "quaternion Attack","message_RU": "4 комбо" }], - "s-3101-2000-110-0": [{"type": "text","sub_type": "message","message_RU": "?" }], - "s-3101-2000-114-0": [{"type": "text","sub_type": "message","message_RU": "??" }], - - "s-3101-2000-116-0": [{"type": "text","sub_type": "message","message": "back","message_RU": "назад" }], - "s-3101-2000-150-0": [{"type": "text","sub_type": "message","message_RU": "фантом" }], - //"s-3101-2000-201-0": [{"type": "text","sub_type": "message","message": "back 8m","message_RU": "Движение назад 8 м" }], - //"s-3101-2000-202-0": [{"type": "text","sub_type": "message","message": "front 8m","message_RU": "Движение вперед 8м" }], - // "s-3101-2000-203-0": [{"type": "func","func": skilld_event.bind(null, 203)}], - // "s-3101-2000-204-0": [{"type": "func","func": skilld_event.bind(null, 204)}], - - "s-3101-2000-211-0": [{"type": "text","sub_type": "message","message": "front","message_RU": "???" }], - "s-3101-2000-226-0": [{"type": "text","sub_type": "message","message_RU": "????" }], - "s-3101-2000-228-0": [ {"type": "text","sub_type": "message","message": "Team up","message_RU": "Камни (вместе)!!!" }], - "s-3101-2000-230-0": [{"type": "text","sub_type": "msgcg","message": "AOE","message_RU": "AOE" }], - "s-3101-2000-231-0": [{"type": "text","sub_type": "msgcp","message": "OUT safe ↓","message_RU": "От"},{"type": "func","func": Spawnitem2.bind(null,912,0,0,15,300,3000)}], - "s-3101-2000-232-0": [{"type": "text","sub_type": "msgcp","message": "IN safe ↑","message_RU": "К"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,300,3000)}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,875,3000)} - ], - "s-3101-2000-234-0": [{"type": "text","sub_type": "message","message": "Debuffs","message_RU": "Debuffs" }], - "s-3101-2000-235-0": [{"type": "text","sub_type": "message","message": "Debuffs","message_RU": "Debuffs" }] + // 2 BOSS + "nd-3101-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-3101-2000-108-0": [{ type: "text", sub_type: "message", message: "Back Attack!", message_RU: "Откид назад!" }], + "s-3101-2000-150-0": [{ type: "text", sub_type: "message", message: "Phantom", message_RU: "Фантом" }], + "s-3101-2000-228-0": [{ type: "text", sub_type: "message", message: "Team Up", message_RU: "Камни (вместе)!" }], + "s-3101-2000-230-0": [ + { type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ" }, + { type: "text", sub_type: "message", delay: 1300, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3101-2000-231-0": [ + { type: "text", sub_type: "message", message: "Out Safe", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 3000] } + ], + "s-3101-2000-232-0": [ + { type: "text", sub_type: "message", message: "In Safe", message_RU: "К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 3, 1000, 0, 3000] } + ], + "s-3101-2000-235-0": [{ type: "text", sub_type: "message", message: "Debuffs", message_RU: "Дебаффы" }], + "s-3101-2000-236-0": [{ type: "text", sub_type: "message", message: "Counter Attack (Bait)", message_RU: "Конус вперед (байт)" }] + }; }; \ No newline at end of file diff --git a/guides/3102.js b/guides/3102.js new file mode 100644 index 00000000..d93d4889 --- /dev/null +++ b/guides/3102.js @@ -0,0 +1,181 @@ +// Draakon Arena +// +// made by Kuroine / HSDN / Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + return { + "nd-3102-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + + // Ress bait / range check + "s-3102-1000-1107-0": [{ type: "text", sub_type: "message", message: "Spectral Throw (Bait)", message_RU: "Спектральный бросок (байт)" }, + { type: "text", sub_type: "message", delay: 1400, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3102-1000-2107-0": [{ type: "text", sub_type: "message", message: "Spectral Throw (Bait)", message_RU: "Спектральный бросок (байт)" }, + { type: "text", sub_type: "message", delay: 1400, message: "Dodge!", message_RU: "Эвейд!" } + ], + // Basic attacks + "s-3102-1000-1103-0": [{ type: "text", sub_type: "message", message: "2 Hits | Bleed", message_RU: "2 удара | Кровоток" }], + "s-3102-1000-2103-0": [{ type: "text", sub_type: "message", message: "2 Hits | Bleed", message_RU: "2 удара | Кровоток" }], + "s-3102-1000-1113-0": [{ type: "text", sub_type: "message", message: "4 Hits Combo", message_RU: "4 удара комба" }], + "s-3102-1000-2113-0": [{ type: "text", sub_type: "message", message: "4 Hits Combo", message_RU: "4 удара комба" }], + "s-3102-1000-1105-0": [{ type: "text", sub_type: "message", message: "Uppercut | Stun", message_RU: "Удар снизу | Стан" }], + "s-3102-1000-2105-0": [{ type: "text", sub_type: "message", message: "Uppercut | Stun", message_RU: "Удар снизу | Стан" }], + "s-3102-1000-1106-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "s-3102-1000-2106-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + // 120 > 114 + "s-3102-1000-1120-0": [ + { type: "text", sub_type: "message", delay: 400, message: "Stun", message_RU: "Несколько ударов | Стан (AOE)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 8, 425, 100, 3000] } + ], + "s-3102-1000-2120-0": [ + { type: "text", sub_type: "message", delay: 400, message: "Stun", message_RU: "Несколько ударов | Стан (AOE)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 8, 425, 100, 3000] } + ], + "s-3102-1000-1114-0": [ + { type: "text", sub_type: "message", delay: 140, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3102-1000-2114-0": [ + { type: "text", sub_type: "message", delay: 220, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3102-1000-1111-0": [{ type: "text", sub_type: "message", message: "Leap (Stun)", message_RU: "Прыжок (стан)" }, + { type: "text", sub_type: "message", delay: 1800, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3102-1000-2111-0": [{ type: "text", sub_type: "message", message: "Leap (Stun)", message_RU: "Прыжок (стан)" }, + { type: "text", sub_type: "message", delay: 1750, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3102-1000-1115-0": [ + { type: "text", sub_type: "message", message: "AOE Bombs (Gather)", message_RU: "AOE бомбы (вместе)" } + ], + "s-3102-1000-2115-0": [ + { type: "text", sub_type: "message", message: "AOE Bombs (Gather)", message_RU: "AOE бомбы (вместе)" } + ], + "s-3102-1000-1112-0": [ + { type: "text", sub_type: "message", message: "Front | Back Kick", message_RU: "Разворот | Откид назад" }, + { type: "spawn", func: "vector", args: [553, 70, 110, 160, 350, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 290, 110, -160, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 210, 360, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 200, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 190, 343, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 150, 360, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 160, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 170, 343, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 180, 340, 0, 3000] } + ], + "s-3102-1000-2112-0": [ + { type: "text", sub_type: "message", message: "Front | Back Kick", message_RU: "Разворот | Откид назад" }, + { type: "spawn", func: "vector", args: [553, 70, 110, 160, 350, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 290, 110, -160, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 210, 360, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 200, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 190, 343, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 150, 360, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 160, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 170, 343, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 180, 340, 0, 3000] } + ], + "s-3102-1000-1110-0": [ + { type: "text", sub_type: "message", message: "Donuts + Wave", message_RU: "Бублики + Волна" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 6, 650, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 4000] } + ], + "s-3102-1000-2110-0": [ + { type: "text", sub_type: "message", message: "Donuts + Wave", message_RU: "Бублики + Волна" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 6, 650, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 4000] } + ], + "s-3102-1000-1109-0": [ + { type: "text", sub_type: "message", message: "Dodge (Knockdown)", message_RU: "Эвейд (опрокид)" }, + { type: "text", sub_type: "message", delay: 1300, message: "Dodge (Spin)", message_RU: "Эвейд (крутилка)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 100, 8, 420, 0, 1000] }, + { type: "spawn", func: "circle", delay: 1000, args: [true, 553, 180, 0, 8, 415, 0, 3000] } + ], + "s-3102-1000-2109-0": [ + { type: "text", sub_type: "message", message: "Dodge (Knockdown)", message_RU: "Эвейд (опрокид)" }, + { type: "text", sub_type: "message", delay: 1300, message: "Dodge (Spin)", message_RU: "Эвейд (крутилка)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 100, 8, 420, 0, 1000] }, + { type: "spawn", func: "circle", delay: 1000, args: [true, 553, 180, 0, 8, 415, 0, 3000] } + ], + "s-3102-1000-1304-0": [{ type: "text", sub_type: "message", message: "Shield!", message_RU: "ЩИТ!" }], + "s-3102-1000-2304-0": [{ type: "text", sub_type: "message", message: "Shield!", message_RU: "ЩИТ!" }], + "ab-3102-1000-31021006": [ + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ], + + // Right Foot + "s-3102-1000-1121-0": [ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 550, 0, 3000] }, + { type: "spawn", func: "marker", args: [false, 80, 300, 0, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 280, 300, 0, 3500, true, null] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 60, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 120, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 240, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 300, 450, 0, 3500] }, + { type: "text", sub_type: "message", delay: 1700, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3102-1000-2121-0": [ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 550, 0, 3000] }, + { type: "spawn", func: "marker", args: [false, 80, 300, 0, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 280, 300, 0, 3500, true, null] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 60, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 120, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 240, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 300, 450, 0, 3500] }, + { type: "text", sub_type: "message", delay: 1720, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3102-1000-1122-0": [{ type: "spawn", func: "marker", args: [false, 0, 200, 500, 2000, true, null] }], + "s-3102-1000-1123-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 295, 550, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 85, 550, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [85, 295, 912, 0, 0, 6, 550, 0, 2000] } + ], + "s-3102-1000-2122-0": [{ type: "spawn", func: "marker", args: [false, 0, 200, 500, 2000, true, null] }], + "s-3102-1000-2123-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 295, 550, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 85, 550, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [85, 295, 912, 0, 0, 6, 550, 0, 2000] } + ], + // Left Foot + "s-3102-1000-1124-0": [ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 550, 0, 3000] }, + { type: "spawn", func: "marker", args: [false, 80, 300, 0, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 280, 300, 0, 3500, true, null] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 60, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 120, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 240, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 300, 450, 0, 3500] }, + { type: "text", sub_type: "message", delay: 1550, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3102-1000-2124-0": [ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 550, 0, 3000] }, + { type: "spawn", func: "marker", args: [false, 80, 300, 0, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 280, 300, 0, 3500, true, null] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 60, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 120, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 240, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 300, 450, 0, 3500] }, + { type: "text", sub_type: "message", delay: 1550, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3102-1000-1125-0": [{ type: "spawn", func: "marker", args: [false, 0, 200, 500, 3000, true, null] }], + "s-3102-1000-1126-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 295, 550, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 85, 550, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [85, 295, 912, 0, 0, 6, 550, 0, 2000] } + ], + "s-3102-1000-2125-0": [{ type: "spawn", func: "marker", args: [false, 0, 200, 500, 3000, true, null] }], + "s-3102-1000-2126-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 295, 550, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 85, 550, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [85, 295, 912, 0, 0, 6, 550, 0, 2000] } + ] + }; +}; \ No newline at end of file diff --git a/guides/3103.js b/guides/3103.js new file mode 100644 index 00000000..5a885046 --- /dev/null +++ b/guides/3103.js @@ -0,0 +1,157 @@ +// Forbidden Arena [Undying Warlord] +// +// made by HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + let timer1 = null; + let print_target = true; + let in_bait = false; + let gettingserious = false; // ~70% attacks unlocked like Flip Kick Stun + + function back_kick_event(skillid) { + if ([107, 310].includes(skillid)) { // Bait/Back Flip + in_bait = true; + dispatch.setTimeout(() => in_bait = false, 3500); + } + + if (skillid == 116) { // Haymaker + if (in_bait) { + handlers.text({ + sub_type: "message", + message: "Haymaker", + message_RU: "Мощный удар" + }); + } else { // 116 -> 146 + handlers.text({ + sub_type: "message", + message: "Haymaker | Back Kick", + message_RU: "Мощный удар | Откид назад" + }); + } + } + } + + function target_attack_event() { + if (print_target) { + dispatch.clearTimeout(timer1); + print_target = false; + dispatch.setTimeout(() => print_target = true, 5000); + + timer1 = dispatch.setTimeout(() => { + handlers.text({ + sub_type: "alert", + message: "Target attacks soon...", + message_RU: "Скоро таргет-атака..." + }); + }, 65000); + } + } + + return { + "nd-3103-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-3103-1000-99": [{ type: "func", func: () => gettingserious = false }], + "h-3103-1000-70": [{ type: "func", func: () => gettingserious = true }], + + //"s-3103-1000-101-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Punch", message_RU: "Серия ударов" }], + "s-3103-1000-113-0": [ + { type: "text", sub_type: "message", message: "Roundhouse Kick | Stun", message_RU: "Удар с разворота | Стан", class_position: "tank", check_func: () => gettingserious }, + { type: "text", sub_type: "message", message: "Roundhouse Kick", message_RU: "Удар с разворота", class_position: "tank", check_func: () => !gettingserious } + ], + "s-3103-1000-111-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-3103-1000-120-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + //"s-3103-1000-102-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Combo", message_RU: "Комба" }], // 102 153/154 115/116 + "s-3103-1000-153-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Two Kicks", message_RU: "Два удара" }], // 153 108 + //"s-3103-1000-108-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Floor Punch", message_RU: "Удар о землю" }], + //"s-3103-1000-127-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Many Kicks", message_RU: "Несколько ударов" }], + + "s-3103-1000-121-0": [{ type: "text", sub_type: "message", message: "Flip Kick (Stun)", message_RU: "Удар в воздухе (стан)" }], + + "qb-3103-1000-31031000": [{ type: "text", sub_type: "message", message: "Bait (Dodge)", message_RU: "Байт (эвейд)" }], + // "s-3103-1000-124-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], // 305 124 + "s-3103-1000-107-0": [{ type: "func", func: back_kick_event, args: [107] }], + + "s-3103-1000-110-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 12, 420, 0, 3000] } + ], + "s-3103-1000-114-0": [ + { type: "text", sub_type: "message", message: "Leap (Knockdown)", message_RU: "Прыжок (опрокид)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 12, 240, 0, 2000] } + ], + //"s-3103-1000-154-0": [{ type: "text", sub_type: "message", message: "Jumping Kick", message_RU: "Удар в прыжке" }], // 154 310 116 + // 310 116 + "s-3103-1000-310-0": [ + { type: "text", sub_type: "message", message: "Back Flip | Haymaker", message_RU: "Сальто назад | Мощный удар" }, + { type: "func", func: back_kick_event, args: [310] } + ], + "s-3103-1000-116-0": [{ type: "func", func: back_kick_event, args: [116] }], // Haymaker + "s-3103-1000-115-0": [{ type: "text", sub_type: "message", message: "Haymaker (Tank)", message_RU: "Мощный удар (танк)" }], + "s-3103-1000-131-0": [{ type: "text", sub_type: "message", message: "Rhythmic Blows", message_RU: "Ураганная серия" }], // 131 132 133 + // 116 146 + "s-3103-1000-146-0": [ + { type: "text", sub_type: "message", message: "Back Kick", message_RU: "Откид назад" }, // 116 146 + { type: "spawn", func: "vector", args: [553, 90, 120, 170, 600, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 270, 120, -170, 600, 0, 3000] } + ], + + // Shield + "qb-3103-1000-31031006": [{ type: "text", sub_type: "message", message: "Shield!", message_RU: "Щит!" }], + + // Target "Ha" attacks 308 31031007 125 + "qb-3103-1000-31031007": [ + { type: "text", sub_type: "message", message: "Kick (Target)", message_RU: "Удар (таргет)", class_position: "tank" }, + { type: "text", sub_type: "message", message: "Dodge (Target)", message_RU: "Эвейд (таргет) ", class_position: ["heal", "dps"] }, + { type: "func", func: target_attack_event } + ], + // "s-3103-1000-125-0": [{ type: "text", sub_type: "message", message: "Kick", message_RU: "Удар" }], // 308 125 + + // Donuts + "qb-3103-1000-31031008": [{ type: "text", sub_type: "message", message: "Donuts: Out > In > Dodge", message_RU: "Бублики: От него > К нему > Эвейд" }], // 31031008 303/304 117 155 + "qb-3103-1000-31031009": [{ type: "text", sub_type: "message", message: "Donuts: In > Out > Dodge", message_RU: "Бублики: К нему > От него > Эвейд" }], // 31031009 303/304 118 155 + "s-3103-1000-303-0": [ + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 630, 0, 7000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 250, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 490, 0, 5000] } + ], + "s-3103-1000-304-0": [ + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 630, 0, 7000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 250, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 490, 0, 5000] } + ], + "s-3103-1000-155-0": [{ type: "text", sub_type: "message", delay: 50, message: "Dodge", message_RU: "Эвейд" }], + + // Stun 142 148 129 + "s-3103-1000-142-0": [{ type: "text", sub_type: "message", message: "Stun | Back Wave", message_RU: "Стан | Волна назад" }], + "s-3103-1000-148-0": [ + { type: "text", sub_type: "message", delay: 1300, message: "Dodge", message_RU: "Эвейд" }, + { type: "spawn", func: "circle", args: [true, 912, 0, -10, 12, 300, 0, 3000] } + ], + "s-3103-1000-129-0": [ + { type: "text", sub_type: "message", message: "Back Wave", message_RU: "Волна назад (откид)" }, + { type: "spawn", func: "vector", args: [912, 90, 210, 390, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 90, 140, 380, 350, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 90, 70, 370, 400, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 90, 0, 0, 400, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 270, 70, -370, 400, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 270, 140, -380, 350, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 270, 210, -390, 300, 0, 2000] } + ], + + // Jump 143-0 143-1 + "qb-3103-1000-31031001": [{ type: "text", sub_type: "message", message: "Bait on res", message_RU: "Байт на рес" }], + "s-3103-1000-143-0": [{ type: "text", sub_type: "message", message: "Jump (Stun)", message_RU: "Прыжок (стан)" }], + "s-3103-1000-143-1": [{ type: "spawn", func: "circle", args: [true, 553, 0, 0, 14, 240, 0, 2000] }], + + // AoE 313 314 + "s-3103-1000-313-0": [{ type: "text", sub_type: "message", message: "AOE", message_RU: "AOE" }], + "s-3103-1000-314-0": [{ type: "text", sub_type: "message", message: "Get Out", message_RU: "Выйти" }], + + // Debuff + "ae-0-0-31031011": [{ type: "text", sub_type: "alert", message: "Debuff Stack", message_RU: "Дебафф (стаки)" }], + "am-3103-1000-31031011": [{ type: "text", sub_type: "alert", message: "Debuff Stack", message_RU: "Дебафф (стаки)" }], + "am-3103-1000-31031012": [{ type: "text", sub_type: "alert", message: "Debuff Stack", message_RU: "Дебафф (стаки)" }] + }; +}; \ No newline at end of file diff --git a/guides/3104.js b/guides/3104.js new file mode 100644 index 00000000..64722d19 --- /dev/null +++ b/guides/3104.js @@ -0,0 +1,96 @@ +// Catalepticon +// +// made by HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + + let combo_count = 0; + + const is_mt = dispatch._mod.connection.metadata.serverList[dispatch._mod.serverId].name.includes("MT"); + + dispatch.hook("S_ABNORMALITY_BEGIN", dispatch._mod.majorPatchVersion >= 107 ? 5 : 4, event => { + if (event.id === 31040001) + handlers.marker({ id: event.target, color: "yellow", sub_delay: 1000000 }); + }); + + return { + "ns-3104-1000": [{ type: "func", func: () => combo_count = 0 }], + "nd-3104-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "marker_remove_all" } + ], + + "qb-3104-1000-32042000": [ + { type: "text", sub_type: "message", message: "Arrows", message_RU: "Стрелки" }, + { type: "func", func: () => combo_count = 0 } + ], + "qb-3104-1000-32041000": [ + { type: "text", sub_type: "message", message: "Bait (Target)", message_RU: "Байт (таргет)" } + ], + "h-3104-1000-50": [{ type: "text", sub_type: "message", message: "50%", message_RU: "50%", check_func: () => is_mt }], + "h-3104-1000-35": [{ type: "text", sub_type: "message", message: "35%", message_RU: "35%", check_func: () => !is_mt }], + + "s-3104-1000-104-0": [ + { type: "text", sub_type: "message", message: "Stun (AOE)", message_RU: "Стан (АОЕ)" }, + { type: "spawn", func: "circle", args: [true, 553, 180, -50, 10, 380, 0, 2000] } + ], + "s-3104-1000-107-0": [ + { type: "text", sub_type: "message", message: "Line Forward + Side Lines", message_RU: "Полоса вперед + полосы по бокам" }, + { type: "spawn", func: "vector", args: [553, 90, 50, 0, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 0, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 50, 180, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 180, 1000, 0, 2000] }, + { type: "func", func: () => combo_count++ }, + { type: "spawn", func: "marker", args: [false, 0, 150, 0, 3000, true, null], check_func: () => combo_count == 2, delay: 1000 } + ], + "s-3104-1000-110-0": [ + { type: "text", sub_type: "message", message: "Target + Wave", message_RU: "Таргет + волна" }, + { type: "spawn", func: "circle", args: [true, 553, 180, -500, 10, 350, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 180, -50, 120, 500, 0, 2000], delay: 1500 }, + { type: "spawn", func: "vector", args: [553, 180, -50, 240, 500, 0, 2000], delay: 1500 }, + { type: "func", func: () => combo_count++ }, + { type: "spawn", func: "marker", args: [false, 0, 150, 0, 3000, true, null], check_func: () => combo_count == 2, delay: 2500 } + ], + "s-3104-1000-112-0": [{ type: "text", sub_type: "message", message: "Wave Forward", message_RU: "Волна вперед" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 70, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 290, 500, 0, 2000] } + ], + "s-3104-1000-114-0": [{ type: "text", sub_type: "message", message: "Inner + Outer AOEs", message_RU: "Внутреннее + внешнее АОЕ" }], + "s-3104-1000-116-0": [ + { type: "text", sub_type: "message", message: "Line Forward", message_RU: "Полоса вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 50, 0, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 0, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 50, 180, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 180, 1000, 0, 2000] } + ], + "s-3104-1000-119-0": [{ type: "text", sub_type: "message", message: "Two Strikes", message_RU: "Два удара" }], + "s-3104-1000-120-0": [ + { type: "text", sub_type: "message", message: "Two Strikes + Stun (AOE)", message_RU: "Два удара + стан (АОЕ)" }, + { type: "text", sub_type: "message", message: "Stun (AOE)", message_RU: "Стан (АОЕ)", delay: 1500 }, + { type: "spawn", func: "circle", args: [true, 553, 180, -100, 10, 700, 0, 2500], delay: 1500 } + ], + "s-3104-1000-123-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Круговая" }], + "s-3104-1000-125-0": [{ type: "text", sub_type: "message", message: "Stun (Tank)", message_RU: "Стан (танк)" }], + "s-3104-1000-127-0": [ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "marker", args: [false, 0, 150, 0, 2000, true, null] } + ], + "s-3104-1000-128-0": [ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "marker", args: [false, 0, 150, 0, 2000, true, null] } + ], + "s-3104-1000-148-0": [ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "marker", args: [false, 150, 150, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 340, 150, 0, 2000, true, null], delay: 1500 } + ], + "s-3104-1000-156-0": [{ type: "text", sub_type: "message", message: "Get Skulls", message_RU: "Черепа" }], + "s-3104-1000-157-0": [{ type: "text", sub_type: "message", message: "Gather!", message_RU: "Собраться!", delay: 2000 }], + "s-3104-1000-158-0": [{ type: "text", sub_type: "message", message: "Gather!", message_RU: "Собраться!", delay: 5000 }], + "s-3104-1000-159-0": [ + { type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ" }, + { type: "marker_remove_all", delay: 3000 } + ] + }; +}; \ No newline at end of file diff --git a/guides/3106.js b/guides/3106.js new file mode 100644 index 00000000..12f1ff43 --- /dev/null +++ b/guides/3106.js @@ -0,0 +1,154 @@ +// Killing Grounds +// +// made by HSDN / Kuroine / Minghan / Vampic + +module.exports = (dispatch, handlers, guide, lang) => { + + const { player } = dispatch.require.library; + + let combo_start = false; + + let stack = 0; + let stackTimer = null; + + function stack_add_event() { + stack++; + dispatch.clearTimeout(stackTimer); + stackTimer = dispatch.setTimeout(() => stack = 0, 86000); + } + + function stack_remove_event() { + dispatch.clearTimeout(stackTimer); + stack = 0; + } + + dispatch.hook("S_USER_EFFECT", 1, event => { + if (event.circle == 3 && event.operation == 1) { + if (dispatch._mod.game.me.is(event.target)) { + handlers.text({ sub_type: "notification", message: "Snowball on you", message_RU: "Снежок на тебе" }); + } else { + const member = player.playersInParty.get(event.target); + if (member) { + handlers.text({ + sub_type: "message", + message: `Snowball on ${member.name}`, + message_RU: `Снежок на ${member.name}` + }); + } else { + handlers.text({ sub_type: "message", message: "Snowball", message_RU: "Снежок" }); + } + } + handlers.marker({ id: event.target, color: "yellow", sub_delay: 1000000 }); + } else if (event.circle == 3 && event.operation == 2) { + handlers.marker_remove_all({ delay: 1000 }); + } + }); + + dispatch.hook("S_ABNORMALITY_BEGIN", dispatch._mod.majorPatchVersion >= 107 ? 5 : 4, event => { + if (event.id === 32060024) { + if (dispatch._mod.game.me.is(event.target)) { + handlers.text({ sub_type: "notification", message: "Eye on you", message_RU: "Глазик на тебе" }); + } else { + const member = player.playersInParty.get(event.target); + if (member) { + handlers.text({ + sub_type: "message", + message: `Eye on ${member.name}`, + message_RU: `Глазик на ${member.name}` + }); + } else { + handlers.text({ sub_type: "message", message: "Eye", message_RU: "Глазик" }); + } + } + } + }); + + return { + "nd-3106-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "marker_remove_all" }, + { type: "func", func: stack_remove_event } + ], + "ns-3106-1000": [ + { type: "spawn", func: "marker", args: [false, 3, -700, 100, 60000000, false, ["Giant", "Giant Direction"]] }, + { type: "func", func: stack_remove_event } + ], + + "die": [{ type: "func", func: stack_remove_event }], + + "am-3106-1000-32060007": [{ type: "func", func: stack_add_event }], + "ar-3106-1000-32060007": [{ type: "func", func: stack_remove_event }], + + "qb-3106-1000-32061001": [ + { type: "text", sub_type: "message", message: "Close - IN", message_RU: "Ближние - к нему", check_func: () => stack === 0 }, + { type: "text", sub_type: "message", message: "Close - OUT", message_RU: "Ближние - от него", check_func: () => stack !== 0 }, + { type: "text", sub_type: "alert", message: "Soon to give stun...", message_RU: "Скоро давать стан...", delay: 2000 } + ], + "qb-3106-1000-32061002": [ + { type: "text", sub_type: "message", message: "Furthest - OUT", message_RU: "Дальние - от него", check_func: () => stack === 0 }, + { type: "text", sub_type: "message", message: "Furthest - IN", message_RU: "Дальние - к нему", check_func: () => stack !== 0 }, + { type: "text", sub_type: "alert", message: "Soon to give stun...", message_RU: "Скоро давать стан...", delay: 2000 } + ], + + "s-3106-1000-102-0": [ + { type: "func", func: () => combo_start = true }, + { type: "func", func: () => combo_start = false, delay: 1400 } + ], + "s-3106-1000-105-0": [{ type: "text", sub_type: "message", message: "Knockback Spin (Kaia)", message_RU: "Оборот (Кайа)", check_func: () => combo_start === true }], + "s-3106-1000-106-0": [ + { type: "text", sub_type: "message", message: "Knockback", message_RU: "Откид" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 50, 10, 350, 0, 3000] } + ], + + "s-3106-1000-109-0": [ + { type: "text", sub_type: "message", message: "Jump (Knockdown)", message_RU: "Прыжок (опрокид)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 150, 10, 300, 0, 2500] } + ], + "s-3106-1000-111-0": [{ type: "text", sub_type: "message", message: "Knockdown (Dodge)", message_RU: "Опрокид (эвейд)", class_position: "tank" }], + "s-3106-1000-201-0": [{ type: "text", sub_type: "message", message: "Front (Dodge)", message_RU: "Удар вперед (эвейд)", class_position: "tank" }], + "s-3106-1000-202-0": [{ type: "text", sub_type: "message", message: "Front AoE", message_RU: "Переднее АоЕ" }], + "s-3106-1000-203-0": [{ type: "text", sub_type: "message", message: "Front AoE + Wave", message_RU: "Переднее АоЕ + волна" }], + "s-3106-1000-205-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }], + "s-3106-1000-206-0": [{ type: "text", sub_type: "message", message: "Spin (Bleed)", message_RU: "Крутилка (кровоток)" }], + "s-3106-1000-207-0": [{ type: "text", sub_type: "message", message: "Spin (Bleed)", message_RU: "Крутилка (кровоток)" }], + "s-3106-1000-209-0": [ + { type: "text", sub_type: "message", message: "Give Stun! (Knockdown)", message_RU: "Дать стан! (опрокид)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 50, 10, 400, 0, 1500] } + ], + "s-3106-1000-210-0": [ + { type: "text", sub_type: "message", message: "Give Stun! (Knockdown)", message_RU: "Дать стан! (опрокид)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 50, 10, 400, 0, 1500] } + ], + "s-3106-1000-211-0": [{ type: "text", sub_type: "message", message: "Push", message_RU: "Откид" }], + "s-3106-1000-212-0": [{ type: "text", sub_type: "message", message: "Somersault", message_RU: "Кувырок" }], + "s-3106-1000-215-0": [{ type: "text", sub_type: "message", message: "Somersault", message_RU: "Кувырок" }], + "s-3106-1000-507-0": [{ type: "text", sub_type: "message", message: "Leash | Jump (Knockdown)", message_RU: "Притяжка | Прыжок (опрокид)" }], + "s-3106-1000-508-0": [ + { type: "text", sub_type: "message", message: "Donuts (Out > In)", message_RU: "Бублики (от него > к нему)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 18, 180, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 360, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 10, 550, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 860, 1500, 5000] } + ], + "s-3106-1000-509-0": [ + { type: "text", sub_type: "message", message: "Donuts (In > Out)", message_RU: "Бублики (к нему > от него)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 18, 180, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 360, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 10, 550, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 860, 1500, 5000] } + ], + "s-3106-1000-512-0": [{ type: "text", sub_type: "message", message: "Turn | Spin", message_RU: "Разворот | Крутилка" }], + //"s-3106-1000-513-0": [{ type: "text", sub_type: "message", message: "Plague/Regress", message_RU: "Чума/регресс" }], + //"s-3106-1000-514-0": [{ type: "text", sub_type: "message", message: "Plague/Regress", message_RU: "Чума/регресс" }], + + "s-3106-1000-502-0": [{ type: "text", sub_type: "message", message: "Unleash", message_RU: "Бешенство" }], + "s-3106-1000-518-0": [{ type: "text", sub_type: "message", message: "Unleash", message_RU: "Бешенство" }], + "s-3106-1000-519-0": [{ type: "text", sub_type: "message", message: "Unleash", message_RU: "Бешенство" }], + "s-3106-1000-306-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }], + "s-3106-1000-309-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Удар вперед" }], + "s-3106-1000-311-0": [{ type: "text", sub_type: "message", message: "Evade!", message_RU: "Эвейд!", delay: 150 }], + "s-3106-1000-321-0": [{ type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }], + "s-3106-1000-324-0": [{ type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }] + }; +}; \ No newline at end of file diff --git a/guides/3107.js b/guides/3107.js new file mode 100644 index 00000000..fdb51d9e --- /dev/null +++ b/guides/3107.js @@ -0,0 +1,440 @@ +// Corrupted RK-9 Kennel +// +// made by michengs / HSDN / ITunk / vathsq + +const OPCODES = { + "S_DUNGEON_EVENT_GAGE": { + 366226: 39917, + 367078: 47028, + 367081: 39359, + 376012: 47078 + } +}; + +function addOpcodeAndDefinition(mod, name, version = null, definition = null) { + if (OPCODES[name] !== undefined && OPCODES[name][mod.dispatch.protocolVersion] !== undefined) { + mod.dispatch.addOpcode(name, OPCODES[name][mod.dispatch.protocolVersion]); + } + if (version !== null && definition !== null) { + mod.dispatch.addDefinition(name, version, definition); + } +} + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + addOpcodeAndDefinition(dispatch._mod, "S_DUNGEON_EVENT_GAGE", 2, [ + ["name", "refString"], + ["message", "refString"], + ["unk", "int32"], + ["type", "int32"], + ["value", "int32"], + ["name", "string"], + ["message", "string"] + ]); + + const LEFT = 0; + const RIGHT = 1; + const UNKNOWN = -1; + + const mech_messages = { + "out": { message: "Out", message_RU: "От него" }, + "in": { message: "In", message_RU: "К нему" }, + "wave": { message: "Wave", message_RU: "Волна" }, + "unk": { message: "?", message_RU: "?" } + }; + + let boss_seventy = false; + let msg_a = "unk"; + let msg_b = "unk"; + let mech_reverse = false; + let mech_notice = false; + let s_attacks_notice = true; + let wave_is_reverse = false; + let hand_glow_id = UNKNOWN; + let pizza_spawn_counter = 0; + let pizza_event_active = false; + let pizza_active_guide = false; + + function start_boss_event() { + boss_seventy = false; + msg_a = "unk"; + msg_b = "unk"; + mech_reverse = false; + mech_notice = false; + s_attacks_notice = true; + wave_is_reverse = false; + hand_glow_id = UNKNOWN; + pizza_spawn_counter = 0; + pizza_event_active = false; + } + + function code_announce_mech_event(code) { + // Standard + if (code == 1) { + mech_reverse = false; + print_mech(true, true); + + if (mech_notice) { + print_mech(false, false); + } + } + + // Reverse + if (code == 0) { + mech_reverse = true; + print_mech(true, true); + + if (mech_notice) { + print_mech(false, false); + } + } + } + + function action_announce_mech_event(action) { + msg_a = action; + print_mech(true, false); + } + + function action_mech_event(action) { + msg_b = action; + print_mech(false, false); + msg_a = msg_b; + msg_b = "unk"; + + dispatch.setTimeout(() => { + print_mech(true, false); + }, 7000); + + mech_notice = true; + dispatch.setTimeout(() => mech_notice = false, 3000); + } + + function print_mech(next, code) { + let message = "", + message_RU = "", + sub_type = "message"; + + if (next) { + message += "Next: "; + message_RU += "Далее: "; + sub_type = "notification"; + } + + if (mech_reverse) { + message += `${mech_messages[msg_b].message} + ${mech_messages[msg_a].message}`; + message_RU += `${mech_messages[msg_b].message_RU} + ${mech_messages[msg_a].message_RU}`; + } else { + message += `${mech_messages[msg_a].message} + ${mech_messages[msg_b].message}`; + message_RU += `${mech_messages[msg_a].message_RU} + ${mech_messages[msg_b].message_RU}`; + } + + if (code) { + message += `, Code: ${mech_reverse ? "0" : "1"}`; + message_RU += `, Код: ${mech_reverse ? "0" : "1"}`; + } + + handlers.text({ + sub_type: sub_type, + message: message, + message_RU: message_RU + }); + } + + function s_attacks_event(side) { + const delay = boss_seventy ? 2000 : 0; + let duration = boss_seventy ? 800 : 900; + + if (side == "left") { + handlers.text({ sub_type: "message", delay: delay, message: "Right Safe", message_RU: "Справа сейф" }); + } + + if (side == "right") { + handlers.text({ sub_type: "message", delay: delay, message: "Left Safe", message_RU: "Слева сейф" }); + } + + if (s_attacks_notice && boss_seventy) { // <70% + if (mech_reverse) { + handlers.text({ sub_type: "message", message: "Triple-S | Out", message_RU: "Трипл-эска | От него" }); + handlers.text({ sub_type: "notification", delay: 4500, message: "Out", message_RU: "От него" }); + } else { + handlers.text({ sub_type: "message", message: "Triple-S | In", message_RU: "Трипл-эска | К нему" }); + handlers.text({ sub_type: "notification", delay: 4500, message: "In", message_RU: "К нему" }); + } + + handlers.spawn({ func: "circle", args: [false, 445, 0, 0, 10, 300, 5000, 2000] }); + duration = 2000; + + s_attacks_notice = false; + dispatch.setTimeout(() => s_attacks_notice = true, 10000); + } + + if (side == "left") { // right safe + handlers.event([ + { type: "spawn", func: "marker", args: [false, 160, 300, 0, duration, true, null] }, + { type: "spawn", func: "marker", args: [false, 340, 300, 0, duration, true, null] }, + { type: "spawn", func: "point", args: [202, 170, 200, 0, duration] }, + { type: "spawn", func: "point", args: [202, 350, 200, 0, duration] }, + { type: "spawn", func: "vector", args: [912, 170, 210, 180, 290, 0, duration] }, + { type: "spawn", func: "point", args: [912, 120, 250, 0, duration] }, + { type: "spawn", func: "point", args: [912, 130, 240, 0, duration] }, + { type: "spawn", func: "point", args: [912, 140, 230, 0, duration] }, + { type: "spawn", func: "point", args: [912, 150, 220, 0, duration] }, + { type: "spawn", func: "point", args: [912, 160, 210, 0, duration] }, + { type: "spawn", func: "point", args: [912, 300, 250, 0, duration] }, + { type: "spawn", func: "point", args: [912, 310, 240, 0, duration] }, + { type: "spawn", func: "point", args: [912, 320, 230, 0, duration] }, + { type: "spawn", func: "point", args: [912, 330, 220, 0, duration] }, + { type: "spawn", func: "point", args: [912, 340, 210, 0, duration] }, + { type: "spawn", func: "vector", args: [912, 350, 210, 0, 290, 0, duration] } + ]); + } + + if (side == "right") {// left safe + handlers.event([ + { type: "spawn", func: "marker", args: [false, 20, 300, 0, duration, true, null] }, + { type: "spawn", func: "marker", args: [false, 200, 300, 0, duration, true, null] }, + { type: "spawn", func: "point", args: [202, 10, 200, 0, duration] }, + { type: "spawn", func: "point", args: [202, 190, 200, 0, duration] }, + { type: "spawn", func: "vector", args: [912, 10, 210, 0, 290, 0, duration] }, + { type: "spawn", func: "point", args: [912, 20, 210, 0, duration] }, + { type: "spawn", func: "point", args: [912, 30, 220, 0, duration] }, + { type: "spawn", func: "point", args: [912, 40, 230, 0, duration] }, + { type: "spawn", func: "point", args: [912, 50, 240, 0, duration] }, + { type: "spawn", func: "point", args: [912, 60, 250, 0, duration] }, + { type: "spawn", func: "point", args: [912, 240, 250, 0, duration] }, + { type: "spawn", func: "point", args: [912, 230, 240, 0, duration] }, + { type: "spawn", func: "point", args: [912, 220, 230, 0, duration] }, + { type: "spawn", func: "point", args: [912, 210, 220, 0, duration] }, + { type: "spawn", func: "point", args: [912, 200, 210, 0, duration] }, + { type: "spawn", func: "vector", args: [912, 190, 210, 180, 290, 0, duration] } + ]); + } + } + + function wave_attacks_event() { + let index = UNKNOWN; + const side = hand_glow_id; + + const mech_message = { + 0: [ // left safe + // { type: "text", sub_type: "notification", message: "Left Safe", message_RU: "Слева сейф" }, + { type: "spawn", func: "vector", args: [912, 360, 400, 180, 800, 0, 4500] }, + { type: "spawn", func: "marker", args: [false, 300, 100, 0, 4500, true, null] }, + { type: "spawn", func: "marker", args: [false, 230, 100, 0, 4500, true, null] } + ], + 1: [ // right safe + // { type: "text", sub_type: "notification", message: "Right Safe", message_RU: "Справа сейф" }, + { type: "spawn", func: "vector", args: [912, 360, 400, 180, 800, 0, 4500] }, + { type: "spawn", func: "marker", args: [false, 60, 100, 0, 4500, true, null] }, + { type: "spawn", func: "marker", args: [false, 130, 100, 0, 4500, true, null] } + ] + }; + + if (side === LEFT) { + index = wave_is_reverse ? 1 : 0; + } else if (side === RIGHT) { + index = wave_is_reverse ? 0 : 1; + } + + if (index === -1) return; + + handlers.event(mech_message[index]); + hand_glow_id = UNKNOWN; + } + + function laser_pizza_event() { + if (!pizza_active_guide) return; + + if (pizza_spawn_counter >= 8) { + handlers.spawn({ func: "marker", args: [false, 0, (25 * 6), 0, 2000, false, null] }); + return; + } + + pizza_spawn_counter++; + + handlers.event([ + // vertical + { type: "spawn", func: "vector", args: [912, 0, 0, 0, (25 * 10), 0, 4500] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, (25 * 10), 0, 4500] }, + // horizontal + { type: "spawn", func: "vector", args: [912, 0, 0, 90, (25 * 10), 0, 4500] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, (25 * 10), 0, 4500] } + ]); + } + + dispatch.hook("S_DUNGEON_EVENT_GAGE", 2, event => { + if (event.name === "ScanProgress") { + if (event.value === 85) { + handlers.text({ sub_type: "message", message: "Drain Soon", message_RU: "Скоро дренаж" }); + } + } + }); + + return { + "nd-3107-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-3107-3003": [ + { type: "func", func: laser_pizza_event, check_func: () => pizza_event_active } + ], + "h-3107-3000-99": [ + { type: "func", func: start_boss_event } + ], + "h-3107-3000-70": [ + { type: "text", sub_type: "notification", message: "70%", message_RU: "70%" }, + { type: "func", func: () => boss_seventy = true } + ], + + // Action announce + "dm-0-0-31071418": [{ type: "func", func: action_announce_mech_event, args: ["out"] }], + "dm-0-0-31071428": "dm-0-0-31071418", + "dm-0-0-31072104": [{ type: "func", func: action_announce_mech_event, args: ["in"] }], + "dm-0-0-31072166": "dm-0-0-31072104", + "dm-0-0-31073233": [{ type: "func", func: action_announce_mech_event, args: ["wave"] }], + "dm-0-0-31073235": "dm-0-0-31073233", + + // Code announce + "dm-0-0-31074334": [{ type: "func", func: code_announce_mech_event, args: [1] }], + "dm-0-0-31074359": "dm-0-0-31074334", + "dm-0-0-31074642": "dm-0-0-31074334", + "dm-0-0-31074104": "dm-0-0-31074334", + "dm-0-0-31074398": "dm-0-0-31074334", + "dm-0-0-31075430": [{ type: "func", func: code_announce_mech_event, args: [0] }], + "dm-0-0-31075984": "dm-0-0-31075430", + "dm-0-0-31075986": "dm-0-0-31075430", + "dm-0-0-31075064": "dm-0-0-31075430", + "dm-0-0-31075464": "dm-0-0-31075430", + + // Action + "qb-3107-3000-310702": [{ type: "func", func: action_mech_event, args: ["out"] }], + "qb-3107-3000-310703": [{ type: "func", func: action_mech_event, args: ["in"] }], + "qb-3107-3000-310704": [{ type: "func", func: action_mech_event, args: ["wave"] }], + + // S-attacks right + "s-3107-3000-2114-0": [{ type: "func", func: s_attacks_event, args: ["right"] }], + "s-3107-3000-2114-1": "s-3107-3000-2114-0", + "s-3107-3000-2114-2": "s-3107-3000-2114-0", + "s-3107-3000-2114-3": "s-3107-3000-2114-0", + "s-3107-3000-1331-0": "s-3107-3000-2114-0", + "s-3107-3000-1331-1": "s-3107-3000-2114-0", + "s-3107-3000-1331-2": "s-3107-3000-2114-0", + "s-3107-3000-1331-3": "s-3107-3000-2114-0", + "s-3107-3000-1112-1": "s-3107-3000-2114-0", + "s-3107-3000-1107-0": "s-3107-3000-2114-0", + "s-3107-3000-1107-2": "s-3107-3000-2114-0", + // + "s-3107-3000-1119-0": "s-3107-3000-2114-0", + "s-3107-3000-1119-1": "s-3107-3000-2114-0", + "s-3107-3000-1119-2": "s-3107-3000-2114-0", + "s-3107-3000-1119-3": "s-3107-3000-2114-0", + "s-3107-3000-1323-0": "s-3107-3000-2114-0", + "s-3107-3000-1323-1": "s-3107-3000-2114-0", + "s-3107-3000-1323-2": "s-3107-3000-2114-0", + "s-3107-3000-1323-3": "s-3107-3000-2114-0", + "s-3107-3000-1127-1": "s-3107-3000-2114-0", + "s-3107-3000-2118-0": "s-3107-3000-2114-0", + "s-3107-3000-2118-2": "s-3107-3000-2114-0", + + // S-attacks left + "s-3107-3000-1320-0": [{ type: "func", func: s_attacks_event, args: ["left"] }], + "s-3107-3000-1320-1": "s-3107-3000-1320-0", + "s-3107-3000-1320-2": "s-3107-3000-1320-0", + "s-3107-3000-1320-3": "s-3107-3000-1320-0", + "s-3107-3000-1329-0": "s-3107-3000-1320-0", + "s-3107-3000-1329-1": "s-3107-3000-1320-0", + "s-3107-3000-1329-2": "s-3107-3000-1320-0", + "s-3107-3000-1329-3": "s-3107-3000-1320-0", + "s-3107-3000-1107-1": "s-3107-3000-1320-0", + "s-3107-3000-1112-0": "s-3107-3000-1320-0", + "s-3107-3000-1112-2": "s-3107-3000-1320-0", + // + "s-3107-3000-1307-0": "s-3107-3000-1320-0", + "s-3107-3000-1307-1": "s-3107-3000-1320-0", + "s-3107-3000-1307-2": "s-3107-3000-1320-0", + "s-3107-3000-1307-3": "s-3107-3000-1320-0", + "s-3107-3000-2116-0": "s-3107-3000-1320-0", + "s-3107-3000-2116-1": "s-3107-3000-1320-0", + "s-3107-3000-2116-2": "s-3107-3000-1320-0", + "s-3107-3000-2116-3": "s-3107-3000-1320-0", + "s-3107-3000-2118-1": "s-3107-3000-1320-0", + "s-3107-3000-1127-0": "s-3107-3000-1320-0", + "s-3107-3000-1127-2": "s-3107-3000-1320-0", + + // Basic attacks + "s-3107-3000-1110-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Удар вперед" }], + "s-3107-3000-4000-0": "s-3107-3000-1110-0", + "s-3107-3000-1310-0": [{ type: "text", sub_type: "message", message: "Front | Back", message_RU: "Удар вперед | Удар назад" }], + "s-3107-3000-1321-0": "s-3107-3000-1310-0", + "s-3107-3000-1115-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }], + "s-3107-3000-1109-0": "s-3107-3000-1115-0", + + "s-3107-3000-1129-0": [ + { type: "text", sub_type: "message", message: "Combo | Back Wave", message_RU: "Комба | Конус назад" }, + { type: "spawn", func: "vector", args: [553, 180, 40, 120, 1200, 2000, 3000] }, + { type: "spawn", func: "vector", args: [553, 180, 40, 240, 1200, 2000, 3000] }, + { type: "func", func: () => wave_is_reverse = mech_reverse }, // capture `mech_reverse` state as it might change by the time wave_attacks_event gets called + { type: "func", delay: 1000, func: wave_attacks_event } + ], + "s-3107-3000-1305-0": "s-3107-3000-1129-0", + "s-3107-3000-2102-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-3107-3000-2223-0": "s-3107-3000-2102-0", + "s-3107-3000-2125-0": [{ type: "spawn", func: "circle", args: [false, 912, 0, 0, 10, 300, 0, 6000] }], // 310702 31070020 31070021 -> 305 + "s-3107-3000-1313-0": [{ type: "text", sub_type: "message", message: "Shield!", message_RU: "Щит!" }], + "s-3107-3000-2115-0": "s-3107-3000-1313-0", + "s-3107-3001-1308-0": [ + { type: "text", sub_type: "message", message: "Bait!", message_RU: "Байт!" }, + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 300, 0, 2000] } + ], + "ab-3107-3000-310700020": [{ type: "text", sub_type: "notification", message: "Lasers Soon", message_RU: "Скоро лазеры" }], + + // Waves mech + "ab-3107-3000-310703401": [{ type: "func", func: () => hand_glow_id = LEFT }], + "ab-3107-3000-310703403": "ab-3107-3000-310703401", + "ab-3107-3000-310703405": "ab-3107-3000-310703401", + "ab-3107-3000-310703407": "ab-3107-3000-310703401", + "ab-3107-3000-310703408": "ab-3107-3000-310703401", + "ab-3107-3000-310703402": [{ type: "func", func: () => hand_glow_id = RIGHT }], + "ab-3107-3000-310703404": "ab-3107-3000-310703402", + "ab-3107-3000-310703406": "ab-3107-3000-310703402", + "ab-3107-3000-310703409": "ab-3107-3000-310703402", + "ab-3107-3000-310703410": "ab-3107-3000-310703402", + + // Radar mech + "qb-3107-3000-31075430": [{ type: "text", sub_type: "message", message: "!!! Radar !!!", message_RU: "!!! Радар !!!" }], + "s-3107-3000-1118-0": [ + { type: "text", sub_type: "message", message: "OUT", message_RU: "ОТ НЕГО" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 10, 250, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 12, 200, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 14, 150, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 18, 100, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 50, 50, 0, 3000] } + ], + "s-3107-3000-2107-0": [ + { type: "text", sub_type: "message", message: "IN", message_RU: "К НЕМУ" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 3000] } + ], + "s-3107-3000-1222-0": [ + { type: "func", func: () => pizza_event_active = true }, + { type: "text", sub_type: "message", message: "LASERS", message_RU: "ЛАЗЕРЫ" }, + { type: "func", delay: 3000, func: () => pizza_event_active = false }, + { type: "func", delay: 3000, func: () => pizza_spawn_counter = 0 } + ], + "s-3107-3000-1306-0": "s-3107-3000-1222-0", + "s-3107-3000-1223-0": "s-3107-3000-1222-0", + + "laser-helper": [ // activate with `!guide event t laser-helper` + { + type: "func", func: () => { + pizza_active_guide = !pizza_active_guide; + const msg_state = pizza_active_guide ? "enabled" : "disabled"; + dispatch._mod.command.message(`lasers markers have been ${msg_state}`); + } + } + ] + }; +}; diff --git a/guides/3123.js b/guides/3123.js new file mode 100644 index 00000000..57e1718c --- /dev/null +++ b/guides/3123.js @@ -0,0 +1,125 @@ +// Akalath Quarantine (Hard) +// +// made by michengs + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = ES; + + let debuff = null; // default debuff + + return { + // 1 BOSS + "nd-3123-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + // Debuff removed + "die": [{ type: "func", func: () => { debuff = null; } }], + // Debuf added + "ae-0-0-30231000": [{ type: "func", func: () => debuff = 1 }], // AoE (red) + "ae-0-0-30231001": [{ type: "func", func: () => debuff = 2 }], // AoE (blue) + "am-3123-1000-30231000": [{ type: "func", func: () => debuff = 1 }], // Red + "am-3123-1000-30231001": [{ type: "func", func: () => debuff = 2 }], // Blue + + "s-3123-1000-104-0": [{ type: "text", sub_type: "message", message: "Random Jump", message_RU: "Прыжок + Стан" }], + "s-3123-1000-105-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Поворот назад" }], + "s-3123-1000-110-0": [ + { type: "text", sub_type: "message", message: "Stun", message_RU: "Передний стан" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 175, 10, 260, 0, 6000] } + ], + "s-3123-1000-111-0": [ + { type: "text", sub_type: "message", message: "Left Slash", message_RU: "Левая полоса" }, + { type: "spawn", func: "vector", args: [553, 270, 200, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 200, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 6, 302, 270, 200, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 176, 502, 270, 200, 0, 2000] } + ], + "s-3123-1000-112-0": [ + { type: "text", sub_type: "message", message: "Right Slash", message_RU: "Правая полоса" }, + { type: "spawn", func: "vector", args: [553, 90, 200, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 200, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 20, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 20, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 354, 302, 90, 200, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 184, 502, 90, 200, 0, 2000] } + ], + "s-3123-1000-113-0": "s-3123-1000-111-0", + "s-3123-1000-114-0": "s-3123-1000-112-0", + "s-3123-1000-115-0": [ + { type: "text", sub_type: "message", message: "Back Attack", message_RU: "Удар назад" }, + { type: "spawn", func: "semicircle", args: [90, 280, 553, 0, 0, 15, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [90, 275, 553, 0, 0, 10, 250, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [90, 270, 553, 0, 0, 10, 340, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 150, 90, 150, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 150, 270, 150, 0, 2000] } + ], + "s-3123-1000-116-0": [ + { type: "text", sub_type: "message", message: "Kaia's Shield", message_RU: "Кайа", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Thrall of Protection", message_RU: "Кайа", class_position: "mystic" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 560, 0, 6000] } + ], + "s-3123-1000-3107-0": [ + { type: "text", sub_type: "message", message: "Smash", message_RU: "Конус вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 10, 1000, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 350, 1000, 0, 4000] } + ], + "s-3123-1000-3115-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-3123-1000-3116-0": [ + { type: "text", sub_type: "message", message: "Circles + Spin", message_RU: "Круги + Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 5000] } + ], + "s-3123-1000-3119-0": [ // red inside + { type: "text", sub_type: "message", message: "OUT (red)", message_RU: "ОТ НЕГО", check_func: () => debuff === 1, delay: 500 }, + { type: "text", sub_type: "message", message: "IN (blue)", message_RU: "К НЕМУ", check_func: () => debuff === 2, delay: 500 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 270, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 650, 0, 4000] } + ], + "s-3123-1000-3220-0": [ // blue inside + { type: "text", sub_type: "message", message: "IN (blue)", message_RU: "К НЕМУ", check_func: () => debuff === 1, delay: 500 }, + { type: "text", sub_type: "message", message: "OUT (red)", message_RU: "ОТ НЕГО", check_func: () => debuff === 2, delay: 500 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 270, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 650, 0, 4000] } + ], + + // 2 BOSS + "nd-3123-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-3123-2000-164-0": [{ type: "text", sub_type: "message", message: "Counter Attack (bleed)", message_RU: "Отпрыжка (Кровоток)" }], + "s-3123-2000-166-0": [{ type: "text", sub_type: "message", message: "Turn-back", message_RU: "Оборот назад" }], + "s-3123-2000-175-0": [ + { type: "text", sub_type: "message", message: "Incoming Stun", message_RU: "Рёв" }, + { type: "text", sub_type: "message", delay: 1500, message: "Dodge", message_RU: "Эвейд" } + ], + "s-3123-2000-178-0": [{ type: "text", sub_type: "message", message: "Scratching (bleed)", message_RU: "Крутилка (Кровоток)" }], + "s-3123-2000-181-0": [ + { type: "text", sub_type: "message", message: "Rock Throw", message_RU: "Полоса вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 10, 1000, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 350, 1000, 0, 4000] } + ], + + "s-3123-2000-214-0": [{ type: "text", sub_type: "message", message: "5x Rock", message_RU: "5x Полосы" }], + + "s-3123-2000-182-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-3123-2000-185-0": [ + { type: "text", sub_type: "message", message: "Big jump (Kaia's Shield)", message_RU: "Прыжок (кайа)", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Big jump (Thrall of Protection)", message_RU: "Прыжок (кайа)", class_position: "mystic" }, + { type: "text", sub_type: "alert", delay: 110000, message: "Big jump soon...", message_RU: "Скоро прыжок...", class_position: "heal" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 500, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 750, 0, 6000] } + ], + "s-3123-2000-202-0": [ + { type: "text", sub_type: "message", message: "Backstab", message_RU: "Назад + Вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 180, 500, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 180, 500, 0, 3000] } + ], + "s-3123-2000-207-0": [{ type: "text", sub_type: "message", message: "Phantom x5 (bleed)", message_RU: "Прыжки x5 (Кровоток)" }], + "s-3123-2000-212-0": [{ type: "text", sub_type: "message", message: "Flash (bleed)", message_RU: "Байт (Кровоток)" }] + }; +}; \ No newline at end of file diff --git a/guides/3126.js b/guides/3126.js index b1f636b5..b8f47623 100644 --- a/guides/3126.js +++ b/guides/3126.js @@ -1,234 +1,383 @@ -//made by michengs -let player, entity, library, effect; -let print = true; -let debuff = null ; -let timer1; -let timer2; -let timer3; -let timer4; -let timer5; -let qbacting = null; -function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; -} - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -const CK_TipMsg = -{ - 0: {msgt: 'IN', msg: 'К'}, - 1: {msgt: 'OUT', msg: 'От'} -}; -const debuff_TipMsg = -{ - 0: {msg: '------Готов к переключению красного-------!'}, - 1: {msg: '------Готов к переключению синего-------'} -}; -const boss_skill = -{ - 213: {msg: 'Лево', msgt: 'left'}, - 214: {msg: 'Право', msgt: 'right'}, - 212: {msg: 'Право', msgt: 'right'}, - 215: {msg: 'Лево', msgt: 'left'} -}; -function skilld_event(skillid, handlers, event, ent, dispatch) { -if ([3026004,3126004,3026005,3126005].includes(skillid)) { // //愤怒0 恐惧1 -qbacting = skillid % 2; -//qbacting = null -} -if ([3026001,3126001,3026002,3126002].includes(skillid)) { // //蓝色0 红色1 -//debuff = skillid % 2; -clearTimeout(timer1); -clearTimeout(timer2); -clearTimeout(timer3); -clearTimeout(timer4); -clearTimeout(timer5); - timer1 = setTimeout(()=>{ - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message_RU": "дебафф 20сек" -}); - } - }, 70000); - timer2 = setTimeout(()=>{ - if (debuff != null) { -handlers['text']({ -"sub_type": "notification", -"message_RU": (`${debuff_TipMsg[debuff % 2].msg} `) -}); -handlers['text']({ -"sub_type": "message", -"message": "debuff 50s", -"message_RU": "дебафф 50сек" -}); - } - }, 40000); - timer3 = setTimeout(()=>{ - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message": "warning debuff 15s", -"message_RU": "дебафф 15сек" -}); - } - }, 75000); - timer4 = setTimeout(()=>{ - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message": "warning debuff 10s", -"message_RU": "дебафф 10сек" -}); - } - }, 80000); - timer5 = setTimeout(()=>{ - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message": "warning debuff 5s", -"message_RU": "дебафф 5сек" -}); - } - }, 85000); -} -if ([213,214].includes(skillid)) { // //蓝内 - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message": (`${boss_skill[skillid].msgt} | ${CK_TipMsg[(qbacting + debuff +1) %2].msgt}`), -"message_RU": (`${boss_skill[skillid].msg} | ${CK_TipMsg[(qbacting + debuff +1) %2].msg}`) -}); - } -} -if ([212,215].includes(skillid)) { // //红内 - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"message": (`${boss_skill[skillid].msgt} | ${CK_TipMsg[(qbacting + debuff) %2].msgt}`), -"message_RU": (`${boss_skill[skillid].msg} | ${CK_TipMsg[(qbacting + debuff) %2].msg}`) -}); - } -} -if (skillid === 99020020) { //死亡解除debuff -//debuff = null; -clearTimeout(timer1); -clearTimeout(timer2); -} -/* -if (skillid === 157) { //debuff - if (debuff != null) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message": debuffs_targe[debuff] - }); -} -} -*/ -} -// NULL % 2 =0 -// 1 % 2 =1 -//0 % 2 =0 -//2 % 2 =0 -let debuff_tracker_started = false; -let debuffs_targe = { - 30260001: "Огненный дебафф", - 30260002: "Ледяной дебафф", - 31260001: "Огненный дебафф", - 31260002: "Ледяной дебафф" -}; -function start_debuff(handlers, event, entity, dispatch) { - const abnormality_change = (added, event) => { - if ((player.isMe(event.target) || player.playersInParty.includes(event.target.toString())) && debuffs_targe[event.id]) { +// Corrupted Skynest (Hard) +// +// made by michengs / HSDN / ZC + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + const { player } = dispatch.require.library; + const { MARKER_ITEM } = module.parent.exports.spawn; + + let debuff = null; + let timer1 = null; + let timer2 = null; + let timer3 = null; + let boss_ent = null; + let boss_offset = 0; + let qbacting = null; + let blue = false; + let red = false; + let debuff_tracker_started = false; + + const mech_messages = { + 0: { message: "IN", message_RU: "К НЕМУ" }, + 1: { message: "OUT", message_RU: "ОТ НЕГО" }, + 2: { message: "Left", message_RU: "Лево" }, + 3: { message: "Right", message_RU: "Право" } + }; + + const qbacting_messages = { + 0: { message: "different", message_RU: "разные" }, + 1: { message: "same", message_RU: "одинаковые" } + }; + + const debuff_messages = { + 0: { message: "Ready to get Fire debuff", message_RU: "Готовность к переключению на Огонь" }, + 1: { message: "Ready to get Ice debuff", message_RU: "Готовность к переключению на Лед" } + }; + + // NULL % 2 = 0 + // 1 % 2 = 1 + // 0 % 2 = 0 + // 2 % 2 = 0 + + function spawn_marker(out) { + if (!boss_ent) return; + + let distance = 220; + let caption = "IN"; + + if (out) { + distance = 620; + caption = "OUT"; + } + + handlers.event([ + { type: "spawn", func: "marker", args: [false, 45 + boss_offset, distance, 0, 4000, true, [caption, "SAFE"]] }, + { type: "spawn", func: "marker", args: [false, 135 + boss_offset, distance, 0, 4000, true, [caption, "SAFE"]] }, + { type: "spawn", func: "marker", args: [false, 225 + boss_offset, distance, 0, 4000, true, [caption, "SAFE"]] }, + { type: "spawn", func: "marker", args: [false, 315 + boss_offset, distance, 0, 4000, true, [caption, "SAFE"]] } + ], boss_ent); + } + + function debuff_added(id) { + debuff_removed(); + debuff = id; // debuff event id + + timer1 = dispatch.setTimeout(() => { + if (debuff != null) { + dispatch.setTimeout(() => { + handlers.text({ + sub_type: "alert", + message: (`${debuff_messages[debuff % 2].message}`), + message_RU: (`${debuff_messages[debuff % 2].message_RU}`) + }); + }, 2000); + handlers.text({ + sub_type: "message", + message: "Warning! Debuff 15 seconds", + message_RU: "Дебафф 15 сек." + }); + } + }, dispatch._mod.majorPatchVersion >= 99 ? 40000 : 55000); + + timer2 = dispatch.setTimeout(() => { + if (debuff != null) { + handlers.text({ + sub_type: "message", + message: "Warning! Debuff 10 seconds", + message_RU: "Дебафф 10 сек." + }); + } + }, dispatch._mod.majorPatchVersion >= 99 ? 45000 : 60000); + + timer3 = dispatch.setTimeout(() => { + if (debuff != null) { + handlers.text({ + sub_type: "message", + message: "Warning! Debuff 5 seconds", + message_RU: "Дебафф 5 сек." + }); + } + }, dispatch._mod.majorPatchVersion >= 99 ? 50000 : 65000); + + if (blue) { + handlers.text({ + sub_type: "message", + message: (`${mech_messages[(qbacting + debuff + 1) % 2].message}`), + message_RU: (`${mech_messages[(qbacting + debuff + 1) % 2].message_RU}`) + }); + + spawn_marker((qbacting + debuff + 1) % 2); + } else if (red) { + handlers.text({ + sub_type: "message", + message: (`${mech_messages[(qbacting + debuff) % 2].message}`), + message_RU: (`${mech_messages[(qbacting + debuff) % 2].message_RU}`) + }); + + spawn_marker((qbacting + debuff) % 2); + } + } + + function debuff_removed() { + debuff = null; + dispatch.clearTimeout(timer1); + dispatch.clearTimeout(timer2); + dispatch.clearTimeout(timer3); + } + + function skilld_event(skillid, ent) { + const abnormality_change = (added, event) => { + // Fire/Ice debuff + if (player.isMe(event.target.toString()) && [30260001, 30260002, 31260001, 31260002].includes(event.id)) { if (added) { - setTimeout(() => debuff = event.id, 500); + debuff_added(event.id); + } else { + debuff_removed(); + } + } + + // Argon Priest Essence buff + if (player.isMe(event.target.toString()) && [30261701, 31261701].includes(event.id)) { + if (added && boss_ent) { + handlers.spawn({ // spawn teleport mark + sub_type: "item", + id: MARKER_ITEM, + sub_delay: 50000, + pos: { + x: 53192, + y: 100761, + z: 14233 + } + }, boss_ent); + } + } + }; + + // In-Out quest balloons (qbacting => ярость 0, ужас 1) + if ([3026004, 3126004, 3026005, 3126005].includes(skillid)) { + qbacting = skillid % 2; + } + + // Fire/Ice debuff (debuff % 2 => синий 0, красный 1) + if ([30260001, 31260001, 30260002, 31260002].includes(skillid) && !debuff_tracker_started) { + debuff_added(skillid); + } + + // In-Out identification + if ([212, 213, 214, 215].includes(skillid)) { + boss_ent = ent; + + handlers.event([ + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 440, 200, 11000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 4, 840, 200, 11000] } + ]); + } + + if ([212, 214].includes(skillid)) { // Fire claw (141, 142) + boss_offset = 10; + + handlers.event([ + { type: "spawn", func: "vector", args: [553, 0, 0, 190, 840, 200, 11000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 10, 840, 200, 11000] } + ]); + } + + if ([213, 215].includes(skillid)) { // Ice claw (143, 144) + boss_offset = -10; + + handlers.event([ + { type: "spawn", func: "vector", args: [553, 0, 0, 170, 840, 200, 11000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 350, 840, 200, 11000] } + ]); + } + + if ([213, 214].includes(skillid)) { // Ice inside + dispatch.setTimeout(() => { + if (debuff != null) { + handlers.text({ + sub_type: "message", + message: (`Ice inside (${qbacting_messages[qbacting].message}) | ${mech_messages[debuff % 2 + 2].message} | ${mech_messages[(qbacting + debuff + 1) % 2].message}`), + message_RU: (`Внутри лед (${qbacting_messages[qbacting].message_RU}) | ${mech_messages[debuff % 2 + 2].message_RU} | ${mech_messages[(qbacting + debuff + 1) % 2].message_RU}`) + }); + + spawn_marker((qbacting + debuff + 1) % 2); } else { - debuff = null + handlers.text({ + sub_type: "message", + message: (`Ice inside (${qbacting_messages[qbacting].message})`), + message_RU: (`Внутри лед (${qbacting_messages[qbacting].message_RU})`) + }); } + }, 500); + + blue = true; + red = false; + + dispatch.setTimeout(() => { + blue = false; + red = true; + }, 6600); + + dispatch.setTimeout(() => red = false, 9400); } + + if ([212, 215].includes(skillid)) { // Fire inside + dispatch.setTimeout(() => { + if (debuff != null) { + handlers.text({ + sub_type: "message", + message: (`Fire inside (${qbacting_messages[qbacting].message}) | ${mech_messages[debuff % 2 + 2].message} | ${mech_messages[(qbacting + debuff) % 2].message}`), + message_RU: (`Внутри огонь (${qbacting_messages[qbacting].message_RU}) | ${mech_messages[debuff % 2 + 2].message_RU} | ${mech_messages[(qbacting + debuff) % 2].message_RU}`) + }); + + spawn_marker((qbacting + debuff) % 2); + } else { + handlers.text({ + sub_type: "message", + message: (`Fire inside (${qbacting_messages[qbacting].message})`), + message_RU: (`Внутри огонь (${qbacting_messages[qbacting].message_RU})`) + }); + } + }, 500); + + blue = false; + red = true; + + dispatch.setTimeout(() => { + blue = true; + red = false; + }, 6600); + + dispatch.setTimeout(() => blue = false, 9400); + } + + if (!debuff_tracker_started) { + dispatch.hook("S_ABNORMALITY_BEGIN", dispatch._mod.majorPatchVersion >= 107 ? 5 : 4, abnormality_change.bind(null, true)); + dispatch.hook("S_ABNORMALITY_END", 1, abnormality_change.bind(null, false)); + + debuff_tracker_started = true; + } + } + + const skills = { + "112-0": [{ type: "text", sub_type: "message", message: "Ice DOT", message_RU: "Лед (полоса)" }], + "110-0": [{ type: "text", sub_type: "message", message: "Fire DOT", message_RU: "Огонь (лужа)" }], + "108-0": [ + { type: "text", sub_type: "message", message: "Turn Right (Repel)", message_RU: "Поворот вправо (откид)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 8, 440, 0, 2000] } + ], + "158-0": [ + { type: "text", sub_type: "message", message: "Turn Right (Repel)", message_RU: "Поворот вправо (откид)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 8, 440, 0, 2000] } + ], + "109-0": [ + { type: "text", sub_type: "message", message: "Turn Left (Repel)", message_RU: "Поворот влево (откид)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 8, 440, 0, 2000] } + ], + "159-0": [ + { type: "text", sub_type: "message", message: "Turn Left (Repel)", message_RU: "Поворот влево (откид)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 8, 440, 0, 2000] } + ], + "120-0": [{ type: "text", sub_type: "message", message: "Together", message_RU: "Яростный рев" }], + "145-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "157-0": [{ type: "text", sub_type: "message", message: "Change", message_RU: "Смена" }], + "103-0": [ + { type: "text", sub_type: "message", message: "Tail (Flying)", message_RU: "Хвост (полет)" }, + { type: "text", sub_type: "message", message: "Arise!", message_RU: "Удочка!", delay: 1500, class_position: "priest" }, + { type: "spawn", func: "semicircle", args: [140, 260, 912, 0, 0, 10, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 135, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 260, 500, 0, 2000] } + ], + "153-0": [ + { type: "text", sub_type: "message", message: "Tail (Flying)", message_RU: "Хвост (полет)" }, + { type: "text", sub_type: "message", message: "Arise!", message_RU: "Удочка!", delay: 1500, class_position: "priest" }, + { type: "spawn", func: "semicircle", args: [140, 260, 912, 0, 0, 10, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 135, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 260, 500, 0, 2000] } + ], + "114-0": [{ type: "text", sub_type: "message", message: "Front Fire", message_RU: "Огонь впереди" }], + + // AOE лед (большой) + "104-0": [ + { type: "text", sub_type: "message", message: "Ice Storm DOTs", message_RU: "Ледяные лужи" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 500, 0, 5000] } + ], + // AOE огонь (большой) + "105-0": [{ type: "text", sub_type: "message", message: "Fire Bombs", message_RU: "Огненные бомбы" }, + { type: "spawn", func: "circle", args: [false, 553, 135, 500, 10, 270, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 315, 500, 10, 270, 0, 3250] }, + { type: "spawn", func: "circle", args: [false, 553, 45, 500, 10, 270, 0, 3500] }, + { type: "spawn", func: "circle", args: [false, 553, 235, 500, 10, 270, 0, 3750] }, + { type: "spawn", func: "circle", args: [false, 553, 90, 500, 10, 270, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 270, 500, 10, 270, 0, 4250] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 500, 10, 270, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 553, 180, 500, 10, 270, 0, 4750] } + ], + // AOE лед (малый) + "154-0": [{ type: "text", sub_type: "message", message: "Ice Storm", message_RU: "Ледяной шторм" }, { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 500, 0, 6000] }], + // AOE огонь (малый) + "155-0": [{ type: "text", sub_type: "message", message: "Fire (Knockdown)", message_RU: "Огненный столб (опрокид)" }, + { type: "text", sub_type: "message", delay: 1200, message: "Dodge", message_RU: "Эвейд" } + ], + + "206-0": [{ type: "text", sub_type: "message", message: "Jump Back", message_RU: "Прыжок назад" }], + "206-2": [{ type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 350, 0, 3000] }], + "137-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокидывание" }], + "138-0": [{ type: "text", sub_type: "message", message: "AOE", message_RU: "AOE" }], + "139-0": [ + { type: "text", sub_type: "message", message: "60 degrees (Fire to all)", message_RU: "60° (Огонь всем)" }, + { type: "text", sub_type: "message", delay: 4000, message: "Lower the temp", message_RU: "Снизить температуру" } + ], + "140-0": [ + { type: "text", sub_type: "message", message: "40 degrees (Ice to all)", message_RU: "40° (Лед всем)" }, + { type: "text", sub_type: "message", delay: 4000, message: "Raise the temp", message_RU: "Повысить температуру" } + ], + + "die": [{ type: "func", func: debuff_removed }], + "nd-3126-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-3126-1000-1118-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-3126-1000-2118-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-3126-1000-1118-1": [{ type: "text", sub_type: "message", message: "Dodge!", message_RU: "Эвейд!", delay: 615 }], + "s-3126-1000-2118-1": [{ type: "text", sub_type: "message", message: "Dodge!", message_RU: "Эвейд!", delay: 625 }], + "s-3126-1000-1212-0": [{ type: "func", func: skilld_event, args: [212] }], + "s-3126-1000-1215-0": [{ type: "func", func: skilld_event, args: [215] }], + "s-3126-1000-1213-0": [{ type: "func", func: skilld_event, args: [213] }], + "s-3126-1000-1214-0": [{ type: "func", func: skilld_event, args: [214] }], + "qb-3126-1000-3026005": [{ type: "func", func: skilld_event, args: [3026005] }], // ужас, одинаковые цвета + "qb-3126-1000-3026004": [{ type: "func", func: skilld_event, args: [3026004] }], // ярость, разные цвета + "qb-3126-1000-3126005": [{ type: "func", func: skilld_event, args: [3126005] }], // ужас, одинаковые цвета + "qb-3126-1000-3126004": [{ type: "func", func: skilld_event, args: [3126004] }], // ярость, разные цвета + "am-3126-1000-30260001": [{ type: "func", func: skilld_event, args: [30260001] }], // красный + "am-3126-1000-30260002": [{ type: "func", func: skilld_event, args: [30260002] }], // синий + "am-3126-1000-31260001": [{ type: "func", func: skilld_event, args: [31260001] }], // красный + "am-3126-1000-31260002": [{ type: "func", func: skilld_event, args: [31260002] }], // синий + + "s-3126-1000-1107-0": [{ type: "text", sub_type: "message", message: "[Debuff] Farthest", message_RU: "[Дебафф] Дальние" }], + "s-3126-1000-2107-0": [{ type: "text", sub_type: "message", message: "[Debuff] Closest", message_RU: "[Дебафф] Ближние" }], + "am-3126-1000-31260251": [{ type: "text", sub_type: "message", message: "[Debuff] Layer 1", message_RU: "[Дебафф] 1 стак" }], + "am-3126-1000-31260067": [{ type: "text", sub_type: "message", message: "[Debuff] Layer 2", message_RU: "[Дебафф] 2 стак" }], + "am-3126-1000-31260068": [ + { type: "text", sub_type: "message", message: "[Debuff] Layer 3", message_RU: "[Дебафф] 3 стак" }, + { type: "text", sub_type: "message", delay: 120000, message: "[Debuff] 2 minutes passed", message_RU: "[Дебафф] Прошло 2 минуты (стаки удалены)", check_func: () => dispatch._mod.majorPatchVersion >= 99 }, + { type: "text", sub_type: "message", delay: 145000, message: "[Debuff] 2.5 minutes passed", message_RU: "[Дебафф] Прошло 2.5 минуты (стаки удалены)", check_func: () => dispatch._mod.majorPatchVersion < 99 } + ] }; - if (!debuff_tracker_started) { - dispatch.hook('S_ABNORMALITY_BEGIN', 4, abnormality_change.bind(null, true)); - dispatch.hook('S_ABNORMALITY_END', 1, abnormality_change.bind(null, false)); - debuff_tracker_started = true; + + const object = {}; + + for (const [key, value] of Object.entries(skills)) { + if (key.length === 5) { + object[`s-3126-1000-1${key}`] = value; + object[`s-3126-1000-2${key}`] = value; + } else { + object[key] = value; + } } -} -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, -"s-3126-1000-1112-0": [{"type": "text","sub_type": "message","message": "Ice()","message_RU": "Лёд"}], -"s-3126-1000-1110-0": [{"type": "text","sub_type": "message","message": "fire","message_RU": "Огонь"}], -"s-3126-1000-2112-0": [{"type": "text","sub_type": "message","message": "Ice()","message_RU": "Лёд"}], -"s-3126-1000-2110-0": [{"type": "text","sub_type": "message","message": "fire","message_RU": "Огонь"}], -"s-3126-1000-1108-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните направо, чтобы отбить"}], -"s-3126-1000-2108-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните направо, чтобы отбить"}], -"s-3126-1000-1158-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните направо, чтобы отбить"}], -"s-3126-1000-2158-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните направо, чтобы отбить"}], -"s-3126-1000-1109-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните влево, чтобы отбить"}], -"s-3126-1000-2109-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните влево, чтобы отбить"}], -"s-3126-1000-1159-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните влево, чтобы отбить"}], -"s-3126-1000-2159-0": [{"type": "text","sub_type": "message","message": "beat back","message_RU": "Поверните влево, чтобы отбить"}], -"s-3126-1000-1120-0": [{"type": "text","sub_type": "message","message": "together","message_RU": "Яростный рёв"}], -"s-3126-1000-2120-0": [{"type": "text","sub_type": "message","message": "together","message_RU": "Яростный рёв"}], -"s-3126-1000-1157-0": [{"type": "text","sub_type": "message","message": "change","message_RU": "Смена"},{"type": "func","func": start_debuff}], -"s-3126-1000-2157-0": [{"type": "text","sub_type": "message","message": "change","message_RU": "Смена"},{"type": "func","func": start_debuff}], -"s-3126-1000-1103-0": [{"type": "text","sub_type": "message","message": "tail","message_RU": "Хвост"}], -"s-3126-1000-2103-0": [{"type": "text","sub_type": "message","message": "tail","message_RU": "Хвост"}], -"s-3126-1000-1118-1": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Прыжок"}], -"s-3126-1000-2118-1": [{"type": "text","sub_type": "message","message": "Jump","message_RU": "Прыжок"}], -"s-3126-1000-1114-0": [{"type": "text","sub_type": "message","message": "front fire","message_RU": "Огонь впереди"}], -"s-3126-1000-2114-0": [{"type": "text","sub_type": "message","message": "front fire","message_RU": "Огонь впереди"}], -"s-3126-1000-1145-0": [{"type": "text","sub_type": "message","message": "stun","message_RU": "Стан"}], -"s-3126-1000-2145-0": [{"type": "text","sub_type": "message","message": "stun","message_RU": "Стан"}], -"s-3126-1000-1206-0": [{"type": "text","sub_type": "message","message": "Jump back","message_RU": "Прыжок назад (полет)"}], -"s-3126-1000-2206-0": [{"type": "text","sub_type": "message","message": "Jump back","message_RU": "Прыжок назад (полет)"}], -"s-3126-1000-1206-2": [{"type": "func","func": Spawnitem2.bind(null,553,0,0,15,350,200,3000)}], -"s-3126-1000-2206-2": [{"type": "func","func": Spawnitem2.bind(null,553,0,0,15,350,200,3000)}], -"s-3126-1000-1153-0": [{"type": "text","sub_type": "message","message": "tail","message_RU": "Хвост"}], -"s-3126-1000-2153-0": [{"type": "text","sub_type": "message","message": "tail","message_RU": "Хвост"}], -"s-3126-1000-1154-0": [{"type": "text","sub_type": "message","message": "Ice storm","message_RU": "Ледяной шторм"}], //30不可防 -"s-3126-1000-2154-0": [{"type": "text","sub_type": "message","message": "Ice storm","message_RU": "Ледяной шторм"}], //30不可防 -"s-3126-1000-1155-0": [{"type": "text","sub_type": "message","message": "Knock down","message_RU": "Огненный столб(опрокид)"}], //30不可防 -"s-3126-1000-2155-0": [{"type": "text","sub_type": "message","message": "Knock down","message_RU": "Огненный столб(опрокид)"}], //30不可防 -"s-3126-1000-1137-0": [{"type": "text","sub_type": "message","message": "Knock down","message_RU": "Опрокидывание"},{"type": "func","func": Spawnitem2.bind(null,553,0,0,2,1275,200,13000)}], -"s-3126-1000-2137-0": [{"type": "text","sub_type": "message","message": "Knock down","message_RU": "Опрокидывание"},{"type": "func","func": Spawnitem2.bind(null,553,0,0,2,1275,200,13000)}], -"s-3126-1000-1138-0": [{"type": "text","sub_type": "message","message": "AOE","message_RU": "AOE"}], -"s-3126-1000-2138-0": [{"type": "text","sub_type": "message","message": "AOE","message_RU": "AOE"}], -"s-3126-1000-1139-0": [{"type": "text","sub_type": "message","message": "60°","message_RU": "60° всем (Лёд)"}], -"s-3126-1000-2139-0": [{"type": "text","sub_type": "message","message": "60°","message_RU": "60° всем (Лёд)"}], -"s-3126-1000-1140-0": [{"type": "text","sub_type": "message","message": "40","message_RU": "40° всем (Огонь)"}], -"s-3126-1000-2140-0": [{"type": "text","sub_type": "message","message": "40","message_RU": "40° всем (Огонь)"}], -"s-3126-1000-1212-0": [{"type": "func","func": skilld_event.bind(null, 212)},{"type": "func","func": Spawnitem2.bind(null,445,0,0,8,425,200,6000)}], -"s-3126-1000-1215-0": [{"type": "func","func": skilld_event.bind(null, 215)},{"type": "func","func": Spawnitem2.bind(null,445,0,0,8,425,200,6000)}], -"s-3126-1000-1213-0": [{"type": "func","func": skilld_event.bind(null, 213)},{"type": "func","func": Spawnitem2.bind(null,445,0,0,8,425,200,6000)}], -"s-3126-1000-1214-0": [{"type": "func","func": skilld_event.bind(null, 214)},{"type": "func","func": Spawnitem2.bind(null,445,0,0,8,425,200,6000)}], -"qb-3126-1000-3026005": [{"type": "func","func": skilld_event.bind(null, 3026005)}],//吃同色恐惧 -"qb-3126-1000-3026004": [{"type": "func","func": skilld_event.bind(null, 3026004)}],//吃异色愤怒 -"qb-3126-1000-3126005": [{"type": "func","func": skilld_event.bind(null, 3126005)}],//吃同色恐惧 -"qb-3126-1000-3126004": [{"type": "func","func": skilld_event.bind(null, 3126004)}],//吃异色愤怒 -"ae-0-0-99020020": [{"type": "func","func": skilld_event.bind(null, 99020020)}], -"am-3126-1000-30260001": [{"type": "func","func": skilld_event.bind(null, 3026001)}],//红色 -"am-3126-1000-30260002": [{"type": "func","func": skilld_event.bind(null, 3026002)}],//蓝色 -"am-3126-1000-31260001": [{"type": "func","func": skilld_event.bind(null, 3126001)}],//红色 -"am-3126-1000-31260002": [{"type": "func","func": skilld_event.bind(null, 3126002)}]//蓝色 + + return object; }; \ No newline at end of file diff --git a/guides/3201.js b/guides/3201.js index 4f824800..679bc5cb 100644 --- a/guides/3201.js +++ b/guides/3201.js @@ -1,433 +1,166 @@ -// Паркин хард -let notice_guide = true; -let notice = true ; -let boss = 3; -let lastboss = false; -let player, entity, library, effect; -let print = false; - -function SpawnThing5( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "Бомба замедленного действия", - "message": "Бомба замедленного действия" - }, {loc: shield_loc}); -} - -function SpawnThing6( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "Бомба", - "message": "Бомба" - }, {loc: shield_loc}); -} - - - - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } -// 召喚光柱 ,告示牌提示( 角度 距离 延迟时间 时间) - function SpawnThing( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "SAFE SPOT", - "message": "SAFE" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} - - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 时间) -function Spawnitem2(item,degrees,distance, intervalDegrees, radius, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - -function start_boss() { - lastboss = true ; - notice = true ; - boss = 3; - print = true ; -} -function start_boss1() { - print = true ; -} -function skilld_event(skillid, handlers, event, ent, dispatch) { - -if (skillid === 203 || skillid === 204) { - notice = false; - setTimeout(() => notice = true, 4000); - -} - -if (notice && skillid === 234 && boss === 1 ) { //203 204技能没出/满足234 打手位置本体技能/满足吃分身buff -/*handlers['text']({ -"sub_type": "message", -"message_RU": "дд дебафф!!!", -"message": "dps" - -}); */ -setTimeout(function () { -handlers['text']({ -"sub_type": "message", -"message_RU": "Скоро дебафф!", -"message": "debuff coming soon!" -}); - }, 55000); -} -if (notice && skillid === 234 && boss === 0 ) { //203 204技能没出/满足234 打手位置本体技能/满足吃本体buff -/*handlers['text']({ -"sub_type": "message", -"message_RU": "танк дебафф!!!", -"message": "tank" -}); */ -setTimeout(function () { -handlers['text']({ -"sub_type": "message", -"message_RU": "скоро дебафф!", -"message": "скоро дебафф!" -}); - }, 55000); -} -if (skillid === 32010224) { //吃分身buff - boss = 1; -setTimeout(function () { - if (boss === 1){ -handlers['text']({ -"sub_type": "message", -"message_RU": "Смена дебаффа!", -"message": "debuff reload" -}); - boss = 3; -} - }, 80000); -} -if (skillid === 32010220) { //吃本体buff - boss = 0; -setTimeout(function () { - if (boss === 0){ -handlers['text']({ -"sub_type": "message", -"message_RU": "Смена дебаффа!", -"message": "debuff reload" -}); - boss = 3; -} - }, 80000); -} - -if (skillid === 203 && boss === 0 ) { -/*handlers['text']({ -"sub_type": "message", -"message_RU": "танк дебафф!!!", -"message": "tank" -}); */ -setTimeout(function () { -handlers['text']({ -"sub_type": "message", -"message_RU": "Скоро дебафф!!!", -"message": "debuff coming soon!" -}); - }, 55000); -} -if (skillid === 203 && boss === 1 ) { -/*handlers['text']({ -"sub_type": "message", -"message_RU": "дд дебафф!!!", -"message": "dps" -}); */ -setTimeout(function () { -handlers['text']({ -"sub_type": "message", -"message_RU": "Скоро дебафф!!!", -"message": "debuff coming soon!" -}); - }, 55000); -} - -if (skillid === 204 && boss === 1 ) { -/*handlers['text']({ -"sub_type": "message", -"message_RU": "танк дебафф!!!", -"message": "tank" -}); */ -setTimeout(function () { -handlers['text']({ -"sub_type": "message", -"message_RU": "Скоро дебафф!!", -"message": "debuff coming soon!" -}); - }, 55000); -} -if (skillid === 204 && boss === 0 ) { -/*handlers['text']({ -"sub_type": "message", -"message_RU": "дд дебафф!!!", -"message": "dps" -}); */ -setTimeout(function () { -handlers['text']({ -"sub_type": "message", -"message_RU": "Скоро дебафф!!!", -"message": "debuff coming soon!" -}); - }, 55000); -} - -if (skillid === 203 && boss === 3 ) { -/*handlers['text']({ -"sub_type": "message", -"message_RU": "дд дебафф!!!", -"message": "dps entity" -}); */ -setTimeout(function () { -handlers['text']({ -"sub_type": "message", -"message_RU": "Скоро дебафф!!!", -"message": "debuff coming soon!" -}); - }, 55000); -} -if (skillid === 204 && boss === 3 ) { -/*handlers['text']({ -"sub_type": "message", -"message_RU": "танк дебафф!!!", -"message": "tank entity" -}); */ -setTimeout(function () { -handlers['text']({ -"sub_type": "message", -"message_RU": "Скоро дебафф!!!", -"message": "debuff coming soon!" -}); - }, 55000); -} -if (notice && skillid === 234 && boss === 3 ) { -/*handlers['text']({ -"sub_type": "message", -"message_RU": "дд дебафф!!!", -"message": "dps entity" -}); */ -setTimeout(function () { -handlers['text']({ -"sub_type": "message", -"message_RU": "Скоро дебафф!!!", -"message": "debuff coming soon!" -}); - }, 55000); -} - -if (skillid === 9203100 && lastboss ) { - -/*handlers['text']({ -"sub_type": "message", -"message_RU": "смерть +1!!" -}); */ -} -} - -function print_eighty(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "80%", -"message_RU": "Дебафф" -}); -} -print = false; -} -function print_seventyfive(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "75%", -"message_RU": "Камни" -}); -} -print = false; -} -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - // First boss - // "h-3201-1000-100": [{"type": "func","func": guid_voice}], - - // 1王 - //"s-3201-1000-103-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "dodge","message_RU": "Эвейд!!!" }], - "s-3201-1000-104-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "Stun attack","message_RU": "Стан!!!" }], - "s-3201-1000-107-0": [{"type": "text","sub_type": "message","message": "back","message_RU": "|Полоса|" }, - {"type": "text","sub_type": "message","delay": 2250,"message": "pull","message_RU": "Откид!!!"}], - - "s-3201-1000-111-0": [{"type": "text","sub_type": "message","message": "Ranged DPS attention","message_RU": "Волна назад" }], - "s-3201-1000-112-0": [{"type": "text","sub_type": "message","message": "left right","message_RU": "лево + право" }], - "s-3201-1000-113-0": [{"type": "text","sub_type": "message","message": "Jump (Slow)","message_RU": "Прыжок" }, - {"type": "text","sub_type": "message","delay": 1500,"message": "pull","message_RU": "Камень!"} - ], - //{"type": "text","sub_type": "notification","delay": 1500,"message": "pull","message_RU": "Камень!"} - - "s-3201-1000-118-0": [{"type": "text","sub_type": "message","message": "Jump P (Slow)","message_RU": "прыжок" }, - {"type": "text","sub_type": "message","delay": 1500,"message": "pull","message_RU": "Камень!"}, - ], - //{"type": "text","sub_type": "notification","delay": 1500,"message": "pull","message_RU": "Камень!"} - "s-3201-1000-119-0": [{"type": "text","sub_type": "message","delay": 1000,"message": "Back + Front","message_RU": "вперед + назад" }], - //"s-3201-1000-121-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right","message_RU": "право" }], - //"s-3201-1000-122-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left","message_RU": "лево" }], - "s-3201-1000-124-0": [{"type": "text","class_position":"tank","sub_type": "msgcg","message": "Stun attack","message_RU": "Стан(фаст)"}], - "s-3201-1000-127-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "back","message_RU": "|Полоса| (фаст)"}, - {"type": "text","class_position":"heal","sub_type": "message","message": "back","message_RU": "|Полоса| (фаст)"}], - //"s-3201-1000-128-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "Triple Attack","message_RU": "Комба"}], - "s-3201-1000-131-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "Ranged DPS attention","message_RU": "Волна назад (фаст)"}, - {"type": "text","class_position":"heal","sub_type": "message","message": "Ranged DPS attention","message_RU": "Волна назад (фаст)"}], - "s-3201-1000-132-0": [{"type": "text","sub_type": "message","message": "left right ←→","message_RU": "лево + право (фаст)" }], - "s-3201-1000-133-0": [{"type": "text","sub_type": "message","delay": 500,"message": "Jump (Fast)","message_RU": "Прыжок (фаст)" }], - "s-3201-1000-138-0": [{"type": "text","sub_type": "message","delay": 500,"message": "Jump P (Fast)","message_RU": "Прыжок (фаст)" }], - "s-3201-1000-139-0": [{"type": "text","sub_type": "message","message": "Back + Front (Fast)","message_RU": "вперед + назад (фаст)" }], - //"s-3201-1000-141-0": [{"type": "text","class_position":"tank","sub_type": "message","message_RU": "双手前砸 (медленно)" }], - //"s-3201-1000-142-0": [{"type": "text","class_position":"tank","sub_type": "message","message_RU": "1правая+левая"}], - "s-3201-1000-143-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left→right","message_RU": "слева-справа" }, - {"type": "text","class_position":"dps","sub_type": "message","message": "right←left","message_RU": "справа-слева" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "right←left","message_RU": "справа-слева" }, - {"type": "func","func": SpawnThing.bind(null,150,300,100,2715)}, //1 - {"type": "func","func": SpawnThing.bind(null,225,300,2800,4175)}, //6 - {"type": "func","func": SpawnThing.bind(null,30,300,100,1000)}, //1 - {"type": "func","func": SpawnThing.bind(null,330,300,1100,5000)} //7 - ], - "s-3201-1000-145-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left→right","message_RU": "слева-справа" }, - {"type": "text","class_position":"dps","sub_type": "message","message": "right←left","message_RU": "справа-слева" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "right←left","message_RU": "справа-слева" }, - {"type": "func","func": SpawnThing.bind(null,30,300,100,1000)}, //1 - {"type": "func","func": SpawnThing.bind(null,330,300,1100,5000)}, //7 - {"type": "func","func": SpawnThing.bind(null,150,300,100,2000)}, //1 - {"type": "func","func": SpawnThing.bind(null,225,300,2500,5000)} //6 - ], - "s-3201-1000-148-0": [{"type": "text","sub_type": "message","message_RU": "Правая рука(подлет)" }], - "s-3201-1000-149-0": [{"type": "text","sub_type": "message","message_RU": "Левая рука(подлет)" }], - "s-3201-1000-151-0": [{"type": "text","sub_type": "message","message": "Stun attack","message_RU": "Стан!!!" }], - "s-3201-1000-305-0": [{"type": "text","sub_type": "message","message": "Pizza","message_RU": "Pizza" }], - "s-3201-1000-311-0": [{"type": "text","sub_type": "message","message_RU": "Мёд!" }, - {"type": "text","sub_type": "message","delay": 4000,"message": "pull","message_RU": "откид!"}], - "s-3201-1000-312-0": [{"type": "text","sub_type": "message","message_RU": "Мёд (фаст)!!!" }, - {"type": "text","sub_type": "message","delay": 2000,"message": "pull","message_RU": "откид!!!"}], - "s-3201-1000-313-0": [{"type": "text","sub_type": "msgcg","message": "Circles (Slow)","message_RU": "Кольцо"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,75,15,300,6000)}], - "s-3201-1000-314-0": [{"type": "text","sub_type": "message","message": "Circles (Fast)","message_RU": "Кольцо (фаст)" }, - {"type": "func","func": Spawnitem2.bind(null,912,0,75,15,300,6000)}], - - //2 boss - - "h-3201-2000-99": [{"type": "func","func": start_boss}], - - // "s-3201-2000-101-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right left","message_RU": "右手 左手" }], - // "s-3201-2000-102-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left right","message_RU": "左手 右手" }], - //"s-3201-2000-103-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "spin","message_RU": "旋转顺" }], - // "s-3201-2000-104-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right","message_RU": "右手" }], - // "s-3201-2000-105-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_RU": "前突刺" }], - // "s-3201-2000-107-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left","message_RU": "左手" }], - "s-3201-2000-108-0": [{"type": "text","sub_type": "message","message": "Back attack!","message_RU": "Вперед | Назад" }], - // "s-3201-2000-109-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "quaternion Attack","message_RU": "4连击" }], - "s-3201-2000-110-0": [{"type": "text","sub_type": "message","message_RU": "?" }], - "s-3201-2000-114-0": [{"type": "text","sub_type": "message","message_RU": "??" }], - // "s-3201-2000-116-0": [{"type": "text","sub_type": "message","message": "back","message_RU": "后喷" }], - "s-3201-2000-150-0": [{"type": "text","sub_type": "message","message_RU": "фантом" }], - //"s-3201-2000-201-0": [{"type": "text","sub_type": "message","message": "back 8m","message_RU": "Движение назад 8 м" }], - //"s-3201-2000-202-0": [{"type": "text","sub_type": "message","message": "front 8m","message_RU": "Движение вперед 8м" }], - "s-3201-2000-203-0": [{"type": "func","func": skilld_event.bind(null, 203)}], - "s-3201-2000-204-0": [{"type": "func","func": skilld_event.bind(null, 204)}], - - "am-3201-320126-32010224": [{"type": "text","sub_type": "notification","message": "next true","message_RU": "след правда" },{"type": "func","func": skilld_event.bind(null, 32010224)}], - "am-3201-2000-32010220": [{"type": "text","sub_type": "notification","message": "next false","message_RU": "след ложь" },{"type": "func","func": skilld_event.bind(null, 32010220)}], - "ae-0-0-9203100": [{"type": "func","func": skilld_event.bind(null, 9203100)}], - - "s-3201-2000-211-0": [{"type": "text","sub_type": "message","message": "front","message_RU": "???" }], - - "s-3201-2000-213-0": [{"type": "text","sub_type": "message","message": "back","message_RU": "????" }], - - // "s-3201-2000-226-0": [{"type": "text","sub_type": "message","message_RU": "空中吸收 蓄力" }], - "s-3201-2000-228-0": [ - {"type": "text","sub_type": "message","message": "Team up","message_RU": "Камни (вместе)!!!" }, - {"type": "text","sub_type": "message","delay": 3500,"message": "dodge","message_RU": "Эвейд"}, - ], - //{"type": "text","sub_type": "notification","delay": 3500,"message": "dodge","message_RU": "Эвейд"} - // {"type": "text","sub_type": "message","delay": 65000,"message": "dodge","message_RU": "?????"}, - //"s-3201-2000-229-0": [{"type": "text","sub_type": "message","message": "3","message_RU": "3 Бомбы" }], - "s-3201-2000-230-0": [{"type": "text","sub_type": "msgcg","message": "AOE","message_RU": "AOE!!" }], - "s-3201-2000-231-0": [{"type": "text","sub_type": "msgcg","message": "OUT safe ↓","message_RU": "От"}, - - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,300,3000)}], - "s-3201-2000-232-0": [{"type": "text","sub_type": "msgcg","message": "IN safe ↑","message_RU": "К"}, - - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,300,3000)}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,1000,3000)} - ], - //"s-3201-2000-233-0": [{"type": "text","sub_type": "message","message": "5","message_RU": "5 бомб" }], - -"h-3201-2000-81": [{"type": "func","func": print_eighty}], -"h-3201-2000-78": [{"type": "func","func": start_boss1}], -"h-3201-2000-76": [{"type": "func","func": print_seventyfive}], - - - "s-3201-2000-234-0": [{"type": "func","func": skilld_event.bind(null, 234)}], - // "s-3201-2000-235-0": [{"type": "text","sub_type": "message","message": "Debuffs","message_RU": "注视2人吃鉴定" }] - "s-3201-2000-236-0": [{"type": "text","sub_type": "message","message": "counter","message_RU": "Конус вперед (байт)" }], - - - /*"s-3201-320115-203": [{"type": "func","func": SpawnThing.bind(null,0, 0, 100, 3000)}, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,15,125,3000)} - ], // 1王水晶位 */ - - //320124-------------302 301 - - /*"s-3201-320120-204": [{"type": "func","func": SpawnThing5.bind(null,0, 0, 10, 1100)}, //炸弹慢 - {"type": "func","func": Spawnitem2.bind(null,445,0,0,15,150,1100)}], - - "s-3201-320120-205": [{"type": "func","func": SpawnThing6.bind(null,0, 0, 10, 1100)}, //炸弹 - {"type": "func","func": Spawnitem2.bind(null,445,0,0,15,150,1100)}]*/ - +// Gossamer Vault (Hard) +// +// made by michengs / ITunk + +module.exports = (dispatch, handlers, guide, lang) => { + let boss = null; + + return { + // 1 BOSS + "nd-3201-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + //"s-3201-1000-103-0": [{ type: "text", class_position:"tank", sub_type: "message", message: "Dodge", message_RU: "Эвейд!" }], + "s-3201-1000-104-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Stun attack", message_RU: "Стан!" }], + "s-3201-1000-107-0": [ + { type: "text", sub_type: "message", message: "Back", message_RU: "Полоса" }, + { type: "text", sub_type: "message", delay: 2250, message: "Pull", message_RU: "Откид" }, + { type: "spawn", func: "vector", args: [553, 90, 139, 173, 800, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 270, 139, -173, 800, 0, 3000] } + ], + "s-3201-1000-111-0": [ + { type: "text", sub_type: "message", message: "Back Wave", message_RU: "Волна назад" }, + { type: "spawn", func: "vector", args: [553, 0, 100, 112, 800, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 100, -112, 800, 0, 3000] } + ], + //"s-3201-1000-112-0": [{ type: "text", sub_type: "message", message: "Left + Right", message_RU: "Лево + Право" }], + "s-3201-1000-113-0": [ + { type: "text", sub_type: "message", message: "Jump (Slow)", message_RU: "Прыжок" }, + { type: "text", sub_type: "message", delay: 1500, message: "Pull", message_RU: "Камень" } + ], + "s-3201-1000-118-0": [ + { type: "text", sub_type: "message", message: "Jump (Slow)", message_RU: "Прыжок" }, + { type: "text", sub_type: "message", delay: 1500, message: "Pull", message_RU: "Камень" } + ], + "s-3201-1000-119-0": [ + { type: "text", sub_type: "message", delay: 1000, message: "Back + Front", message_RU: "Вперед + Назад" }, + { type: "spawn", func: "vector", args: [553, 2, 0, 70, 800, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 2, 0, 110, 800, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 2, 0, 250, 800, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 2, 0, 290, 800, 0, 2500] } + ], + //"s-3201-1000-121-0": [{ type: "text", class_position:"tank", sub_type: "message", message: "Right", message_RU: "Право" }], + //"s-3201-1000-122-0": [{ type: "text", class_position:"tank", sub_type: "message", message: "Left", message_RU: "Лево" }], + "s-3201-1000-124-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Stun attack", message_RU: "Стан (фаст)" }], + "s-3201-1000-127-0": [ + { type: "text", class_position: "dps", sub_type: "message", message: "Back", message_RU: "Полоса (фаст)" }, + { type: "text", class_position: "heal", sub_type: "message", message: "Back", message_RU: "Полоса (фаст)" }, + { type: "spawn", func: "vector", args: [553, 90, 139, 173, 800, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 270, 139, -173, 800, 0, 3000] } + ], + //"s-3201-1000-128-0": [{ type: "text", class_position:"tank", sub_type: "message", message: "Triple Attack", message_RU: "Комба" }], + "s-3201-1000-131-0": [ + { type: "text", class_position: "dps", sub_type: "message", message: "Back Wave", message_RU: "Волна назад (фаст)" }, + { type: "text", class_position: "heal", sub_type: "message", message: "Back Wave", message_RU: "Волна назад (фаст)" }, + { type: "spawn", func: "vector", args: [553, 0, 100, 112, 800, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 100, -112, 800, 0, 3000] } + ], + //"s-3201-1000-132-0": [{ type: "text", sub_type: "message", message: "Left + Right", message_RU: "Лево + Право (фаст)" }], + "s-3201-1000-133-0": [{ type: "text", sub_type: "message", delay: 500, message: "Jump (Fast)", message_RU: "Прыжок (фаст)" }], + "s-3201-1000-138-0": [{ type: "text", sub_type: "message", delay: 500, message: "Jump P (Fast)", message_RU: "Прыжок (фаст)" }], + "s-3201-1000-139-0": [ + { type: "text", sub_type: "message", message: "Back + Front (Fast)", message_RU: "Вперед + Назад (фаст)" }, + { type: "spawn", func: "vector", args: [553, 2, 0, 70, 800, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 2, 0, 110, 800, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 2, 0, 250, 800, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 2, 0, 290, 800, 0, 2500] } + ], + "s-3201-1000-143-0": [ + { type: "text", class_position: "tank", sub_type: "message", message: "Left > Right", message_RU: "Слева > Справа" }, + { type: "text", class_position: "dps", sub_type: "message", message: "Right > Left", message_RU: "Справа > Слева" }, + { type: "text", class_position: "heal", sub_type: "message", message: "Right > Left", message_RU: "Справа > Слева" }, + { type: "spawn", func: "marker", args: [false, 150, 300, 100, 2715, true, null] }, // 1 + { type: "spawn", func: "marker", args: [false, 225, 300, 2800, 4175, true, null] }, // 6 + { type: "spawn", func: "marker", args: [false, 30, 300, 100, 1000, true, null] }, // 1 + { type: "spawn", func: "marker", args: [false, 330, 300, 1100, 5000, true, null] } // 7 + ], + "s-3201-1000-145-0": [ + { type: "text", class_position: "tank", sub_type: "message", message: "Left > Right", message_RU: "Слева > Справа" }, + { type: "text", class_position: "dps", sub_type: "message", message: "Right > Left", message_RU: "Справа > Слева" }, + { type: "text", class_position: "heal", sub_type: "message", message: "Right > Left", message_RU: "Справа > Слева" }, + { type: "spawn", func: "marker", args: [false, 30, 300, 100, 1000, true, null] }, // 1 + { type: "spawn", func: "marker", args: [false, 330, 300, 1100, 5000, true, null] }, // 7 + { type: "spawn", func: "marker", args: [false, 150, 300, 100, 2000, true, null] }, // 1 + { type: "spawn", func: "marker", args: [false, 225, 300, 2500, 5000, true, null] } // 6 + ], + "s-3201-1000-148-0": [ + { type: "text", sub_type: "message", message: "Right Hand (Flying)", message_RU: "Правая рука (подлет)" }, + { type: "spawn", func: "circle", args: [false, 553, 20, 150, 10, 320, 0, 4000] } + ], + "s-3201-1000-149-0": [ + { type: "text", sub_type: "message", message: "Left Hand (Flying)", message_RU: "Левая рука (подлет)" }, + { type: "spawn", func: "circle", args: [false, 553, 340, 150, 10, 320, 0, 4000] } + ], + "s-3201-1000-151-0": [{ type: "text", sub_type: "message", message: "Stun Attack", message_RU: "Стан!" }], + "s-3201-1000-305-0": [{ type: "text", sub_type: "message", message: "Pizza", message_RU: "Pizza" }], + "s-3201-1000-311-0": [ + { type: "text", sub_type: "message", message: "Slow", message_RU: "Мёд" }, + { type: "text", sub_type: "message", delay: 4000, message: "Pull", message_RU: "Откид!" } + ], + "s-3201-1000-312-0": [ + { type: "text", sub_type: "message", message: "Fast", message_RU: "Мёд (фаст)" }, + { type: "text", sub_type: "message", delay: 2000, message: "Pull", message_RU: "Откид!" } + ], + "s-3201-1000-313-0": [ + { type: "text", sub_type: "message", message: "Circles (Slow)", message_RU: "Кольцо" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 75, 10, 300, 0, 6000] } + ], + "s-3201-1000-314-0": [ + { type: "text", sub_type: "message", message: "Circles (Fast)", message_RU: "Кольцо (фаст)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 75, 10, 300, 0, 6000] } + ], + + // 2 BOSS + "ns-3201-2000": [{ type: "func", func: () => boss = null }], + "nd-3201-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "am-3201-320126-32010224": [ + { type: "func", func: () => boss = 1 }, + { type: "text", delay: 52000, sub_type: "notification", message: "True Debuff in 5 seconds", message_RU: "Правда через 5 сек." }, + { type: "event", delay: 80000, args: [ + { type: "func", check_func: () => boss === 1, func: () => boss = null }, + { type: "text", check_func: () => boss === 1, sub_type: "message", message_RU: "Смена дебаффа", message: "Debuff reload" } + ] } + ], + "am-3201-2000-32010220": [ + { type: "func", func: () => { boss = 0; } }, + { type: "text", delay: 52000, sub_type: "notification", message: "False Debuff in 5 seconds", message_RU: "Ложь через 5 сек." }, + { type: "event", delay: 80000, args: [ + { type: "func", check_func: () => boss === 0, func: () => boss = null }, + { type: "text", check_func: () => boss === 0, sub_type: "message", message_RU: "Смена дебаффа", message: "Debuff reload" } + ] } + ], + "am-3201-320121-32010222": [{ type: "text", sub_type: "notification", message: "Spike in 5 seconds", message_RU: "Шип через 5 сек." }], + "h-3201-2000-81": [{ type: "text", sub_type: "message", message: "80%", message_RU: "Дебафф" }], + "h-3201-2000-76": [{ type: "text", sub_type: "message", message: "75%", message_RU: "Камни" }], + "s-3201-2000-108-0": [{ type: "text", sub_type: "message", message: "Back Attack!", message_RU: "Откид назад!" }], + "s-3201-2000-150-0": [{ type: "text", sub_type: "message", message: "Phantom", message_RU: "Фантом" }], + "s-3201-2000-228-0": [ + { type: "text", sub_type: "message", message: "Team Up", message_RU: "Камни (вместе)!!!" }, + { type: "text", sub_type: "message", delay: 3500, message: "Dodge", message_RU: "Эвейд" } + ], + "s-3201-2000-230-0": [{ type: "text", sub_type: "message", message: "AOE", message_RU: "AOE!!" }], + + "s-3201-2000-231-0": [ + { type: "text", sub_type: "message", message: "Out Safe", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 3000] } + ], + "s-3201-2000-232-0": [{ type: "text", sub_type: "message", message: "In Safe", message_RU: "К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 3, 1000, 0, 3000] } + ], + "s-3201-2000-236-0": [{ type: "text", sub_type: "message", message: "Counter Attack (Bait)", message_RU: "Конус вперед (байт)" }], + "s-3201-2000-238-0": [ + { type: "text", sub_type: "message", message: "Out > In", message_RU: "От него > К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 3000] } + ], + "s-3201-2000-239-0": [ + { type: "text", sub_type: "message", message: "In > Out", message_RU: "К нему > От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 3, 1000, 0, 3000] } + ] + }; }; \ No newline at end of file diff --git a/guides/3202.js b/guides/3202.js new file mode 100644 index 00000000..0d1d77a1 --- /dev/null +++ b/guides/3202.js @@ -0,0 +1,206 @@ +// Draakon Arena (Hard) +// +// made by Kuroine / HSDN / Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + return { + "nd-3202-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + + // Ress bait / range check + "s-3202-1000-1107-0": [{ type: "text", sub_type: "message", message: "Spectral Throw (Bait)", message_RU: "Спектральный бросок (байт)" }, + { type: "text", sub_type: "message", delay: 1400, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3202-1000-2107-0": [{ type: "text", sub_type: "message", message: "Spectral Throw (Bait)", message_RU: "Спектральный бросок (байт)" }, + { type: "text", sub_type: "message", delay: 1400, message: "Dodge!", message_RU: "Эвейд!" } + ], + // Basic attacks + "s-3202-1000-1103-0": [{ type: "text", sub_type: "message", message: "2 Hits | Bleed", message_RU: "2 удара | Кровоток" }], + "s-3202-1000-2103-0": [{ type: "text", sub_type: "message", message: "2 Hits | Bleed", message_RU: "2 удара | Кровоток" }], + "s-3202-1000-1113-0": [{ type: "text", sub_type: "message", message: "4 Hits Combo", message_RU: "4 удара комба" }], + "s-3202-1000-2113-0": [{ type: "text", sub_type: "message", message: "4 Hits Combo", message_RU: "4 удара комба" }], + "s-3202-1000-1105-0": [{ type: "text", sub_type: "message", message: "Uppercut | Stun", message_RU: "Удар снизу | Стан" }], + "s-3202-1000-2105-0": [{ type: "text", sub_type: "message", message: "Uppercut | Stun", message_RU: "Удар снизу | Стан" }], + "s-3202-1000-1106-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "s-3202-1000-2106-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + // 120 > 114 + "s-3202-1000-1120-0": [ + { type: "text", sub_type: "message", delay: 400, message: "Stun", message_RU: "Несколько ударов | Стан (AOE)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 8, 425, 100, 3000] } + ], + "s-3202-1000-2120-0": [ + { type: "text", sub_type: "message", delay: 400, message: "Stun", message_RU: "Несколько ударов | Стан (AOE)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 8, 425, 100, 3000] } + ], + "s-3202-1000-1114-0": [ + { type: "text", sub_type: "message", delay: 140, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3202-1000-2114-0": [ + { type: "text", sub_type: "message", delay: 220, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3202-1000-1111-0": [{ type: "text", sub_type: "message", message: "Leap (Stun)", message_RU: "Прыжок (стан)" }, + { type: "text", sub_type: "message", delay: 1800, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3202-1000-2111-0": [{ type: "text", sub_type: "message", message: "Leap (Stun)", message_RU: "Прыжок (стан)" }, + { type: "text", sub_type: "message", delay: 1750, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3202-1000-1115-0": [ + { type: "text", sub_type: "message", message: "AOE Bombs (Spread)", message_RU: "AOE бомбы (разойтись)" }, + { type: "text", sub_type: "message", delay: 3000, message: "Gather!", message_RU: "Собраться!" } + ], + "s-3202-1000-2115-0": [ + { type: "text", sub_type: "message", message: "AOE Bombs (Spread)", message_RU: "AOE бомбы (разойтись)" }, + { type: "text", sub_type: "message", delay: 3000, message: "Gather!", message_RU: "Собраться!" } + ], + "s-3202-1000-1112-0": [ + { type: "text", sub_type: "message", message: "Front | Back Kick", message_RU: "Разворот | Откид назад" }, + { type: "spawn", func: "vector", args: [553, 70, 110, 160, 350, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 290, 110, -160, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 210, 360, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 200, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 190, 343, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 150, 360, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 160, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 170, 343, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 180, 340, 0, 3000] } + ], + "s-3202-1000-2112-0": [ + { type: "text", sub_type: "message", message: "Front | Back Kick", message_RU: "Разворот | Откид назад" }, + { type: "spawn", func: "vector", args: [553, 70, 110, 160, 350, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 290, 110, -160, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 210, 360, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 200, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 190, 343, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 150, 360, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 160, 350, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 170, 343, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 180, 340, 0, 3000] } + ], + "s-3202-1000-1110-0": [ + { type: "text", sub_type: "message", message: "Donuts + Wave", message_RU: "Бублики + Волна" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 6, 650, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 4000] } + ], + "s-3202-1000-2110-0": [ + { type: "text", sub_type: "message", message: "Donuts + Wave", message_RU: "Бублики + Волна" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 6, 650, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 4000] } + ], + "s-3202-1000-1109-0": [ + { type: "text", sub_type: "message", message: "Dodge (Knockdown)", message_RU: "Эвейд (опрокид)" }, + { type: "text", sub_type: "message", delay: 1300, message: "Dodge (Spin)", message_RU: "Эвейд (крутилка)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 100, 8, 420, 0, 1000] }, + { type: "spawn", func: "circle", delay: 1000, args: [true, 553, 180, 0, 8, 415, 0, 3000] } + ], + "s-3202-1000-2109-0": [ + { type: "text", sub_type: "message", message: "Dodge (Knockdown)", message_RU: "Эвейд (опрокид)" }, + { type: "text", sub_type: "message", delay: 1300, message: "Dodge (Spin)", message_RU: "Эвейд (крутилка)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 100, 8, 420, 0, 1000] }, + { type: "spawn", func: "circle", delay: 1000, args: [true, 553, 180, 0, 8, 415, 0, 3000] } + ], + "s-3202-1000-1304-0": [{ type: "text", sub_type: "message", message: "Shield!", message_RU: "ЩИТ!" }], + "s-3202-1000-2304-0": [{ type: "text", sub_type: "message", message: "Shield!", message_RU: "ЩИТ!" }], + "ab-3202-1000-32021006": [ + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ], + // Right Foot (outward waves) + "s-3202-1000-1121-0": [ + { type: "text", sub_type: "message", message: "Pizza | Waves (Out > In)", message_RU: "Пицца | Волны (от него > к нему)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 550, 0, 3000] }, + { type: "spawn", func: "marker", args: [false, 80, 300, 0, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 280, 300, 0, 3500, true, null] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 60, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 120, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 240, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 300, 450, 0, 3500] }, + { type: "text", sub_type: "message", delay: 1700, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3202-1000-2121-0": [ + { type: "text", sub_type: "message", message: "Pizza | Waves (Out > In)", message_RU: "Пицца | Волны (от него > к нему)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 550, 0, 3000] }, + { type: "spawn", func: "marker", args: [false, 80, 300, 0, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 280, 300, 0, 3500, true, null] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 60, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 120, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 240, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 300, 450, 0, 3500] }, + { type: "text", sub_type: "message", delay: 1720, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3202-1000-1122-0": [{ type: "spawn", func: "marker", args: [false, 0, 200, 500, 2000, true, null] }], + "s-3202-1000-1123-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 295, 550, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 85, 550, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [85, 295, 912, 0, 0, 6, 550, 0, 2000] } + ], + "s-3202-1000-2122-0": [{ type: "spawn", func: "marker", args: [false, 0, 200, 500, 2000, true, null] }], + "s-3202-1000-2123-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 295, 550, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 85, 550, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [85, 295, 912, 0, 0, 6, 550, 0, 2000] } + ], + "s-3202-1000-1127-0": [ + { type: "text", sub_type: "message", message: "Waves (Out > In)", message_RU: "Волны (от него > к нему)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 14, 160, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 390, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 6, 620, 0, 3000] } + ], + "s-3202-1000-2127-0": [ + { type: "text", sub_type: "message", message: "Waves (Out > In)", message_RU: "Волны (от него > к нему)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 14, 160, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 390, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 6, 620, 0, 3000] } + ], + // Left Foot (inward waves) + "s-3202-1000-1124-0": [ + { type: "text", sub_type: "message", message: "Pizza | Waves (In > Out)", message_RU: "Пицца | Волны (к нему > от него)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 550, 0, 3000] }, + { type: "spawn", func: "marker", args: [false, 80, 300, 0, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 280, 300, 0, 3500, true, null] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 60, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 120, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 240, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 300, 450, 0, 3500] }, + { type: "text", sub_type: "message", delay: 1550, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3202-1000-2124-0": [ + { type: "text", sub_type: "message", message: "Pizza | Waves (In > Out)", message_RU: "Пицца | Волны (к нему > от него)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 550, 0, 3000] }, + { type: "spawn", func: "marker", args: [false, 80, 300, 0, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 280, 300, 0, 3500, true, null] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 60, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 120, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 240, 450, 0, 3500] }, + { type: "spawn", func: "vector", args: [912, 0, 50, 300, 450, 0, 3500] }, + { type: "text", sub_type: "message", delay: 1550, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-3202-1000-1125-0": [{ type: "spawn", func: "marker", args: [false, 0, 200, 500, 3000, true, null] }], + "s-3202-1000-1126-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 295, 550, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 85, 550, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [85, 295, 912, 0, 0, 6, 550, 0, 2000] } + ], + "s-3202-1000-2125-0": [{ type: "spawn", func: "marker", args: [false, 0, 200, 500, 3000, true, null] }], + "s-3202-1000-2126-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 295, 550, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 85, 550, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [85, 295, 912, 0, 0, 6, 550, 0, 2000] } + ], + "s-3202-1000-1128-0": [ + { type: "text", sub_type: "message", message: "Waves (In > Out)", message_RU: "Волны (к нему > от него)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 14, 160, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 390, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 6, 620, 0, 3000] } + ], + "s-3202-1000-2128-0": [ + { type: "text", sub_type: "message", message: "Waves (In > Out)", message_RU: "Волны (к нему > от него)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 14, 160, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 390, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 6, 620, 0, 3000] } + ] + }; +}; \ No newline at end of file diff --git a/guides/3203.js b/guides/3203.js new file mode 100644 index 00000000..18db0540 --- /dev/null +++ b/guides/3203.js @@ -0,0 +1,172 @@ +// Forbidden Arena [Nightmare Undying Warlord] +// +// made by HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + let timer1 = null; + let print_target = true; + let in_bait = false; + let gettingserious = false; // ~70% attacks unlocked like Flip Kick Stun + + function back_kick_event(skillid) { + if ([107, 310].includes(skillid)) { // Bait/Back Flip + in_bait = true; + dispatch.setTimeout(() => in_bait = false, 3500); + } + + if (skillid == 116) { // Haymaker + if (in_bait) { + handlers.text({ + sub_type: "message", + message: "Haymaker", + message_RU: "Мощный удар" + }); + } else { // 116 -> 146 + handlers.text({ + sub_type: "message", + message: "Haymaker | Back Kick", + message_RU: "Мощный удар | Откид назад" + }); + } + } + } + + function target_attack_event() { + if (print_target) { + dispatch.clearTimeout(timer1); + print_target = false; + dispatch.setTimeout(() => print_target = true, 5000); + + timer1 = dispatch.setTimeout(() => { + handlers.text({ + sub_type: "alert", + message: "Target attacks soon...", + message_RU: "Скоро таргет-атака..." + }); + }, 65000); + } + } + + return { + "nd-3203-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-3203-1000-99": [{ type: "func", func: () => gettingserious = false }], + "h-3203-1000-70": [{ type: "func", func: () => gettingserious = true }], + "h-3203-1000-30": [{ type: "text", sub_type: "message", message: "30%", message_RU: "30%" }], + + //"s-3203-1000-101-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Punch", message_RU: "Серия ударов" }], + "s-3203-1000-113-0": [ + { type: "text", sub_type: "message", message: "Roundhouse Kick | Stun", message_RU: "Удар с разворота | Стан", class_position: "tank", check_func: () => gettingserious }, + { type: "text", sub_type: "message", message: "Roundhouse Kick", message_RU: "Удар с разворота", class_position: "tank", check_func: () => !gettingserious } + ], + "s-3203-1000-111-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-3203-1000-120-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + //"s-3203-1000-102-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Combo", message_RU: "Комба" }], // 102 153/154 115/116 + "s-3203-1000-153-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Two Kicks", message_RU: "Два удара" }], // 153 108 + //"s-3203-1000-108-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Floor Punch", message_RU: "Удар о землю" }], + //"s-3203-1000-127-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Many Kicks", message_RU: "Несколько ударов" }], + + "s-3203-1000-121-0": [{ type: "text", sub_type: "message", message: "Flip Kick (Stun)", message_RU: "Удар в воздухе (стан)" }], + + "qb-3203-1000-32031000": [{ type: "text", sub_type: "message", message: "Bait (Dodge)", message_RU: "Байт (эвейд)" }], + // "s-3203-1000-124-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], // 305 124 + "s-3203-1000-107-0": [{ type: "func", func: back_kick_event, args: [107] }], + + "s-3203-1000-110-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 12, 420, 0, 3000] } + ], + "s-3203-1000-114-0": [ + { type: "text", sub_type: "message", message: "Leap (Knockdown)", message_RU: "Прыжок (опрокид)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 12, 240, 0, 2000] } + ], + //"s-3203-1000-154-0": [{ type: "text", sub_type: "message", message: "Jumping Kick", message_RU: "Удар в прыжке" }], // 154 310 116 + // 310 116 + "s-3203-1000-310-0": [ + { type: "text", sub_type: "message", message: "Back Flip | Haymaker", message_RU: "Сальто назад | Мощный удар" }, + { type: "func", func: back_kick_event, args: [310] } + ], + "s-3203-1000-116-0": [{ type: "func", func: back_kick_event, args: [116] }], // Haymaker + "s-3203-1000-115-0": [{ type: "text", sub_type: "message", message: "Haymaker (Tank)", message_RU: "Мощный удар (танк)" }], + "s-3203-1000-131-0": [{ type: "text", sub_type: "message", message: "Rhythmic Blows", message_RU: "Ураганная серия" }], // 131 132 133 + // 116 146 + "s-3203-1000-146-0": [ + { type: "text", sub_type: "message", message: "Back Kick", message_RU: "Откид назад" }, // 116 146 + { type: "spawn", func: "vector", args: [553, 90, 120, 170, 600, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 270, 120, -170, 600, 0, 3000] } + ], + + // Shield + "qb-3203-1000-32031006": [{ type: "text", sub_type: "message", message: "Shield!", message_RU: "Щит!" }], + + // Target "Ha" attacks 308 32031007 125 + "qb-3203-1000-32031007": [ + { type: "text", sub_type: "message", message: "Kick (Target)", message_RU: "Удар (таргет)", class_position: "tank" }, + { type: "text", sub_type: "message", message: "Dodge (Target)", message_RU: "Эвейд (таргет) ", class_position: ["heal", "dps"] }, + { type: "func", func: target_attack_event } + ], + // "s-3203-1000-125-0": [{ type: "text", sub_type: "message", message: "Kick", message_RU: "Удар" }], // 308 125 + + // Donuts + "qb-3203-1000-32031008": [{ type: "text", sub_type: "message", message: "Donuts: Out > In > Dodge", message_RU: "Бублики: От него > К нему > Эвейд" }], // 32031008 303/304 117 155 + "qb-3203-1000-32031009": [{ type: "text", sub_type: "message", message: "Donuts: In > Out > Dodge", message_RU: "Бублики: К нему > От него > Эвейд" }], // 32031009 303/304 118 155 + "s-3203-1000-303-0": [ + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 630, 0, 7000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 250, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 490, 0, 5000] } + ], + "s-3203-1000-304-0": [ + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 630, 0, 7000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 250, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 490, 0, 5000] } + ], + "s-3203-1000-155-0": [{ type: "text", sub_type: "message", delay: 50, message: "Dodge", message_RU: "Эвейд" }], + + // Stun 142 148 129 + "s-3203-1000-142-0": [{ type: "text", sub_type: "message", message: "Stun | Back Wave", message_RU: "Стан | Волна назад" }], + "s-3203-1000-148-0": [ + { type: "text", sub_type: "message", delay: 1300, message: "Dodge", message_RU: "Эвейд" }, + { type: "spawn", func: "circle", args: [true, 912, 0, -10, 12, 300, 0, 3000] } + ], + "s-3203-1000-129-0": [ + { type: "text", sub_type: "message", message: "Back Wave", message_RU: "Волна назад (откид)" }, + { type: "spawn", func: "vector", args: [912, 90, 210, 390, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 90, 140, 380, 350, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 90, 70, 370, 400, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 90, 0, 0, 400, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 270, 70, -370, 400, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 270, 140, -380, 350, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 270, 210, -390, 300, 0, 2000] } + ], + + // Jump 143-0 143-1 + "qb-3203-1000-32031001": [{ type: "text", sub_type: "message", message: "Bait on res", message_RU: "Байт на рес" }], + "s-3203-1000-143-0": [{ type: "text", sub_type: "message", message: "Jump (Stun)", message_RU: "Прыжок (стан)" }], + "s-3203-1000-143-1": [{ type: "spawn", func: "circle", args: [true, 553, 0, 0, 14, 240, 0, 2000] }], + + // AoE 313 314 + "s-3203-1000-313-0": [{ type: "text", sub_type: "message", message: "AOE", message_RU: "AOE" }], + "s-3203-1000-314-0": [{ type: "text", sub_type: "message", message: "Get Out", message_RU: "Выйти" }], + + // Explosion 32031003 152 / 135 + "s-3203-1000-152-0": [ + { type: "text", sub_type: "message", message: "Explosion (Stun)", message_RU: "Взрыв (стан)" }, + { type: "text", sub_type: "message", delay: 1000, message: "Dodge", message_RU: "Эвейд" }, + { type: "spawn", func: "circle", args: [true, 912, 0, 0, 8, 460, 0, 2500] }, + { type: "text", sub_type: "alert", delay: 58000, message: "Explosion soon...", message_RU: "Скоро взрыв..." } + ], + "s-3203-1000-135-0": [ + { type: "text", sub_type: "message", message: "Explosion (Stun)", message_RU: "Взрыв (стан)" }, + { type: "text", sub_type: "message", delay: 1000, message: "Dodge", message_RU: "Эвейд" }, + { type: "spawn", func: "circle", args: [true, 912, 0, 0, 8, 460, 0, 2500] }, + { type: "text", sub_type: "alert", delay: 58000, message: "Explosion soon...", message_RU: "Скоро взрыв..." } + ], + + // Debuff + "ae-0-0-32031011": [{ type: "text", sub_type: "alert", message: "Debuff Stack", message_RU: "Дебафф (стаки)" }], + "am-3203-1000-32031011": [{ type: "text", sub_type: "alert", message: "Debuff Stack", message_RU: "Дебафф (стаки)" }], + "am-3203-1000-32031012": [{ type: "text", sub_type: "alert", message: "Debuff Stack", message_RU: "Дебафф (стаки)" }] + }; +}; \ No newline at end of file diff --git a/guides/3204.js b/guides/3204.js new file mode 100644 index 00000000..124d080e --- /dev/null +++ b/guides/3204.js @@ -0,0 +1,107 @@ +// Catalepticon (Hard) +// +// made by HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + + let combo_count = 0; + + dispatch.hook("S_ABNORMALITY_BEGIN", dispatch._mod.majorPatchVersion >= 107 ? 5 : 4, event => { + if (event.id === 32040001) + handlers.marker({ id: event.target, color: "yellow", sub_delay: 1000000 }); + }); + + return { + "ns-3204-1000": [{ type: "func", func: () => combo_count = 0 }], + "nd-3204-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "marker_remove_all" } + ], + + "qb-3204-1000-32041000": [ + { type: "text", sub_type: "message", message: "Arrows", message_RU: "Стрелки" }, + { type: "func", func: () => combo_count = 0 } + ], + "qb-3204-1000-32042000": [{ type: "text", sub_type: "message", message: "Arrows + Line", message_RU: "Стрелки + полоса" }], + "qb-3204-1000-32042006": [ + { type: "text", sub_type: "message", message: "Cage", message_RU: "Клетка" }, + { type: "text", sub_type: "alert", message: "Cage soon...", message_RU: "Скоро клетка...", delay: 100000 } + ], + "qb-3204-1000-32042009": [ + { type: "text", sub_type: "message", message: "Skeletons", message_RU: "Скелеты" }, + { type: "text", sub_type: "alert", message: "Skeletons soon...", message_RU: "Скоро скелеты...", delay: 220000 } + ], + + "h-3204-1000-90": [{ type: "text", sub_type: "message", message: "90%", message_RU: "90%" }], + "h-3204-1000-75": [{ type: "text", sub_type: "message", message: "75%", message_RU: "75%" }], + "h-3204-1000-40": [{ type: "text", sub_type: "message", message: "40%", message_RU: "40%" }], + + "s-3204-1000-104-0": [ + { type: "text", sub_type: "message", message: "Stun (AOE)", message_RU: "Стан (АОЕ)" }, + { type: "spawn", func: "circle", args: [true, 553, 180, -50, 10, 380, 0, 2000] } + ], + "s-3204-1000-107-0": [ + { type: "text", sub_type: "message", message: "Line Forward + Side Lines", message_RU: "Полоса вперед + полосы по бокам" }, + { type: "spawn", func: "vector", args: [553, 90, 50, 0, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 0, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 50, 180, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 180, 1000, 0, 2000] }, + { type: "func", func: () => combo_count++ }, + { type: "spawn", func: "marker", args: [false, 0, 150, 0, 3000, true, null], check_func: () => combo_count == 2, delay: 1000 } + ], + "s-3204-1000-110-0": [ + { type: "text", sub_type: "message", message: "Target + Wave", message_RU: "Таргет + волна" }, + { type: "spawn", func: "circle", args: [true, 553, 180, -500, 10, 350, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 180, -50, 120, 500, 0, 2000], delay: 1500 }, + { type: "spawn", func: "vector", args: [553, 180, -50, 240, 500, 0, 2000], delay: 1500 }, + { type: "func", func: () => combo_count++ }, + { type: "spawn", func: "marker", args: [false, 0, 150, 0, 3000, true, null], check_func: () => combo_count == 2, delay: 2500 } + ], + "s-3204-1000-112-0": [{ type: "text", sub_type: "message", message: "Wave Forward", message_RU: "Волна вперед" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 70, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 290, 500, 0, 2000] } + ], + "s-3204-1000-114-0": [{ type: "text", sub_type: "message", message: "Inner + Outer AOEs", message_RU: "Внутреннее + внешнее АОЕ" }], + "s-3204-1000-116-0": [ + { type: "text", sub_type: "message", message: "Line Forward", message_RU: "Полоса вперед" }, + { type: "spawn", func: "vector", args: [553, 90, 50, 0, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 0, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 50, 180, 1000, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 180, 1000, 0, 2000] } + ], + "s-3204-1000-119-0": [{ type: "text", sub_type: "message", message: "Two Strikes", message_RU: "Два удара" }], + "s-3204-1000-120-0": [ + { type: "text", sub_type: "message", message: "Two Strikes + Stun (AOE)", message_RU: "Два удара + стан (АОЕ)" }, + { type: "text", sub_type: "message", message: "Stun (AOE)", message_RU: "Стан (АОЕ)", delay: 1500 }, + { type: "spawn", func: "circle", args: [true, 553, 180, -100, 10, 700, 0, 2500], delay: 1500 } + ], + "s-3204-1000-123-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Круговая" }], + "s-3204-1000-125-0": [{ type: "text", sub_type: "message", message: "Stun (Tank)", message_RU: "Стан (танк)" }], + "s-3204-1000-127-0": [ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "marker", args: [false, 0, 150, 0, 2000, true, null] } + ], + "s-3204-1000-128-0": [ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "marker", args: [false, 0, 150, 0, 2000, true, null] } + ], + "s-3204-1000-148-0": [ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "marker", args: [false, 150, 150, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 340, 150, 0, 2000, true, null], delay: 1500 } + ], + "s-3204-1000-156-0": [{ type: "text", sub_type: "message", message: "Get Skulls", message_RU: "Черепа" }], + "s-3204-1000-157-0": [ + { type: "text", sub_type: "message", message: "3 seconds", message_RU: "3 секунды" }, + { type: "text", sub_type: "message", message: "Gather!", message_RU: "Собраться!", delay: 2000 }], + "s-3204-1000-158-0": [ + { type: "text", sub_type: "message", message: "6 seconds", message_RU: "6 секунд" }, + { type: "text", sub_type: "message", message: "Gather!", message_RU: "Собраться!", delay: 5000 } + ], + "s-3204-1000-159-0": [ + { type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ" }, + { type: "marker_remove_all", delay: 3000 } + ] + }; +}; \ No newline at end of file diff --git a/guides/3206.js b/guides/3206.js new file mode 100644 index 00000000..6ea812db --- /dev/null +++ b/guides/3206.js @@ -0,0 +1,174 @@ +// Crimson Killing Grounds +// +// made by HSDN / Kuroine / Minghan / Vampic + +module.exports = (dispatch, handlers, guide, lang) => { + + const { player } = dispatch.require.library; + + let combo_start = false; + + let stack = 0; + let stackTimer = null; + + function stack_add_event() { + stack++; + dispatch.clearTimeout(stackTimer); + stackTimer = dispatch.setTimeout(() => stack = 0, 86000); + } + + function stack_remove_event() { + dispatch.clearTimeout(stackTimer); + stack = 0; + } + + dispatch.hook("S_USER_EFFECT", 1, event => { + if (event.circle == 3 && event.operation == 1) { + if (dispatch._mod.game.me.is(event.target)) { + handlers.text({ sub_type: "notification", message: "Snowball on you", message_RU: "Снежок на тебе" }); + } else { + const member = player.playersInParty.get(event.target); + if (member) { + handlers.text({ + sub_type: "message", + message: `Snowball on ${member.name}`, + message_RU: `Снежок на ${member.name}` + }); + } else { + handlers.text({ sub_type: "message", message: "Snowball", message_RU: "Снежок" }); + } + } + handlers.marker({ id: event.target, color: "yellow", sub_delay: 1000000 }); + } else if (event.circle == 3 && event.operation == 2) { + handlers.marker_remove_all({ delay: 1000 }); + } + }); + + dispatch.hook("S_ABNORMALITY_BEGIN", dispatch._mod.majorPatchVersion >= 107 ? 5 : 4, event => { + if (event.id === 32060024) { + if (dispatch._mod.game.me.is(event.target)) { + handlers.text({ sub_type: "notification", message: "Eye on you", message_RU: "Глазик на тебе" }); + } else { + const member = player.playersInParty.get(event.target); + if (member) { + handlers.text({ + sub_type: "message", + message: `Eye on ${member.name}`, + message_RU: `Глазик на ${member.name}` + }); + } else { + handlers.text({ sub_type: "message", message: "Eye", message_RU: "Глазик" }); + } + } + } + }); + + return { + "nd-3206-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "marker_remove_all" }, + { type: "func", func: stack_remove_event } + ], + "ns-3206-1000": [ + { type: "spawn", func: "marker", args: [false, 3, -700, 100, 60000000, false, ["Giant", "Giant Direction"]] }, + { type: "func", func: stack_remove_event } + ], + + "die": [{ type: "func", func: stack_remove_event }], + + "am-3206-1000-32060007": [{ type: "func", func: stack_add_event }], + "ar-3206-1000-32060007": [{ type: "func", func: stack_remove_event }], + + "qb-3206-1000-32061001": [ + { type: "text", sub_type: "message", message: "Close - IN", message_RU: "Ближние - к нему", check_func: () => stack === 0 }, + { type: "text", sub_type: "message", message: "Close - OUT", message_RU: "Ближние - от него", check_func: () => stack !== 0 }, + { type: "text", sub_type: "alert", message: "Soon to give stun...", message_RU: "Скоро давать стан...", delay: 2000 } + ], + "qb-3206-1000-32061002": [ + { type: "text", sub_type: "message", message: "Furthest - OUT", message_RU: "Дальние - от него", check_func: () => stack === 0 }, + { type: "text", sub_type: "message", message: "Furthest - IN", message_RU: "Дальние - к нему", check_func: () => stack !== 0 }, + { type: "text", sub_type: "alert", message: "Soon to give stun...", message_RU: "Скоро давать стан...", delay: 2000 } + ], + + "s-3206-1000-102-0": [ + { type: "func", func: () => combo_start = true }, + { type: "func", func: () => combo_start = false, delay: 1400 } + ], + "s-3206-1000-105-0": [{ type: "text", sub_type: "message", message: "Knockback Spin (Kaia)", message_RU: "Оборот (Кайа)", check_func: () => combo_start === true }], + "s-3206-1000-106-0": [ + { type: "text", sub_type: "message", message: "Knockback", message_RU: "Откид" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 50, 10, 350, 0, 3000] } + ], + + "s-3206-1000-109-0": [ + { type: "text", sub_type: "message", message: "Jump (Knockdown)", message_RU: "Прыжок (опрокид)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 150, 10, 300, 0, 2500] } + ], + "s-3206-1000-111-0": [{ type: "text", sub_type: "message", message: "Knockdown (Dodge)", message_RU: "Опрокид (эвейд)", class_position: "tank" }], + "s-3206-1000-201-0": [{ type: "text", sub_type: "message", message: "Front (Dodge)", message_RU: "Удар вперед (эвейд)", class_position: "tank" }], + "s-3206-1000-202-0": [{ type: "text", sub_type: "message", message: "Front AoE", message_RU: "Переднее АоЕ" }], + "s-3206-1000-203-0": [{ type: "text", sub_type: "message", message: "Front AoE + Wave", message_RU: "Переднее АоЕ + волна" }], + "s-3206-1000-205-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }], + "s-3206-1000-206-0": [{ type: "text", sub_type: "message", message: "Spin (Bleed)", message_RU: "Крутилка (кровоток)" }], + "s-3206-1000-207-0": [{ type: "text", sub_type: "message", message: "Spin (Bleed)", message_RU: "Крутилка (кровоток)" }], + "s-3206-1000-209-0": [ + { type: "text", sub_type: "message", message: "Give Stun! (Knockdown)", message_RU: "Дать стан! (опрокид)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 50, 10, 400, 0, 1500] } + ], + "s-3206-1000-210-0": [ + { type: "text", sub_type: "message", message: "Give Stun! (Knockdown)", message_RU: "Дать стан! (опрокид)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 50, 10, 400, 0, 1500] } + ], + "s-3206-1000-211-0": [{ type: "text", sub_type: "message", message: "Push", message_RU: "Откид" }], + "s-3206-1000-212-0": [{ type: "text", sub_type: "message", message: "Somersault", message_RU: "Кувырок" }], + "s-3206-1000-215-0": [{ type: "text", sub_type: "message", message: "Somersault", message_RU: "Кувырок" }], + "s-3206-1000-507-0": [{ type: "text", sub_type: "message", message: "Leash | Jump (Knockdown)", message_RU: "Притяжка | Прыжок (опрокид)" }], + "s-3206-1000-508-0": [ + { type: "text", sub_type: "message", message: "Donuts (Out > In)", message_RU: "Бублики (от него > к нему)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 18, 180, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 360, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 10, 550, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 860, 1500, 5000] } + ], + "s-3206-1000-509-0": [ + { type: "text", sub_type: "message", message: "Donuts (In > Out)", message_RU: "Бублики (к нему > от него)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 18, 180, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 360, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 10, 550, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 860, 1500, 5000] } + ], + "s-3206-1000-516-0": [ + { type: "text", sub_type: "message", message: "Donuts Fast (Out > In)", message_RU: "Бублики быстрые (от него > к нему)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 18, 180, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 360, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 10, 550, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 860, 1500, 5000] } + ], + "s-3206-1000-517-0": [ + { type: "text", sub_type: "message", message: "Donuts Fast (In > Out)", message_RU: "Бублики быстрые (к нему > от него)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 18, 180, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 360, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 10, 550, 1500, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 860, 1500, 5000] } + ], + "s-3206-1000-512-0": [{ type: "text", sub_type: "message", message: "Turn | Spin", message_RU: "Разворот | Крутилка" }], + "s-3206-1004-506-0": [{ type: "text", sub_type: "message", message: "Wave", message_RU: "Волна" }], + "s-3206-1000-522-0": [{ type: "text", sub_type: "message", message: "Bait on distant", message_RU: "Байт на дальнего" }], + "s-3206-1000-523-0": [{ type: "text", sub_type: "message", message: "Bait on resurrect", message_RU: "Байт на рес" }], + "s-3206-1000-513-0": [ + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/Регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ], + "s-3206-1000-514-0": "s-3206-1000-513-0", + + "s-3206-1000-502-0": [{ type: "text", sub_type: "message", message: "Unleash", message_RU: "Бешенство" }], + "s-3206-1000-518-0": [{ type: "text", sub_type: "message", message: "Unleash", message_RU: "Бешенство" }], + "s-3206-1000-519-0": [{ type: "text", sub_type: "message", message: "Unleash", message_RU: "Бешенство" }], + "s-3206-1000-306-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }], + "s-3206-1000-309-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Удар вперед" }], + "s-3206-1000-311-0": [{ type: "text", sub_type: "message", message: "Evade!", message_RU: "Эвейд!", delay: 150 }], + "s-3206-1000-321-0": [{ type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }], + "s-3206-1000-324-0": [{ type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }] + }; +}; \ No newline at end of file diff --git a/guides/7011.js b/guides/7011.js new file mode 100644 index 00000000..94546a57 --- /dev/null +++ b/guides/7011.js @@ -0,0 +1,35 @@ +// Shadow of the Gutrends +// +// made by Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + return { + "nd-622-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-622-1000-206-0": [{ type: "text", sub_type: "message", message: "Jump Back", message_RU: "Прыжок назад" }], + "s-622-1000-108-1": [{ type: "text", sub_type: "message", message: "Jump Forward", message_RU: "Прыжок вперед" }], + "s-622-1000-120-0": [ + { type: "text", sub_type: "message", message: "Right Hand", message_RU: "Правая рука", class_position: "tank" }, + { type: "text", sub_type: "message", message: "Left Hand", message_RU: "Левая рука", class_position: "heal" }, + { type: "text", sub_type: "message", message: "Left Hand", message_RU: "Левая рука", class_position: "dps" } + ], + "s-622-1000-119-0": [ + { type: "text", sub_type: "message", message: "Left Hand", message_RU: "Левая рука", class_position: "tank" }, + { type: "text", sub_type: "message", message: "Right Hand", message_RU: "Правая рука", class_position: "heal" }, + { type: "text", sub_type: "message", message: "Right Hand", message_RU: "Правая рука", class_position: "dps" } + ], + "s-622-1000-107-0": [ + { type: "text", sub_type: "message", message: "Stun Frontal", message_RU: "Передний стан" }, + { type: "spawn", func: "semicircle", args: [320, 404, 553, 0, 0, 7, 405, 0, 3500] }, // 85 + { type: "spawn", func: "vector", args: [553, 0, 10, 406, 400, 0, 3500] }, // 380 + { type: "spawn", func: "vector", args: [553, 0, 10, -406, 400, 0, 3500] } // 380 + ], + "s-622-1000-124-0": [{ type: "text", sub_type: "message", message: "Circles (Horizontal)", message_RU: "Круги (горизонтально)" }], + "s-622-1000-123-0": [{ type: "text", sub_type: "message", message: "Circles (Vertical)", message_RU: "Круги (вертикально)" }], + "s-622-1000-117-0": [{ type: "text", sub_type: "message", message: "Kicks", message_RU: "Удары" }], + "am-622-1000-622001": [{ type: "text", sub_type: "message", message: "Circles (Target)", message_RU: "Круги (таргет)" }], + "qb-622-1000-622004": [{ type: "text", sub_type: "message", message: "Explosive Waves", message_RU: "Волны" }] + }; +}; \ No newline at end of file diff --git a/guides/7015.js b/guides/7015.js new file mode 100644 index 00000000..3005cd90 --- /dev/null +++ b/guides/7015.js @@ -0,0 +1,34 @@ +// Escape from Balder's Refuge +// +// made by Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + return { + "nd-620-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-620-1000-107-0": [{ type: "text", sub_type: "message", message: "Attack (Back)", message_RU: "Атака (задняя)" }], + "s-620-1000-115-0": [{ type: "text", sub_type: "message", message: "Fireballs", message_RU: "Шары" }], + "s-620-1000-127-0": [ + { type: "text", sub_type: "message", message: "Jump Back", message_RU: "Прыжок назад" }, + { type: "spawn", func: "circle", args: [false, 553, 180, 376, 12, 232, 0, 6750] } + ], + "s-620-1000-120-0": [{ type: "text", sub_type: "message", message: "Fire Wave", message_RU: "Волна" }], + "s-620-1000-121-0": [{ type: "text", sub_type: "message", message: "Repel (Dodge)", message_RU: "Откид (эвейд)" }], + "s-620-1000-119-0": [{ type: "text", sub_type: "message", message: "Explosion | In", message_RU: "Взрыв | К нему" }], + "s-620-1000-108-0": [{ type: "text", sub_type: "message", message: "Attack (Back)", message_RU: "Атака (задняя)" }], + "s-620-1000-103-0": [{ type: "text", sub_type: "message", message: "Stun Frontal", message_RU: "Передний стан" }], + "s-620-1000-209-0": [{ type: "text", sub_type: "message", message: "Back to Middle + Fireballs", message_RU: "Возарат + Шары" }], + "s-620-1000-125-0": [{ type: "text", sub_type: "message", message: "Fireballs", message_RU: "Шары" }], + + "s-620-1001-303-0": [{ type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ" }], + "s-620-1002-303-0": [{ type: "alias", id: "s-620-1001-303-0" }], + "s-620-1003-303-0": [{ type: "alias", id: "s-620-1001-303-0" }], + "s-620-1004-303-0": [{ type: "alias", id: "s-620-1001-303-0" }], + "s-620-1005-303-0": [{ type: "alias", id: "s-620-1001-303-0" }], + + "s-620-1000-129-0": [{ type: "text", sub_type: "message", message: "Fireballs", message_RU: "Шары" }], + "s-620-1000-106-0": [{ type: "text", sub_type: "message", message: "Random Jump", message_RU: "Случайный прыжок" }] + }; +}; \ No newline at end of file diff --git a/guides/9027.js b/guides/9027.js new file mode 100644 index 00000000..a1c197cf --- /dev/null +++ b/guides/9027.js @@ -0,0 +1,203 @@ +// Manaya's Core (Hard) +// +// made by Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + let next_debuff = 0; + function debuff_event(send_msg, debuff, ent) { + if (next_debuff === 0) { + next_debuff = debuff; + } + + if (send_msg) { + const debuff_messages = { + 0: { message: "Debuff", message_RU: "Дебаф (бублик)" }, + 1: { message: "Debuff 1", message_RU: "Дебаф (бублик) 1" }, + 2: { message: "Debuff 2", message_RU: "Дебаф (бублик) 2" }, + 3: { message: "Debuff 3", message_RU: "Дебаф (бублик) 3" } + }; + + handlers.text({ + sub_type: "notification", + message: debuff_messages[next_debuff].message, + message_RU: debuff_messages[next_debuff].message_RU, + speech: true + }); + + if (next_debuff !== 0) { + next_debuff++; + } + + if (next_debuff > 3) { + next_debuff = 1; + } + } + } + + + function debuff_removed() { + if (next_debuff != 0) { + handlers.text({ + sub_type: "notification", + message: `next debuff: ${next_debuff}`, + message_RU: `Следующий Дебаф (бублик): ${next_debuff}`, + speech: false + }); + } + + next_debuff = 0; + } + + return { + // 1 BOSS + "nd-427-42701": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-427-42701-1106-0": [{ type: "text", sub_type: "message", message_RU: "Волна вперед", message: "Frontal Wind" }], + "s-427-42701-1102-0": [{ type: "text", sub_type: "message", message_RU: "Передний разрез", message: "Frontal Cut" }], + "s-427-42701-1104-0": [{ type: "text", sub_type: "message", message_RU: "Передний удар", message: "Frontal Hit" }], + "s-427-42701-1105-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ", message: "AoE" }], + "s-427-42701-1110-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок + АоЕ", message: "Jump + AoE" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 400, 0, 3000] } + ], + "s-427-42701-1114-1": [{ type: "text", sub_type: "message", message_RU: "АоЕ", message: "AoE" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 110, 12, 250, 0, 2500] } + ], + "s-427-42701-1112-0": [{ type: "text", sub_type: "message", message_RU: "Передняя АоЕ (большая)", message: "Frontal AoE (Big)" }], + "s-427-42701-1215-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ", message: "AoE" }], + "s-427-42701-1214-0": [{ type: "text", sub_type: "message", message_RU: "Передний разрез + АоЕ", message: "Frontal Cut + AoE" }], + "s-427-42701-1204-0": [{ type: "text", sub_type: "message", message_RU: "Таргет", message: "Target" }], + "s-427-42701-1121-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок + Передний разрез", message: "Jump + Frontal Cut" }], + "s-427-42701-2106-0": "s-427-42701-1106-0", + "s-427-42701-2102-0": "s-427-42701-1102-0", + "s-427-42701-2104-0": "s-427-42701-1104-0", + "s-427-42701-2105-0": "s-427-42701-1105-0", + "s-427-42701-2110-0": "s-427-42701-1110-0", + "s-427-42701-2114-1": "s-427-42701-1114-1", + "s-427-42701-2112-0": "s-427-42701-1112-0", + "s-427-42701-2215-0": "s-427-42701-1215-0", + "s-427-42701-2214-0": "s-427-42701-1214-0", + "s-427-42701-2121-0": "s-427-42701-1121-0", + "s-427-42701-2204-0": "s-427-42701-1204-0", + + // 2 BOSS + "nd-427-42702": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-427-42702-1104-0": [{ type: "text", sub_type: "message", message_RU: "Лазер", message: "Laser" }], + "s-427-42702-1109-0": [{ type: "text", sub_type: "message", message_RU: "Удар щита назад", message: "Back Shield Hit" }], + "s-427-42702-1106-0": [{ type: "text", sub_type: "message", message_RU: "Бомба (таргет)", message: "Bomb (Target)" }], + "s-427-42702-1117-0": [{ type: "text", sub_type: "message", message_RU: "Стан + АоЕ", message: "Stun + AoE" }], + "s-427-42702-1118-0": [{ type: "text", sub_type: "message", message_RU: "Стан + Волна", message: "Stun + Wave" }, + { type: "text", sub_type: "message", delay: 4600, message_RU: "Эвейд!", message: "Dodge!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 400, 3000, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 16, 240, 3000, 3000] } + ], + "s-427-42702-1112-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок назад", message: "Jump Backwards" }], + + "dm-0-0-9027004": [{ type: "text", sub_type: "notification", message_RU: "Убить [c=#05a0fa]синих[/c] миньонов", message: "Kill [c=#05a0fa]Blue[/c] Minions" }], + "dm-0-0-9027005": [{ type: "text", sub_type: "notification", message_RU: "Убить [c=#e82331]красных[/c] миньонов", message: "Kill [c=#e82331]Red[/c] Minions" }], + "s-427-42702-2104-0": "s-427-42702-1104-0", + "s-427-42702-2109-0": "s-427-42702-1109-0", + "s-427-42702-2106-0": "s-427-42702-1106-0", + "s-427-42702-2117-0": "s-427-42702-1117-0", + "s-427-42702-2118-0": "s-427-42702-1118-0", + "s-427-42702-2112-0": "s-427-42702-1112-0", + + // 3 BOSS + // Fase 1 + "nd-427-2001": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-427-2001-1101-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ стрелы (+)", message: "Arrows AoE (+)" }, + { type: "spawn", func: "vector", args: [553, 120, 100, 176, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 240, 100, -176, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 60, 100, 4, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 300, 100, -4, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 150, -100, 274, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 210, 100, -94, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, -30, -101, 94, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 210, -101, 86, 400, 0, 5000] } + ], + "s-427-2001-1102-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ стрелы (X)", message: "Arrows AoE (X)" }, + { type: "spawn", func: "vector", args: [553, 160, 110, 222, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 290, 110, -132, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 110, 110, 48, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 340, 110, 42, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 10, 115, -41, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 260, 115, -49, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 80, 115, 131, 400, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 190, 115, -221, 400, 0, 5000] } + ], + "s-427-2001-1105-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ стрелы (малая)", message: "Arrows AoE (Small)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 210, 2000, 4000] } + ], + "s-427-2001-1103-0": [{ type: "text", sub_type: "message", message_RU: "Волна АоЕ", message: "Wave AoE" }], + "s-427-2001-1111-0": [{ type: "text", sub_type: "message", message_RU: "Стан", message: "Stun" }], + "s-427-2004-1101-0": [{ type: "text", sub_type: "message", message_RU: "Когти", message: "Claws" }], + "s-427-2001-1109-0": [{ type: "text", sub_type: "message", message_RU: "Внутренняя АоЕ", message: "Inner AoE" }], + "s-427-2001-2101-0": "s-427-2001-1101-0", + "s-427-2001-2102-0": "s-427-2001-1102-0", + "s-427-2001-2105-0": "s-427-2001-1105-0", + "s-427-2001-2111-0": "s-427-2001-1111-0", + "s-427-2004-2101-0": "s-427-2004-1101-0", + "s-427-2001-2103-0": "s-427-2001-1103-0", + "s-427-2001-2109-0": "s-427-2001-1109-0", + + // Fase 2 + "nd-427-2007": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "die": [{ type: "func", func: debuff_removed }], + "h-427-2007-99": [{ type: "func", func: () => next_debuff = 0 }], + "s-427-2007-1103-0": [{ type: "text", sub_type: "message", message_RU: "Передняя атака", message: "Frontal Attack" }], + "s-427-2007-1205-0": [{ type: "text", sub_type: "message", message_RU: "Телепорт", message: "Teleport" }], + "s-427-2007-1102-0": [{ type: "text", sub_type: "message", message_RU: "К нему > От него", message: "In > Out" }], + "s-427-2007-1113-0": [{ type: "text", sub_type: "message", message_RU: "Левая рука ", message: "Left Hand Attack" }], + "s-427-2007-1105-0": [{ type: "text", sub_type: "message", message_RU: "Правая рука ", message: "Right Hand Attack" }], + "s-427-2007-1112-0": [{ type: "func", func: debuff_event, args: [true, 0] }], + "s-427-2007-1108-0": [{ type: "text", sub_type: "message", message_RU: "Атака (таргет)", message: "Target Attack" }], + "s-427-2007-1114-0": [{ type: "text", sub_type: "message", message_RU: "Удар назад", message: "Back Attack" }], + "s-427-2007-1115-0": [{ type: "text", sub_type: "message", message_RU: "Хвост", message: "Tail" }], + "s-427-2007-1111-0": [{ type: "text", sub_type: "message", message_RU: "Хвост вперед", message: "Frontal Attack" }], + "s-427-2007-1109-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ (таргет)", message: "AoE Target" }], + "s-427-2007-1104-0": [{ type: "text", sub_type: "message", message: "Stomp" }], + "s-427-2007-1107-0": [{ type: "text", sub_type: "message", message_RU: "Лазер", message: "Laser Attack" }, + { type: "spawn", func: "vector", args: [912, 360, 985, 180, 950, 0, 2500] }, + { type: "spawn", func: "vector", args: [912, 369, 995, 180, 950, 0, 2500] }, + { type: "spawn", func: "vector", args: [912, 351, 995, 180, 950, 0, 2500] } + ], + "s-427-2007-1106-0": [{ type: "text", sub_type: "message", message_RU: "Бомба (таргет)", message: "Target Bomb" }], + "s-427-2007-1204-0": [{ type: "text", sub_type: "message", message_RU: "Большая АоЕ (бежать)", message: "Big AoE (Run)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 550, 0, 4000] } + ], + "qb-427-2007-427050": [ + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/Регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ], + "s-427-2007-2205-0": "s-427-2007-1205-0", + "s-427-2007-2102-0": "s-427-2007-1102-0", + "s-427-2007-2113-0": "s-427-2007-1113-0", + "s-427-2007-2105-0": "s-427-2007-1105-0", + "s-427-2007-2112-0": "s-427-2007-1112-0", + "s-427-2007-2115-0": "s-427-2007-1115-0", + "s-427-2007-2111-0": "s-427-2007-1111-0", + "s-427-2007-2109-0": "s-427-2007-1109-0", + "s-427-2007-2107-0": "s-427-2007-1107-0", + "s-427-2007-2106-0": "s-427-2007-1106-0", + "s-427-2007-2204-0": "s-427-2007-1204-0", + "s-427-2007-2103-0": "s-427-2007-1103-0", + "s-427-2007-2114-0": "s-427-2007-1114-0", + "s-427-2007-2108-0": "s-427-2007-1108-0", + "s-427-2007-2104-0": "s-427-2007-1104-0", + "am-427-2007-47702900": [{ type: "func", func: debuff_event, args: [false, 2] }], // greedy thought #1 + "am-427-2007-47703000": [{ type: "func", func: debuff_event, args: [false, 3] }], // hateful thought #2 + "am-427-2007-47703100": [{ type: "func", func: debuff_event, args: [false, 1] }] // desperate thought #3 + }; +}; \ No newline at end of file diff --git a/guides/9034.js b/guides/9034.js index 188daecd..35b36f61 100644 --- a/guides/9034.js +++ b/guides/9034.js @@ -1,418 +1,1133 @@ -let player, entity, library, effect; +// Dreadspire +// +// made by TristanPW -// Helper Functions +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; -function single_stage_callout(message, handlers, event, entity) { - if (entity.stage == 0) { - handlers['text']({ - "sub_type": "notification", - "message": message, + const { entity } = dispatch.require.library; + + + // FIRST FLOOR + + let knockbackCounter = 0; + let knockbackTimer = null; + + function knockback_firstfloor() { + dispatch._mod.clearTimeout(knockbackTimer); + knockbackCounter++; + + if (knockbackCounter === 2) { + handlers.text({ type: "text", sub_type: "message", message: "KNOCKBACK", message_RU: "Будет Отбрасывание", speech: true }); + knockbackCounter = 0; + } + + knockbackTimer = dispatch._mod.setTimeout(() => knockbackCounter = 0, 5000); + } + + + // THIRD FLOOR + + const PizzaA = { + offsets: [0.24, 1.29, 2.33, -2.88, -1.84, -0.8], + distance: 200 + }; + + const PizzaB = { + offsets: [-0.26, 0.79, 1.83, 2.9, -2.34, -1.3], + distance: 200 + }; + + const PizzaC = { + offsets: [-0.26, 1.29, 2.9, -1.84], + distance: 200 + }; + + const CounterPizzaC = { + offsets: [0.24, 2.33, -2.88, -0.8, 0.79, 1.83, -2.34, -1.3], + distance: 200 + }; + + const Inner = { + offsets: [0.24, 1.29, 2.33, -2.88, -1.84, -0.8, -0.26, 0.79, 1.83, 2.9, -2.34, -1.3], + distance: 275 + }; + + const Outer = { + offsets: [0.24, 1.29, 2.33, -2.88, -1.84, -0.8, -0.26, 0.79, 1.83, 2.9, -2.34, -1.3], + distance: 150 + }; + + PizzaA.counter = PizzaB; + PizzaB.counter = PizzaA; + PizzaC.counter = CounterPizzaC; + Inner.counter = Outer; + Outer.counter = Inner; + + /* + const Mechanics = { + 1122: { + order: [PizzaA, Inner, Outer, PizzaB, PizzaC], + delays: [0, 1000, 2000, 3000, 4000] + }, + 1123: { + order: [PizzaB, PizzaA, Outer, Inner, PizzaC], + delays: [200, 1200, 2200, 3200, 4200] + }, + 1124: { + order: [Inner, PizzaB, PizzaA, Outer, PizzaC], + delays: [0, 1000, 2000, 3000, 4000] + }, + 1127: { + order: [PizzaA, PizzaB, Inner, Outer, PizzaC], + delays: [200, 1200, 2200, 3200, 4200] + } + }; + + const debuffs_thirdfloor = [false, false, false, false, false]; // False = Blue (Avoid Hit), True = Red (Take Hit) + + function cage_mechanic_thirdfloor(id, _, event, entity) { + const mechanic = Mechanics[id]; + + if (mechanic && entity.stage == 0) { + let flower_id = 559; + + // eslint-disable-next-line guard-for-in + for (const i in mechanic.order) { + const pattern = !debuffs_thirdfloor[i] ? mechanic.order[i] : mechanic.order[i].counter; + + for (const offset of pattern.offsets) { + handlers.event([{ + "type": "spawn", + "id": flower_id, + "delay": mechanic.delays[i], + "sub_delay": mechanic.delays[i] + 1900, + "distance": pattern.distance, + "offset": offset + }]); + } + flower_id = flower_id == 559 ? 556 : 559; + } + } + } + + function cage_set_debuff(id, bool) { + debuffs_thirdfloor[id] = bool; + } + */ + + + // FIFTH FLOOR + + let fifth_debuff = null; + + + // SIXTH FLOOR + + function sixth_regress() { + handlers.text({ sub_type: "notification", message: "Plague/Regress", message_RU: "[c=#E904CA]!!!!![/c][c=#E904CA]!!!![/c][c=#39FF33]!!!![/c]!!!!!!![c=#F90531]!!!!!!!!!!![/c] Регресс[c=#39FF33]!![/c][c=#E904CA]!!!!![/c]!!!![c=#0517F9]!!!![/c]!!!!!!![c=#F90531]!!!!!!!!!!![/c]" }); + handlers.text({ sub_type: "warning", message: "Plague/Regress", message_RU: "Регресс!!" }); + handlers.text({ sub_type: "message", message: "Plague/Regress", message_RU: "Регресс!!" }); + } + + + // SEVENTH FLOOR + + let seventh_fifty = false; + + function seventh_message_event(skillid) { + switch (skillid) { + // Lakan has noticed you. + case 1043: + if (!seventh_fifty) { + handlers.text({ + sub_type: "notification", + message: "Debuffs > Circles > Bombs", + message_RU: "ДКБ" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Debuffs > Bombs > Circles", + message_RU: "ДБК" + }); + } + break; + // Lakan is trying to take you on one at a time. + case 1044: + if (!seventh_fifty) { + handlers.text({ + sub_type: "notification", + message: "Circles > Bombs > Debuffs", + message_RU: "КБД" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Circles > Debuffs > Bombs", + message_RU: "КДБ" + }); + } + break; + // Lakan intends to kill all of you at once. + case 1045: + if (!seventh_fifty) { + handlers.text({ + sub_type: "notification", + message: "Bombs > Debuffs > Circles", + message_RU: "БДК" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Bombs > Circles > Debuffs", + message_RU: "БКД" + }); + } + break; + } + } + + function seventh_spawn_tables(is_normal_world, ent) { + const regularWorld = [ + // dps + { type: "spawn", func: "marker", args: [false, 180, 225, 0, 2000, true, ["Safe", "Spot"]] }, + { type: "spawn", func: "marker", args: [false, 210, 225, 2000, 1500, true, ["Safe", "Spot"]] }, + // tank + { type: "spawn", func: "marker", args: [false, -45, 225, 0, 2000, true, ["Safe", "Spot"]] }, + { type: "spawn", func: "marker", args: [false, 0, 225, 2000, 1500, true, ["Safe", "Spot"]] }, + // general safe spots + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 2.8, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 3.46, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 4.12, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 4.75, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 5.38, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 5.97, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 6.58, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 7.2, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 7.8, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 8.44, "ownerName": "SAFE SPOT", "message": "SAFE" } + ]; + + const soulWorld = [ + // dps + { type: "spawn", func: "marker", args: [false, 210, 225, 0, 2000, true, ["Safe", "Spot"]] }, + { type: "spawn", func: "marker", args: [false, 180, 225, 2000, 1500, true, ["Safe", "Spot"]] }, + // tank + { type: "spawn", func: "marker", args: [false, 0, 225, 0, 2000, true, ["Safe", "Spot"]] }, + { type: "spawn", func: "marker", args: [false, -45, 225, 2000, 1500, true, ["Safe", "Spot"]] }, + // general safe spots + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 2.8, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 3.46, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 4.12, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 4.75, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 5.38, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 5.97, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 6.58, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 7.2, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 7.8, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 4000, "distance": 525, "offset": 8.44, "ownerName": "SAFE SPOT", "message": "SAFE" } + ]; + + if (is_normal_world) { + handlers.event(regularWorld); + } else { + handlers.event(soulWorld); + } + } + + let boss_data = null; + function set_boss_data(ent) { + boss_data = ent; + } + + // 8th floor + let is_eighth_floor = false; + let carpet_mob_game_id = null; + let carpet_mob_angle = null; + let carpet_event_done = false; + const BackCarpetMarkers = 0; + const FrontCarpetMarkers = 1; + const LeftCarpetMarkers = 2; + const RightCarpetMarkers = 3; + const CarpetMarkers = [ + [{ type: "text", sub_type: "notification", message: "Back -> Front", message_RU: "Назад -> Спереди" }], + [{ type: "text", sub_type: "notification", message: "Front -> Back", message_RU: "Спереди -> Назад" }], + [{ type: "text", sub_type: "notification", message: "Left -> Right", message_RU: "Левый -> Правый" }], + [{ type: "text", sub_type: "notification", message: "Right -> Left", message_RU: "Правый -> Левый" }] + ]; + + + function curse_mob_spawned(ent) { + const angle = ent.loc.angleTo(boss_data.loc); + const curse_msg = angle > 0 ? "Curse Left" : "Curse Right"; + const curse_msg_ru = angle > 0 ? "Дебафф Левый" : "Дебафф Правый"; + handlers.text({ + sub_type: "message", + message: curse_msg, + message_RU: curse_msg_ru, }); } -} - //"s-434-6000-2134": [{"type": "func","func": single_stage_callout.bind(null, "SLAM + BACK")}], -// First Floor - -// Knockback 5秒内连续出2次 固定处某技能 -let knockbackCounter = 0; -let knockbackTimer; - -function knockback_firstfloor(handlers) { - clearTimeout(knockbackTimer); - knockbackCounter++; - - if(knockbackCounter >= 2) { - handlers['text']({ - "sub_type": "notification", - "message": "KNOCKBACK", - }); - knockbackCounter = 0; - } - - knockbackTimer = setTimeout(()=>{ - knockbackCounter = 0; - }, 5000); -} - -// Third Floor - -// Cage Mechanic -const PizzaA = { - offsets: [0.24, 1.29, 2.33, -2.88, -1.84, -0.8], - distance: 200 -}; -const PizzaB = { - offsets: [-0.26, 0.79, 1.83, 2.9, -2.34, -1.3], - distance: 200 -}; + function carpet_mob_spawned(ent) { + handlers.text({ + sub_type: "message", + message_RU: "Появился ковровый моб", + message: "Carpet Mob Spawned", + }); + carpet_mob_game_id = ent.gameId; + carpet_mob_angle = ent.loc.angleTo(boss_data.loc); + } -const PizzaC = { - offsets: [-0.26, 1.29, 2.9, -1.84], - distance: 200 -}; + function carpet_mob_reset_event() { + carpet_mob_angle = null; + carpet_mob_game_id = null; + carpet_event_done = false; + } -const CounterPizzaC = { - offsets: [0.24, 2.33, -2.88, -0.8, 0.79, 1.83, -2.34, -1.3], - distance: 200 -} + dispatch.hook("S_CREATURE_ROTATE", "*", e => { + if (!is_eighth_floor) return; + if (e.gameId != carpet_mob_game_id) return; + if (carpet_event_done) return; + carpet_event_done = true; + let pattern = null; + let angle = e.w.toFixed(5); + + if (carpet_mob_angle > Math.PI / 2 && carpet_mob_angle < Math.PI) { + // front left + pattern = angle > 0 ? RightCarpetMarkers : BackCarpetMarkers; + } else if (carpet_mob_angle > 0 && carpet_mob_angle < Math.PI / 2) { + // back left + pattern = angle < -2 ? RightCarpetMarkers : FrontCarpetMarkers; + } else if (carpet_mob_angle > -Math.PI && carpet_mob_angle < -Math.PI / 2) { + // front right + pattern = angle > 1 ? BackCarpetMarkers : LeftCarpetMarkers; + } else { + // back right + pattern = angle > 0 ? FrontCarpetMarkers : LeftCarpetMarkers; + } + + handlers.event(CarpetMarkers[pattern]); + }); + + // 9th floor darkan + + let secondary_aggro_date = 0; + let is_ninth_floor = false; + let ninth_floor_fifty = false; + dispatch.hook("S_USER_EFFECT", "*", e => { + if (!is_ninth_floor) return; + if (e.circle == 3 && e.operation == 1 && e.source == boss_data.gameId) { + secondary_aggro_date = new Date(); + } + }); + + let back_print = false; + let back_time = 0; + let end_back_time = 0; + let is_one_back = false; + let counter = 0; + let counter1_date = null; + + let prev_back_attack = 0; + let prev_date = 0; + function boss_backattack_event() { + end_back_time = new Date() - back_time; + + if (!back_print) { + back_print = true; + is_one_back = end_back_time > 0 && end_back_time < 1500; + + if (is_one_back) { + handlers.text({ + sub_type: "message", + message_RU: "360", + message: "360", + }); + } + } + dispatch.setTimeout(() => back_print = false, 3500); + } -const Inner = { - offsets: [0.24, 1.29, 2.33, -2.88, -1.84, -0.8, -0.26, 0.79, 1.83, 2.9, -2.34, -1.3], - distance: 275 -}; -const Outer = { - offsets: [0.24, 1.29, 2.33, -2.88, -1.84, -0.8, -0.26, 0.79, 1.83, 2.9, -2.34, -1.3], - distance: 150 -}; + function boss_backattack_event_new(curr, ent) { + let start = new Date(); + let tmp = prev_date; + prev_date = start; + + let time_diff = start - tmp; + + let prev = prev_back_attack; + prev_back_attack = curr; + + let back_combo_time_diff = 5000; + if (counter1_date != null) { + back_combo_time_diff = start - counter1_date; + } + + if (curr == 1103 || curr == 1106) { + let secondary_time_diff = start - secondary_aggro_date; + const markers = [ + [ + { type: "text", sub_type: "message", message_RU: "Левый", message: "Left" }, + { type: "spawn", func: "marker", args: [false, 300, 100, 0, 2500, true, null] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 2500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 2500] } + ], + [ + { type: "text", sub_type: "message", message_RU: "Правый", message: "Right" }, + { type: "spawn", func: "marker", args: [false, 60, 100, 0, 2500, true, null] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 2500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 2500] } + ] + ]; + + if (secondary_time_diff < 3000) { + if (ninth_floor_fifty) { + let safe_spot_index = curr == 1103 ? 0 : 1; + handlers.event(markers[safe_spot_index]); + } + ninth_secondary_event(); + } + } + + if (prev == 1106 && curr == 1103 && time_diff < 1000) { + handlers.text({ + sub_type: "message", + message_RU: "360", + message: "360" + }); + } else if (prev === 1103 && curr === 1105 && time_diff < 1000) { + counter = 1; + counter1_date = new Date(); + } else if (prev === 1105 && curr === 1106 && counter === 1 && time_diff < 1500 && back_combo_time_diff < 1500) { + counter = 2; + } else if (prev === 1106 && curr === 1108 && counter == 2 && time_diff < 1000 && back_combo_time_diff < 2000) { + handlers.text({ + sub_type: "message", + message_RU: "2x360", + message: "2x360" + }); + } else { + counter = 0; + counter1_date = null; + } + } + + let ninth_triple_swipe_remaining = 0; + function ninth_new_swipe_event(curr, ent) { + ninth_triple_swipe_remaining--; + if (ninth_triple_swipe_remaining > 0) { + if (curr == 1407) { + handlers.event([ + { type: "text", sub_type: "message", message_RU: "Левый", message: "Left" }, + { type: "spawn", func: "marker", args: [false, 300, 100, 0, 1000, true, null] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1000] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1000] } + ]); + } else { + handlers.event([ + { type: "text", sub_type: "message", message_RU: "Правый", message: "Right" }, + { type: "spawn", func: "marker", args: [false, 60, 100, 0, 1000, true, null] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1000] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1000] } + ]); + } + } else { + // non triple + if (curr == 1407) { + handlers.event([ + { type: "text", sub_type: "message", message_RU: "Левый (Двойной)", message: "Left (Double)" }, + { type: "spawn", func: "marker", args: [false, 300, 100, 0, 1000, true, null] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 2500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 2500] }, + { type: "spawn", func: "marker", args: [false, 60, 100, 1000, 1000, true, null] }, + + ]); + } else { + handlers.event([ + { type: "text", sub_type: "message", message_RU: "Правый (Двойной)", message: "Right (Double)" }, + { type: "spawn", func: "marker", args: [false, 60, 100, 0, 1000, true, null] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 2500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 2500] }, + { type: "spawn", func: "marker", args: [false, 300, 100, 1000, 1000, true, null] }, + ]); + } + + } + } + + function ninth_old_swipe_event(curr, ent) { + if (ninth_triple_swipe_remaining > 0) { + ninth_triple_swipe_remaining--; + } + if (curr == 1401) { + handlers.event([ + { type: "text", sub_type: "message", message_RU: "Левый", message: "Left" }, + { type: "spawn", func: "marker", args: [false, 300, 100, 0, 1000, true, null] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1000] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1000] } + ]); + } else { + handlers.event([ + { type: "text", sub_type: "message", message_RU: "Правый", message: "Right" }, + { type: "spawn", func: "marker", args: [false, 60, 100, 0, 1000, true, null] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1000] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1000] } + ]); + } + } + + let triples_timer = null; + function ninth_triples_event() { + if (triples_timer != null) { + dispatch.clearTimeout(triples_timer); + } + + triples_timer = dispatch.setTimeout(() => { + handlers.text({ + sub_type: "notification", + message: "Triples Soon!", + message_RU: "тройки Скоро!" + }); + }, 100000); + + } + + let secondary_timer = null; + function ninth_secondary_event() { + if (secondary_timer != null) { + dispatch.clearTimeout(secondary_timer); + } + + secondary_timer = dispatch.setTimeout(() => { + if (ninth_floor_fifty) { + handlers.text({ + sub_type: "notification", + message: "Secondary Soon!", + message_RU: "вторичный скоро!" + }); + } + }, 45000); + + } + function reset_backevent() { + back_print = false; + back_time = 0; + end_back_time = 0; + is_one_back = false; + counter = 0; + counter1_date = null; + prev_back_attack = 0; + prev_date = 0; + + // reset aggro event + secondary_aggro_date = 0; + is_ninth_floor = false; + ninth_floor_fifty = false; + + if (triples_timer != null) { + dispatch.clearTimeout(triples_timer); + triples_timer = null; + } + + if (secondary_timer != null) { + dispatch.clearTimeout(secondary_timer); + secondary_timer = null; + } + -PizzaA.counter = PizzaB; -PizzaB.counter = PizzaA; -PizzaC.counter = CounterPizzaC; -Inner.counter = Outer; -Outer.counter = Inner; - -const Mechanics = { - 1122: { - order: [PizzaA, Inner, Outer, PizzaB, PizzaC], - delays: [0, 1000, 2000, 3000, 4000] - }, - 1123: { - order: [PizzaB, PizzaA, Outer, Inner, PizzaC], - delays: [200, 1200, 2200, 3200, 4200] - }, - 1124: { - order: [Inner, PizzaB, PizzaA, Outer, PizzaC], - delays: [0, 1000, 2000, 3000, 4000] - }, - 1127: { - order: [PizzaA, PizzaB, Inner, Outer, PizzaC], - delays: [200, 1200, 2200, 3200, 4200] - } -} - -let debuffs_thirdfloor = [false, false, false, false, false] // False = Blue (Avoid Hit), True = Red (Take Hit) - -function cage_mechanic_thirdfloor(id, handlers, event, entity) { - let mechanic = Mechanics[id]; - - if (mechanic && entity.stage == 0) { - let flower_id = 559; - - for (let i in mechanic.order) { - let pattern = !debuffs_thirdfloor[i] ? mechanic.order[i] : mechanic.order[i].counter; - - for (let offset of pattern.offsets) { - handlers['spawn']({ - "id": flower_id, - "delay": mechanic.delays[i], - "sub_delay": mechanic.delays[i] + 1900, - "distance": pattern.distance, - "offset": offset - }, entity); - } - flower_id = flower_id == 559 ? 556 : 559; - } - } -} - -function cage_set_debuff(id, bool) { - debuffs_thirdfloor[id] = bool; -} - -// Fifth Floor - -// Debuff Tracker - - - -// Mobs Wave Attack Flowers - -let mobflowers_fifthfloor = []; -for (let distance = 20; distance < 480; distance += 20) { - mobflowers_fifthfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 3000, - "distance": distance, - "offset": 0.35 - }); - mobflowers_fifthfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 3000, - "distance": distance, - "offset": -0.35 - }); -} -for (let offset = 0.35; offset >= -0.35; offset -= 0.05) { - mobflowers_fifthfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 3000, - "distance": 480, - "offset": offset - }); -} - -// 7th Floor - -// Rings Flowers - -function rings_seventhfloor(handlers, event, entity) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - - library.applyDistance(shield_loc, 50); - - for (let angle = -Math.PI; angle <= Math.PI; angle += 2 * Math.PI / 40) { - handlers['spawn']({ - "id": 603, - "sub_delay": 5000, - "distance": 200, - "offset": angle - }, {loc: shield_loc}); - } - - for (let angle = -Math.PI; angle <= Math.PI; angle += 2 * Math.PI / 70) { - handlers['spawn']({ - "id": 603, - "sub_delay": 5000, - "distance": 350, - "offset": angle - }, {loc: shield_loc}); - } - -} - -// Rings IN + OUT and OUT + IN Flowers - -let rings_inout_seventhfloor = []; -for (let angle = -Math.PI; angle <= Math.PI; angle += 2 * Math.PI / 40) { - rings_inout_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 6000, - "distance": 250, - "offset": angle - }); -} - -// Lasers Flowers and Signs - -let lasers_markers_seventhfloor = []; -let inverted_lasers_markers_seventhfloor = []; -const sign_offsets_seventhfloor = [-0.32, -0.94, -1.57, -2.2, -2.83, 2.83, 2.2, 1.57, 0.94, 0.32]; - -for (let offset of sign_offsets_seventhfloor) { - const event = { - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 4000, - "distance": 450, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": offset } - lasers_markers_seventhfloor.push(event); - inverted_lasers_markers_seventhfloor.push(event); -} - -for (let distance = 175; distance <= 425; distance += 25) { - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 4000, - "distance": distance, - "offset": 0 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 4000, - "distance": distance, - "offset": 1.25 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 4000, - "distance": distance, - "offset": 2.5 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 4000, - "distance": distance, - "offset": -2.5 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 4000, - "distance": distance, - "offset": -1.25 - }); - - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 4000, - "distance": distance, - "offset": 0.62 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 4000, - "distance": distance, - "offset": 1.87 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 4000, - "distance": distance, - "offset": 3.12 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 4000, - "distance": distance, - "offset": -1.88 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 603, - "sub_delay": 4000, - "distance": distance, - "offset": -0.63 - }); -} - -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - // First Floor - - // Clone Mechanic - "ab-434-1000-90340105": [{"type": "text","sub_type": "notification","message": "STUN IT"}], - - // Backstep + Knockback - "s-434-1000-1304": [{"type": "text","sub_type": "notification","message": "BACKSTEP + KNOCKBACK"}], - - // Not Enraged - "s-434-1000-1102": [{"type": "func","func": knockback_firstfloor}], - "s-434-1000-1105": [{"type": "text","sub_type": "notification","message": "PUKE"}], - "s-434-1000-1203": [{"type": "text","sub_type": "notification","message": "SLEEP"}], - - // Enraged - "s-434-1000-2102": [{"type": "func","func": knockback_firstfloor}], - "s-434-1000-2105": [{"type": "text","sub_type": "notification","message": "PUKE"}], - "s-434-1000-2203": [{"type": "text","sub_type": "notification","message": "SLEEP"}], - - // Second Floor - - // Not Enraged - "s-434-2000-1101": [{"type": "text","sub_type": "notification","message": "SMASH COMING"}], - "s-434-2000-1102": [{"type": "text","sub_type": "notification","message": "SPIN"}], - "s-434-2000-1107": [{"type": "text","sub_type": "notification","message": "BACK"}], - "s-434-2000-1108": [{"type": "text","sub_type": "notification","message": "FRONT"}], - "s-434-2000-1109": [{"type": "func","func": single_stage_callout.bind(null, "BACK SPIN")}], - "s-434-2000-1110": [{"type": "text","sub_type": "notification","message": "OUT"}], - "s-434-2000-1119": [{"type": "text","sub_type": "notification","message": "PULL"}], - "s-434-2000-1122": [{"type": "text","sub_type": "notification","message": "IN"}], - - - // Enraged - "s-434-2000-2101": [{"type": "text","sub_type": "notification","message": "SMASH COMING"}], - "s-434-2000-2102": [{"type": "text","sub_type": "notification","message": "SPIN"}], - "s-434-2000-2107": [{"type": "text","sub_type": "notification","message": "BACK"}], - "s-434-2000-2108": [{"type": "text","sub_type": "notification","message": "FRONT"}], - "s-434-2000-2109": [{"type": "func","func": single_stage_callout.bind(null, "BACK SPIN")}], - "s-434-2000-2110": [{"type": "text","sub_type": "notification","message": "OUT"}], - "s-434-2000-2119": [{"type": "text","sub_type": "notification","message": "PULL"}], - "s-434-2000-2122": [{"type": "text","sub_type": "notification","message": "IN"}], - - // Third Floor - - // Cage Mechanic - "s-434-3000-1122": [{"type": "func","func": cage_mechanic_thirdfloor.bind(null, 1122)}], - "s-434-3000-1123": [{"type": "func","func": cage_mechanic_thirdfloor.bind(null, 1123)}], - "s-434-3000-1124": [{"type": "func","func": cage_mechanic_thirdfloor.bind(null, 1124)}], - "s-434-3000-1127": [{"type": "func","func": cage_mechanic_thirdfloor.bind(null, 1127)}], - - "ae-0-0-90340306": [{"type": "func","func": cage_set_debuff.bind(null, 0, true)}], - "ae-0-0-90340307": [{"type": "func","func": cage_set_debuff.bind(null, 0, false)}], - "ae-0-0-90340308": [{"type": "func","func": cage_set_debuff.bind(null, 1, true)}], - "ae-0-0-90340309": [{"type": "func","func": cage_set_debuff.bind(null, 1, false)}], - "ae-0-0-90340310": [{"type": "func","func": cage_set_debuff.bind(null, 2, true)}], - "ae-0-0-90340311": [{"type": "func","func": cage_set_debuff.bind(null, 2, false)}], - "ae-0-0-90340312": [{"type": "func","func": cage_set_debuff.bind(null, 3, true)}], - "ae-0-0-90340313": [{"type": "func","func": cage_set_debuff.bind(null, 3, false)}], - "ae-0-0-90340314": [{"type": "func","func": cage_set_debuff.bind(null, 4, true)}], - "ae-0-0-90340315": [{"type": "func","func": cage_set_debuff.bind(null, 4, false)}], - - - - - - "s-434-3000-112": [{"type": "func","func": single_stage_callout.bind(null, "STAB + KNOCKUP")}], // - //左边安全区 - "s-434-3000-130": [{"type": "text","sub_type": "notification","message": "LEFT SWIPE"}, - {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 2.3, "ownerName": "SAFE SPOT", "message": "SAFE"}, - {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 1, "ownerName": "SAFE SPOT", "message": "SAFE"}, - {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 2.3}, - {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 1}], - //右边安全区 - "s-434-3000-131": [{"type": "text","sub_type": "notification","message": "RIGHT SWIPE"}, - {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -2.3, "ownerName": "SAFE SPOT", "message": "SAFE"}, - {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -1, "ownerName": "SAFE SPOT", "message": "SAFE"}, - {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -2.3}, - {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -1}], - - "s-434-3000-134": [{"type": "func","func": single_stage_callout.bind(null, "DEBUFF")}], // - "s-434-3000-502": [{"type": "func","func": single_stage_callout.bind(null, "FORCED CAGE")}], // - - - - // Fifth Floor - - // Debuff Tracker - // "h-434-5000-100": [{"type": "func","func": start_fifthfloor}], - - // Mob Wave Attack - "s-434-5002-3106": mobflowers_fifthfloor, - "s-434-5003-3101": mobflowers_fifthfloor, - - - // Seventh Floor - - // Lasers + Mechanic - "s-434-7000-1901": [{"type": "text","sub_type": "notification","message": "DEBUFF (CLOSEST)"}].concat(lasers_markers_seventhfloor), - "s-434-7000-1902": [{"type": "text","sub_type": "notification","message": "DEBUFF (FURTHEST)"}].concat(inverted_lasers_markers_seventhfloor), - "s-434-7000-1903": [{"type": "text","sub_type": "notification","message": "GATHER + CLEANSE"}].concat(lasers_markers_seventhfloor), - "s-434-7000-1904": [{"type": "text","sub_type": "notification","message": "GATHER + NO CLEANSE"}].concat(inverted_lasers_markers_seventhfloor), - "s-434-7000-1905": [{"type": "text","sub_type": "notification","message": "SPREAD"}].concat(lasers_markers_seventhfloor), - "s-434-7000-1906": [{"type": "text","sub_type": "notification","message": "GATHER"}].concat(inverted_lasers_markers_seventhfloor), - - - - - // Enraged - "s-434-7000-2152": [{"type": "func","func": single_stage_callout.bind(null, "STUN + BACK")}], - "s-434-7000-2138": rings_inout_seventhfloor, - "s-434-7000-2154": [{"type": "text","sub_type": "notification","message": "OUT + IN"}], - "s-434-7000-2155": [{"type": "text","sub_type": "notification","message": "IN + OUT"}], - "s-434-7000-2240": [{"type": "func","func": rings_seventhfloor}], - "s-434-7000-2401": [{"type": "text","sub_type": "notification","message": "PLAGUE/REGRESS"}], - "s-434-7000-2402": [{"type": "text","sub_type": "notification","message": "SLEEP"}], -}; \ No newline at end of file + // 10th floor + let next_debuff = 0; + function debuff_event(send_msg, debuff, ent) { + if (next_debuff === 0) { + next_debuff = debuff; + } + + if (send_msg) { + const debuff_messages = { + 0: { message: "Debuff", message_RU: "Дебаф (бублик)" }, + 2: { message: "Debuff 1, 2", message_RU: "Дебаф (бублик) 1, 2" }, + 3: { message: "Debuff 1, 3", message_RU: "Дебаф (бублик) 1, 3" } + }; + + handlers.text({ + sub_type: "notification", + message: debuff_messages[next_debuff].message, + message_RU: debuff_messages[next_debuff].message_RU, + speech: true + }); + + if (next_debuff !== 0) { + next_debuff = next_debuff === 2 ? 3 : 2; + } + } + } + + + function debuff_removed() { + if (next_debuff != 0) { + handlers.text({ + sub_type: "notification", + message: `next debuff: 1, ${next_debuff}`, + message_RU: `Следующий Дебаф (бублик): 1, ${next_debuff}`, + speech: false + }); + } + + next_debuff = 0; + } + + return { + // FIRST FLOOR + + "nd-434-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + ], + "ab-434-1000-90340105": [{ type: "text", sub_type: "message", message: "STUN IT", message_RU: "Застанить босса!" }], + "s-434-1000-1102-0": [{ type: "text", sub_type: "message", message: "Running", message_RU: "Пробежка" }, + { type: "func", func: knockback_firstfloor.bind(null) }], + "s-434-1000-1105-0": [{ type: "text", sub_type: "message", message: "Breath", message_RU: "Атака вперед" }], + "s-434-1000-1108-0": [{ type: "text", sub_type: "message", message: "KNOCKBACK", message_RU: "Отбрасывание" }], + "s-434-1000-1203-0": [ + { type: "text", sub_type: "message", message: "Sleep", message_RU: "Сон!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 250, 0, 3500] }, + { type: "text", sub_type: "message", delay: 900, message: "dodge", message_RU: "dodge" }], + "s-434-1000-1304-0": [{ type: "text", sub_type: "message", message: "Backstep", message_RU: "Назад + Отбрасывание" }], + "s-434-1000-2102-0": "s-434-1000-1102-0", + "s-434-1000-2105-0": "s-434-1000-1105-0", + "s-434-1000-2108-0": "s-434-1000-1108-0", + "s-434-1000-2203-0": "s-434-1000-1203-0", + "s-434-1000-2304-0": "s-434-1000-1304-0", + + + // SECOND FLOOR + + "s-434-2000-1102-0": [{ type: "text", sub_type: "message", message: "SPIN", message_RU: "Вращение" }], + "s-434-2000-1106-0": [{ type: "text", sub_type: "message", message: "EVADE/Front AOE", message_RU: "Эвейд/Переднее AOE" }], + "s-434-2000-1107-0": [{ type: "text", sub_type: "message", message: "BACK", message_RU: "Стан назад" }], + "s-434-2000-1108-0": [{ type: "text", sub_type: "message", message: "FRONT", message_RU: "Атака вперед" }], + "s-434-2000-1109-0": [{ type: "text", sub_type: "message", message: "Back Spin", message_RU: "Разворот назад Combo" }], + "s-434-2000-1110-0": [ + { type: "text", sub_type: "message", message: "OUT", message_RU: "От него" }, + { type: "text", sub_type: "message", message: "3", delay: 1000 }, + { type: "text", sub_type: "message", message: "2", delay: 2000 }, + { type: "text", sub_type: "message", message: "1", delay: 3000 } + ], + "s-434-2000-1113-0": [{ type: "text", sub_type: "message", message: "Back Combo", message_RU: "Вращение назад" }], + "s-434-2000-1119-0": [{ type: "text", sub_type: "message", message: "PULL", message_RU: "Притяжка + вращение" }], + "s-434-2000-1122-0": [{ type: "text", sub_type: "message", message: "IN", message_RU: "К нему" }], + "s-434-2000-1306-0": [ + { type: "text", sub_type: "message", message: "Stand by head", message_RU: "За крокодила" }, + { type: "text", sub_type: "message", message: "4", delay: 5000 }, + { type: "text", sub_type: "message", message: "3", delay: 6000 }, + { type: "text", sub_type: "message", message: "2", delay: 7000 }, + { type: "text", sub_type: "message", message: "1", delay: 8000 } + ], + "s-434-2000-2102-0": "s-434-2000-1102-0", + "s-434-2000-2106-0": "s-434-2000-1106-0", + "s-434-2000-2107-0": "s-434-2000-1107-0", + "s-434-2000-2108-0": "s-434-2000-1108-0", + "s-434-2000-2109-0": "s-434-2000-1109-0", + "s-434-2000-2110-0": "s-434-2000-1110-0", + "s-434-2000-2113-0": "s-434-2000-1113-0", + "s-434-2000-2119-0": "s-434-2000-1119-0", + "s-434-2000-2122-0": "s-434-2000-1122-0", + "s-434-2000-2306-0": "s-434-2000-1306-0", + + + // THIRD FLOOR + + // Cage Mechanic + // "s-434-3000-1122-0": [{ "type": "func", "func": cage_mechanic_thirdfloor.bind(1122) }], + // "s-434-3000-1123-0": [{ "type": "func", "func": cage_mechanic_thirdfloor.bind(1123) }], + // "s-434-3000-1124-0": [{ "type": "func", "func": cage_mechanic_thirdfloor.bind(1124) }], + // "s-434-3000-1127-0": [{ "type": "func", "func": cage_mechanic_thirdfloor.bind(1127) }], + // "ae-0-0-90340306": [{ "type": "func", "func": cage_set_debuff.bind(0, true) }], + // "ae-0-0-90340307": [{ "type": "func", "func": cage_set_debuff.bind(0, false) }], + // "ae-0-0-90340308": [{ "type": "func", "func": cage_set_debuff.bind(1, true) }], + // "ae-0-0-90340309": [{ "type": "func", "func": cage_set_debuff.bind(1, false) }], + // "ae-0-0-90340310": [{ "type": "func", "func": cage_set_debuff.bind(2, true) }], + // "ae-0-0-90340311": [{ "type": "func", "func": cage_set_debuff.bind(2, false) }], + // "ae-0-0-90340312": [{ "type": "func", "func": cage_set_debuff.bind(3, true) }], + // "ae-0-0-90340313": [{ "type": "func", "func": cage_set_debuff.bind(3, false) }], + // "ae-0-0-90340314": [{ "type": "func", "func": cage_set_debuff.bind(4, true) }], + // "ae-0-0-90340315": [{ "type": "func", "func": cage_set_debuff.bind(4, false) }], + "s-434-3000-1106-0": [{ type: "text", sub_type: "message", message: "back!", message_RU: "Удар назад!" }], + "s-434-3000-1108-0": [{ type: "text", sub_type: "message", message: "forward!", message_RU: "Удар вперед!" }], + "s-434-3000-1112-0": [{ type: "text", sub_type: "message", message: "To the Boss", message_RU: "К Боссу" }], + "s-434-3000-1130-0": [ + { type: "text", sub_type: "message", "message": "Right", message_RU: "Удар вправо" }, // left swipe + { type: "spawn", func: "marker", args: [false, 130, 200, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 60, 200, 0, 2000, true, null] } + ], + "s-434-3000-1131-0": [ + { type: "text", sub_type: "message", "message": "Left", message_RU: "Удар влево" }, // RIGHT SWIPE + { type: "spawn", func: "marker", args: [false, -130, 200, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, -60, 200, 0, 2000, true, null] } + ], + "s-434-3000-1134-0": [{ type: "text", sub_type: "message", message: "DEBUFF", message_RU: "ДЕБАФ" }], // + "s-434-3000-1502-0": [{ type: "text", sub_type: "message", message: "FORCED CAGE", message_RU: "Скоро клетка" }], // + "ns-434-3004": [{ type: "text", sub_type: "message", message: "Kill mobs", message_RU: "Убить мобов" }], + "s-434-3000-2106-0": "s-434-3000-1106-0", + "s-434-3000-2108-0": "s-434-3000-1108-0", + "s-434-3000-2112-0": "s-434-3000-1112-0", + "s-434-3000-2130-0": "s-434-3000-1130-0", + "s-434-3000-2131-0": "s-434-3000-1131-0", + "s-434-3000-2134-0": "s-434-3000-1134-0", + "s-434-3000-2502-0": "s-434-3000-1502-0", + + + // FOURTH FLOOR + + "s-434-4000-1102-0": [{ type: "text", sub_type: "message", message: "Out | In", message_RU: "От босса - к боссу" }], + "s-434-4000-1103-0": [{ type: "text", sub_type: "message", message: "In | Out", message_RU: "К боссу" }], + "s-434-4000-1107-0": [{ type: "text", sub_type: "message", message: "Under the tank, then under the dd", message_RU: "Под танка, затем под мили дд" }], + "s-434-4000-1108-0": [ + { type: "text", sub_type: "message", message: "Lines", message_RU: "Линии" }, + { type: "spawn", func: "vector", args: [553, 90, 20, 175, 300, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 90, -20, -175, 300, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 5, 300, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 90, -20, -5, 300, 0, 4000] } + ], + "s-434-4000-1109-1": [{ type: "text", sub_type: "message", message: "Beam", message_RU: "Луч" }], + "s-434-4000-1109-2": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-434-4000-1205-0": [{ type: "text", sub_type: "message", message: "Laser", message_RU: "Луч по кругу" }], + "s-434-4000-1206-0": [{ type: "text", sub_type: "message", message: "Beam forward, left, right", message_RU: "Луч вперед, лево, право" }], + "ns-434-4001": [{ type: "text", sub_type: "message", message: "Kill mobs", message_RU: "Убить мобов" }], + "s-434-4000-2102-0": "s-434-4000-1102-0", + "s-434-4000-2103-0": "s-434-4000-1103-0", + "s-434-4000-2107-0": "s-434-4000-1107-0", + "s-434-4000-2108-0": "s-434-4000-1108-0", + "s-434-4000-2109-1": "s-434-4000-1109-1", + "s-434-4000-2109-2": "s-434-4000-1109-2", + "s-434-4000-2205-0": "s-434-4000-1205-0", + "s-434-4000-1207-0": "s-434-4000-1205-0", + "s-434-4000-2207-0": "s-434-4000-1205-0", + "s-434-4000-2206-0": "s-434-4000-1206-0", + + + // FIFTH FLOOR + + "h-434-5000-85": [{ "type": "text", "sub_type": "notification", "message": "85%... Big Jump + mob ", "message_RU": "85% Скоро Большой прыжок + мобы" }], + "h-434-5000-55": [{ "type": "text", "sub_type": "notification", "message": "55%... Big Jump + mob ", "message_RU": "55% Скоро Большой прыжок + мобы" }], + "h-434-5000-25": [{ "type": "text", "sub_type": "notification", "message": "25%... Big Jump + mob ", "message_RU": "25% Скоро Большой прыжок + мобы" }], + "h-434-5000-10": [{ "type": "text", "sub_type": "notification", "message": "10%... Big Jump + mob ", "message_RU": "10% Скоро Большой прыжок + мобы" }], + "s-434-5000-1103-0": [ + { type: "text", sub_type: "message", message: "Tail", message_RU: "Хвост" }, + { type: "spawn", func: "semicircle", args: [140, 260, 553, 0, 0, 10, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 135, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 260, 500, 0, 2000] } + ], + "s-434-5000-1104-0": [ + { type: "text", sub_type: "message", message: "Ice Storm DOTs", message_RU: "Ледяные лужи" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 500, 0, 5000] } + ], + "s-434-5000-1105-0": [ + { type: "text", sub_type: "message", message: "Fire Bombs", message_RU: "Огненные бомбы" }, + { type: "spawn", func: "circle", args: [false, 553, 135, 500, 10, 125, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 315, 500, 10, 125, 0, 3250] }, + { type: "spawn", func: "circle", args: [false, 553, 45, 500, 10, 125, 0, 3500] }, + { type: "spawn", func: "circle", args: [false, 553, 235, 500, 10, 125, 0, 3750] }, + { type: "spawn", func: "circle", args: [false, 553, 90, 500, 10, 125, 0, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 270, 500, 10, 125, 0, 4250] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 500, 10, 125, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 553, 180, 500, 10, 125, 0, 4750] }, + { type: "spawn", func: "circle", args: [false, 493, 0, 0, 0, 250, 0, 4750] } + ], + "s-434-5000-1107-0": [ + { type: "text", sub_type: "message", message: "Change", message_RU: "Смена" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 50, 0, 250, 0, 3000] } + ], + "s-434-5000-1118-0": [{ type: "text", sub_type: "message", message: "Slow Jump + mobs", message_RU: "Большой прыжок + мобы" }], + "s-434-5000-2118-0": [{ type: "text", sub_type: "message", message: "Fast Jump + mobs", message_RU: "Большой прыжок + мобы" }], + "s-434-5000-1120-0": [ + { type: "text", sub_type: "message", message: "Stun + reclining", message_RU: "Стан + откид" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 150, 0, 680, 0, 7000] } + ], + "s-434-5000-1124-0": [{ type: "text", sub_type: "message", message: "Slow", message_RU: "Медленный" }], + "s-434-5000-2124-0": [{ type: "text", sub_type: "message", message: "Fast", message_RU: "быстрый" }], + "s-434-5000-1127-0": [{ type: "text", sub_type: "message", message: "DEBUFF", message_RU: "ДЕБАФ" }], + "ns-434-5002": [ + { type: "text", sub_type: "message", message: "Kill your mob(fire)", message_RU: "Убить своего моба(огонь)", check_func: () => fifth_debuff === "blue" }, + { type: "spawn", func: "marker", args: [false, 0, 0, 0, 30000, true, null], tag: "mob1", check_func: () => fifth_debuff === "blue" } + ], + "ns-434-5003": [ + { type: "text", sub_type: "message", message: "Kill your mob(ice)", message_RU: "Убить своего моба(лед)", check_func: () => fifth_debuff === "red" }, + { type: "spawn", func: "marker", args: [false, 0, 0, 0, 30000, true, null], tag: "mob2", check_func: () => fifth_debuff === "red" } + ], + "nd-434-5002": [{ type: "despawn_all", tag: "mob1" }], + "nd-434-5003": [{ type: "despawn_all", tag: "mob2" }], + // Debuff tracker + "am-434-5000-90340501": [ + { type: "text", sub_type: "message", message: "Ice is taken", message_RU: "Взят лед" }, + { type: "func", "func": () => fifth_debuff = "red" } + ], + "am-434-5000-90340502": [ + { type: "text", sub_type: "message", message: "Fire is taken", message_RU: "Взят огонь" }, + { type: "func", "func": () => fifth_debuff = "blue" } + ], + "am-434-5000-90340503": [{ type: "func", "func": () => fifth_debuff = null }], + // Mob Wave Attack + "s-434-5002-1106-0": [{ type: "spawn", func: "vector", args: [553, 120, 30, 10, 450, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 120, -30, -10, 450, 0, 4000] }], + "s-434-5003-1101-0": "s-434-5002-1106-0", + "s-434-5003-2101-0": "s-434-5002-1106-0", + "s-434-5000-2103-0": "s-434-5000-1103-0", + "s-434-5000-2104-0": "s-434-5000-1104-0", + "s-434-5000-2105-0": "s-434-5000-1105-0", + "s-434-5002-2106-0": "s-434-5002-1106-0", + "s-434-5000-2107-0": "s-434-5000-1107-0", + "s-434-5000-2120-0": "s-434-5000-1120-0", + "s-434-5000-2127-0": "s-434-5000-1127-0", + + + // SIXTH FLOOR + + "qb-434-6000-434601": [{ type: "func", func: sixth_regress.bind(null) }], + "s-434-6000-1101-0": [ + { type: "text", sub_type: "message", message: "Blow from the ground", message_RU: "Удар из под земли" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 } + ], + "s-434-6000-1103-0": [ + { type: "text", sub_type: "message", message: "Impact", message_RU: "Удар" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 225, 0, 425, 0, 3000] } + ], + "s-434-6000-1104-0": [ + { type: "text", sub_type: "message", message: "Impact", message_RU: "Удар + взмах" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 225, 0, 375, 0, 3000] } + ], + "s-434-6000-1106-0": [ + { type: "text", sub_type: "message", message: "Series + Impact", message_RU: "Серия + Удар" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 225, 0, 375, 3000, 2000] } + ], + "s-434-6000-1107-0": [{ type: "text", sub_type: "message", message: "Boms", message_RU: "Бомба" }], + "s-434-6000-1109-0": [ + { type: "text", sub_type: "message", message: "1 strike", message_RU: "1 удар" }, + { type: "spawn", func: "semicircle", args: [-160, 105, 553, 0, 0, null, 550, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, -160, 550, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 105, 550, 0, 3000] }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 3000, "distance": 350, "offset": 2.6, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "item", "id": 98260, "sub_delay": 3000, "distance": 350, "offset": 2.6 } + ], + "s-434-6000-1110-0": [ + { type: "text", sub_type: "message", message: "2 strikes", message_RU: "2 удара" }, + { type: "spawn", func: "semicircle", args: [-160, 105, 553, 0, 0, null, 550, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, -160, 550, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 105, 550, 0, 3000] }, + { "type": "spawn", "sub_type": "build_object", "id": 1, "sub_delay": 3000, "distance": 350, "offset": 2.6, "ownerName": "SAFE SPOT", "message": "SAFE" }, + { "type": "spawn", "sub_type": "item", "id": 98260, "sub_delay": 3000, "distance": 350, "offset": 2.6 } + ], + "s-434-6000-1111-0": [{ type: "text", sub_type: "message", message: "Left kick", message_RU: "Удар левой" }], + "s-434-6000-1112-0": [{ type: "text", sub_type: "message", message: "Right kick", message_RU: "Удар правой" }], + "s-434-6000-1113-0": [{ type: "text", sub_type: "message", message: "Laser", message_RU: "Лазер" }], + "s-434-6000-1113-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-434-6000-1133-0": [ + { type: "text", sub_type: "message", message: "Strike", message_RU: "Удар" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 225, 0, 475, 0, 3000] } + ], + "s-434-6000-1134-0": [ + { type: "text", sub_type: "message", message: "Impact", message_RU: "Удар + взмах" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 225, 0, 475, 0, 3000] } + ], + "s-434-6000-2101-0": "s-434-6000-1101-0", + "s-434-6000-2103-0": "s-434-6000-1103-0", + "s-434-6000-2104-0": "s-434-6000-1104-0", + "s-434-6000-2106-0": "s-434-6000-1106-0", + "s-434-6000-2107-0": "s-434-6000-1107-0", + "s-434-6000-2109-0": "s-434-6000-1109-0", + "s-434-6000-2110-0": "s-434-6000-1110-0", + "s-434-6000-2111-0": "s-434-6000-1111-0", + "s-434-6000-2112-0": "s-434-6000-1112-0", + "s-434-6000-2113-0": "s-434-6000-1113-0", + "s-434-6000-2113-1": "s-434-6000-1113-1", + "s-434-6000-2133-0": "s-434-6000-1133-0", + "s-434-6000-2134-0": "s-434-6000-1134-0", + + + // SEVENTH FLOOR + + // Lasers + Mechanic + "nd-434-7000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-434-7000-99": [{ type: "func", func: () => seventh_fifty = false }], + "h-434-7000-50": [{ type: "func", func: () => seventh_fifty = true }], + "dm-0-0-90340703": [{ type: "func", func: seventh_message_event, args: [1043] }], // Lakan has noticed you. + "dm-0-0-90340704": [{ type: "func", func: seventh_message_event, args: [1044] }], // Lakan is trying to take you on one at a time. + "dm-0-0-90340705": [{ type: "func", func: seventh_message_event, args: [1045] }], // Lakan intends to kill all of you at once. + "s-434-7000-1105-0": [ + { type: "text", sub_type: "message", message: "Discarding", message_RU: "Откид пятка" }, + { type: "spawn", func: "vector", args: [553, 0, 0, -95, 850, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 95, 850, 0, 3000] } + ], + "s-434-7000-1136-0": [{ type: "text", sub_type: "message", message: "Claw", message_RU: "Когти" }], + "s-434-7000-1110-0": [{ type: "text", sub_type: "message", message: "Claw", message_RU: "Когти" }], + "s-434-7000-1129-0": [{ type: "text", sub_type: "message", message: "IN", message_RU: "К Боссу!" }], + "s-434-7000-1130-0": [ + { type: "text", sub_type: "message", message: "Shield Strike", message_RU: "Удар щитом" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 130, 0, 270, 0, 2500] } + ], + "s-434-7000-1132-0": [ + { type: "text", sub_type: "message", message: "AOE Shield", message_RU: "АОЕ щитом!" }, + { type: "spawn", func: "semicircle", args: [-65, 65, 553, 0, 0, null, 600, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 40, -65, 600, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 40, 65, 600, 0, 3000] } + ], + "s-434-7000-1133-0": [ + { type: "text", sub_type: "message", message: "AOE Shield", message_RU: "АОЕ щитом!" }, + { type: "spawn", func: "semicircle", args: [-65, 65, 553, 0, 0, null, 600, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 0, 40, -65, 600, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 0, 40, 65, 600, 0, 6000] } + ], + "s-434-7000-1135-0": [{ type: "text", sub_type: "message", message: "IN", message_RU: "К Боссу!" }], + "s-434-7000-1240-0": [ + { type: "text", sub_type: "message", message: "Donuts", message_RU: "Бублики!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 200, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 380, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 520, 0, 6000] } + ], + "s-434-7000-1401-0": [{ type: "text", sub_type: "message", message: "Plague/Regress", message_RU: "Регресс!!" }], + "s-434-7000-1402-0": [{ type: "text", sub_type: "message", message: "Sleep", message_RU: "Слип!!" }], + "s-434-7000-1701-0": [{ type: "text", sub_type: "message", message: "Back + front", message_RU: "Назад + Вперед" }], + "s-434-7000-1113-0": [{ type: "text", sub_type: "message", message: "Bait", message_RU: "Байт" }], + "s-434-7000-1151-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "s-434-7000-1152-0": [ + { type: "text", sub_type: "message", message: "Stun + Back", message_RU: "Стан + Откид назад" }, + { type: "spawn", func: "semicircle", args: [110, 250, 553, 0, 0, null, 1000, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 70, -1000, 70, 1000, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 290, -1000, -70, 1000, 0, 6000] } + ], + "s-434-7000-1138-0": [{ type: "spawn", func: "circle", args: [false, 553, 0, 10, 0, 250, 0, 3000] }], + "s-434-7000-1140-0": [ + { type: "text", sub_type: "message", message: "Donuts", message_RU: "Бублики!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 200, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 380, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 520, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 0, 700, 0, 6000] } + ], + "s-434-7000-1154-0": [ + { "type": "text", "sub_type": "message", "message": "OUT", message_RU: "От него => К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 10, 0, 250, 0, 3000] } + ], + "s-434-7000-1155-0": [ + { "type": "text", "sub_type": "message", "message": "IN", message_RU: "К нему => От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 10, 0, 250, 0, 3000] } + ], + "s-434-7000-1901-0": [ // normal world + { type: "text", sub_type: "notification", message: "Debuffs Closest", message_RU: "Дебафф (ближние)" }, + { type: "func", func: seventh_spawn_tables, args: [true] } + ], + "s-434-7000-1902-0": [ // soul world + { type: "text", sub_type: "notification", message: "Debuffs Farthest", message_RU: "Дебафф (дальние)" }, + { type: "func", func: seventh_spawn_tables, args: [false] } + ], + "s-434-7000-1903-0": [ // normal world + { type: "text", sub_type: "notification", message: "Gather + Cleanse", message_RU: "Бомбы (вместе!) + клинс" }, + { type: "func", func: seventh_spawn_tables, args: [true] } + ], + "s-434-7000-1904-0": [ // soul world + { type: "text", sub_type: "notification", message: "Gather + No cleanse", message_RU: "Бомбы (вместе!) + БЕЗ клинса" }, + { type: "func", func: seventh_spawn_tables, args: [false] } + ], + "s-434-7000-1905-0": [ // normal world + { type: "text", sub_type: "notification", message: "Spread", message_RU: "Круги (отдельно!)" }, + { type: "func", func: seventh_spawn_tables, args: [true] } + ], + "s-434-7000-1906-0": [ // soul world + { type: "text", sub_type: "notification", message: "Gather", message_RU: "Круги (вместе!)" }, + { type: "func", func: seventh_spawn_tables, args: [false] } + ], + "s-434-7000-1144-0": [ + { "type": "text", "sub_type": "message", "message": "OUT", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 10, 0, 250, 0, 3000] } + ], + "s-434-7000-1145-0": [ + { "type": "text", "sub_type": "message", "message": "IN", message_RU: "К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 10, 0, 250, 0, 3000] } + ], + "s-434-7000-2105-0": "s-434-7000-1105-0", + "s-434-7000-2136-0": "s-434-7000-1136-0", + "s-434-7000-2110-0": "s-434-7000-1110-0", + "s-434-7000-2129-0": "s-434-7000-1129-0", + "s-434-7000-2130-0": "s-434-7000-1130-0", + "s-434-7000-2132-0": "s-434-7000-1132-0", + "s-434-7000-2133-0": "s-434-7000-1133-0", + "s-434-7000-2135-0": "s-434-7000-1135-0", + "s-434-7000-2401-0": "s-434-7000-1401-0", + "s-434-7000-2402-0": "s-434-7000-1402-0", + "s-434-7000-2701-0": "s-434-7000-1701-0", + "s-434-7000-2113-0": "s-434-7000-1113-0", + "s-434-7000-2151-0": "s-434-7000-1151-0", + "s-434-7000-2152-0": "s-434-7000-1152-0", + "s-434-7000-2138-0": "s-434-7000-1138-0", + "s-434-7000-2140-0": "s-434-7000-1140-0", + "s-434-7000-2154-0": "s-434-7000-1154-0", + "s-434-7000-2155-0": "s-434-7000-1155-0", + "s-434-7000-2240-0": "s-434-7000-1240-0", + "s-434-7000-2142-0": "s-434-7000-1142-0", + "s-434-7000-2143-0": "s-434-7000-1143-0", + "s-434-7000-2901-0": "s-434-7000-1901-0", + "s-434-7000-2902-0": "s-434-7000-1902-0", + "s-434-7000-2903-0": "s-434-7000-1903-0", + "s-434-7000-2904-0": "s-434-7000-1904-0", + "s-434-7000-2905-0": "s-434-7000-1905-0", + "s-434-7000-2144-0": "s-434-7000-1144-0", + "s-434-7000-2145-0": "s-434-7000-1145-0", + + + // EIGHTH FLOOR + "ns-434-8000": [ + { type: "func", func: () => is_eighth_floor = true }, + { type: "func", func: set_boss_data }, + ], + "nd-434-8000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "func", func: () => is_eighth_floor = false }, + { type: "func", func: () => boss_data = null }, + ], + "ns-434-8100": [{ type: "func", func: curse_mob_spawned }], + "ns-434-8200": [{ type: "func", func: carpet_mob_spawned }], + "nd-434-8200": [{ type: "func", func: carpet_mob_reset_event }], + "qb-434-8000-459006": [{ type: "text", sub_type: "alert", message: "Red Circles", message_RU: "Красные круги" }], + "qb-434-8000-434801": [ + { type: "text", sub_type: "message", message: "Orbs", message_RU: "сферы" }, + { type: "text", sub_type: "message", delay: 10000, message: "Attention Orbs", message_RU: "Сферы внимания" }, + ], + "s-434-8200-3102-0": [{ type: "text", sub_type: "message", message: "Yellow Circles", message_RU: "Желтые круги" }], + "s-434-8000-1110-0": [ + { type: "text", sub_type: "message", message: "Lightning", message_RU: "Молния" }, + { type: "spawn", func: "circle", args: [false, 553, 45, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 135, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 225, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 315, 180, 12, 230, 0, 3000] } + ], + "s-434-8000-2110-0": "s-434-8000-1110-0", + + // 9th FLOOR + "ns-434-9000": [ + { type: "func", func: () => is_ninth_floor = true }, + { type: "func", func: ninth_triples_event }, + { type: "func", func: ninth_secondary_event }, + { type: "func", func: set_boss_data }, + ], + "nd-434-9000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "func", func: reset_backevent }, + { type: "func", func: () => boss_data = null }, + ], + "h-434-9000-99": [{ type: "func", func: () => is_ninth_floor = true }], + "h-434-9000-49": [ + { type: "text", sub_type: "message", message: "49%" }, + { type: "func", func: () => ninth_floor_fifty = true }, + { type: "text", sub_type: "notification", message: "Triples Soon!", message_RU: "тройки Скоро!", delay: 1000 } + ], + "dm-0-0-9034901": [ + { type: "text", sub_type: "message", message: "Triples!", message_RU: "тройки!" }, + { type: "func", func: () => ninth_triple_swipe_remaining = 3 }, + { type: "func", func: ninth_triples_event }, + ], + "s-434-9000-1112-0": [{ type: "text", sub_type: "message", message_RU: "Рывок назад", message: "Back Move" }], + "s-434-9000-1102-0": [{ type: "func", func: () => back_time = new Date() }], + "s-434-9000-1101-0": [{ type: "func", func: boss_backattack_event }], + "s-434-9000-1106-0": [{ type: "func", func: boss_backattack_event_new, args: [1106] }], + "s-434-9000-1105-0": [{ type: "func", func: boss_backattack_event_new, args: [1105] }], + "s-434-9000-1103-0": [{ type: "func", func: boss_backattack_event_new, args: [1103] }], + "s-434-9000-1108-0": [{ type: "func", func: boss_backattack_event_new, args: [1108] }], + "s-434-9000-1114-0": [ + { type: "text", sub_type: "message", message_RU: "Таргет", message: "Target Attack" }, + { type: "spawn", func: "vector", args: [553, 90, 150, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 90, 75, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 270, 75, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 270, 150, 0, 1300, 0, 2500] } + ], + "s-434-9000-1115-0": [ + { type: "text", sub_type: "message", message: "3" }, + { type: "text", sub_type: "message", delay: 1000, message: "2" }, + { type: "text", sub_type: "message", delay: 2000, message: "1" }, + { type: "text", sub_type: "message", delay: 3200, message_RU: "Эвейд", message: "Dodge" } + ], + "s-434-9000-1117-0": [{ type: "text", sub_type: "message", message_RU: "Удар вперед", message: "Front" }], + "s-434-9000-1302-0": [ + { type: "text", sub_type: "message", message_RU: "АоЕ", message: "AOE" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 500, 100, 6000] } + ], + "s-434-9000-1407-0": [{ type: "func", func: ninth_new_swipe_event, args: [1407] }], + "s-434-9000-1408-0": [{ type: "func", func: ninth_new_swipe_event, args: [1408] }], + "s-434-9000-2101-0": "s-434-9000-1101-0", + "s-434-9000-2102-0": "s-434-9000-1102-0", + "s-434-9000-2103-0": "s-434-9000-1103-0", + "s-434-9000-2105-0": "s-434-9000-1105-0", + "s-434-9000-2106-0": "s-434-9000-1106-0", + "s-434-9000-2108-0": "s-434-9000-1108-0", + "s-434-9000-2112-0": "s-434-9000-1112-0", + "s-434-9000-1303-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка", message: "Spin Attack" }], + "s-434-9000-1401-0": [{ type: "func", func: ninth_old_swipe_event, args: [1401] }], + "s-434-9000-1402-0": [{ type: "func", func: ninth_old_swipe_event, args: [1402] }], + "s-434-9000-1301-0": [{ type: "text", sub_type: "message", message_RU: "вопль", message: "Scream" }], + "s-434-9000-2114-0": "s-434-9000-1114-0", + "s-434-9000-2115-0": "s-434-9000-1115-0", + "s-434-9000-2117-0": "s-434-9000-1117-0", + + // Manyaa floor 10 + + "nd-434-10000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "die": [{ type: "func", func: debuff_removed }], + "h-434-10000-99": [{ type: "func", func: () => next_debuff = 0 }], + "s-434-10000-1103-0": [{ type: "text", sub_type: "message", message_RU: "Передняя атака", message: "Frontal Attack" }], + "s-434-10000-1205-0": [{ type: "text", sub_type: "message", message_RU: "Телепорт", message: "Teleport" }], + "s-434-10000-1102-0": [{ type: "text", sub_type: "message", message_RU: "К нему > От него", message: "In > Out" }], + "s-434-10000-1113-0": [{ type: "text", sub_type: "message", message_RU: "Левая рука ", message: "Left Hand Attack" }], + "s-434-10000-1105-0": [{ type: "text", sub_type: "message", message_RU: "Правая рука ", message: "Right Hand Attack" }], + "s-434-10000-1112-0": [{ type: "func", func: debuff_event, args: [true, 0] }], + "s-434-10000-1108-0": [{ type: "text", sub_type: "message", message_RU: "Атака (таргет)", message: "Target Attack" }], + "s-434-10000-1114-0": [{ type: "text", sub_type: "message", message_RU: "Удар назад", message: "Back Attack" }], + "s-434-10000-1115-0": [{ type: "text", sub_type: "message", message_RU: "Хвост", message: "Tail" }], + "s-434-10000-1111-0": [{ type: "text", sub_type: "message", message_RU: "Хвост вперед", message: "Frontal Attack" }], + "s-434-10000-1109-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ (таргет)", message: "AoE Target" }], + "s-434-10000-1104-0": [{ type: "text", sub_type: "message", message: "Stomp" }], + "s-434-10000-1107-0": [{ type: "text", sub_type: "message", message_RU: "Лазер", message: "Laser Attack" }, + { type: "spawn", func: "vector", args: [912, 360, 985, 180, 950, 0, 2500] }, + { type: "spawn", func: "vector", args: [912, 369, 995, 180, 950, 0, 2500] }, + { type: "spawn", func: "vector", args: [912, 351, 995, 180, 950, 0, 2500] } + ], + "s-434-10000-1106-0": [{ type: "text", sub_type: "message", message_RU: "Бомба (таргет)", message: "Target Bomb" }], + "s-434-10000-1204-0": [{ type: "text", sub_type: "message", message_RU: "Большая АоЕ (бежать)", message: "Big AoE (Run)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 550, 0, 4000] } + ], + "qb-434-10000-427050": [ + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/Регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ], + "s-434-10000-2205-0": "s-434-10000-1205-0", + "s-434-10000-2102-0": "s-434-10000-1102-0", + "s-434-10000-2113-0": "s-434-10000-1113-0", + "s-434-10000-2105-0": "s-434-10000-1105-0", + "s-434-10000-2112-0": "s-434-10000-1112-0", + "s-434-10000-2115-0": "s-434-10000-1115-0", + "s-434-10000-2111-0": "s-434-10000-1111-0", + "s-434-10000-2109-0": "s-434-10000-1109-0", + "s-434-10000-2107-0": "s-434-10000-1107-0", + "s-434-10000-2106-0": "s-434-10000-1106-0", + "s-434-10000-2204-0": "s-434-10000-1204-0", + "s-434-10000-2103-0": "s-434-10000-1103-0", + "s-434-10000-2114-0": "s-434-10000-1114-0", + "s-434-10000-2108-0": "s-434-10000-1108-0", + "s-434-10000-2104-0": "s-434-10000-1104-0", + "am-434-10000-90341002": [{ type: "func", func: debuff_event, args: [false, 3] }], // hateful thought #2 + "am-434-10000-90341003": [{ type: "func", func: debuff_event, args: [false, 2] }], // desperate thought #3 90341006 + "am-434-10000-90341006": "am-434-10000-90341003", + "am-434-10000-90341005": "am-434-10000-90341002" + }; +}; diff --git a/guides/9044.js b/guides/9044.js index 80a3e4d8..215c88c5 100644 --- a/guides/9044.js +++ b/guides/9044.js @@ -1,637 +1,336 @@ -// 火神 -//made by michengs -let notice_guide = true; -let player, entity, library, effect; -let shining = false; -let skill = 0; -let print = false; -let notice = true; -let notices = true; -let printend = false; - - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } -function SpawnThingobject( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "巴哈勒", - "message": "王坐方向" - }, {loc: shield_loc}); -} - - -// 召喚光柱 ,告示牌提示( 角度 距离 延迟时间 时间) -function SpawnThing( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "SAFE SPOT", - "message": "SAFE" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} -// 召喚点 ,提示( 提示标志 角度 距离 延迟时间 时间) -function Spawnitem( item,degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} - - //构建直线(提示标志 偏移角度 偏移距离 角度 最远距离 时间) -function Spawnitem1(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -function skillds_event(skillids, handlers, event, ent, dispatch) { -if (skillids === 104 ) { - skill = 104 - // setTimeout(() => skill = 0, 500); - -}else if ( skillids === 134) { - skill = 134 - // setTimeout(() => skill = 0, 500); -}else if ( skillids === 118) { - skill = 118 - // setTimeout(() => skill = 0, 500); -} -} - -function skilld_event(skillid, handlers, event, ent, dispatch) { - - if (skillid == 90442000) shining = true; - if (skillid == 90442001) shining = false; -if (skillid == 90442304) { -handlers['text']({"sub_type": "message","message": "Stun","message_RU": "Стан!!!"}); -handlers['text']({ -"sub_type": "notification", -"message": "Stun", -"message_RU": "Стан!!!" -}); -} - - -if (skillid == 90444001 && skill == 104) - - setTimeout(() => { - if (shining){ - handlers['text']({"sub_type": "msgcp","message": "back","message_RU": "Удар назад"}); - skill = 0; - notices = false; - setTimeout(() => notices = true, 1000); +// Bahaar's Sanctum +// +// made by michengs / Emilia-s2 / HSDN / Vampic + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + const { player } = dispatch.require.library; + let print_loading = true; + let print_lasers = true; + + function waves_event() { + handlers.event([ + { type: "spawn", func: "vector", args: [553, 90, 50, 0, 500, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 0, 500, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 90, 50, 180, 500, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 270, 50, 180, 500, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 6, 400, 0, 6000] }, + { type: "text", sub_type: "alert", delay: 60000, message: "Waves soon...", message_RU: "Скоро волны..." } + ]); } - - }, 500); - - -if (skillid == 90442000 && skill == 134) setTimeout(() => { - if (shining){ - - handlers['text']({"sub_type": "msgcp","message": "back","message_RU": "Удар назад"}); - skill = 0; - notices = false; - setTimeout(() => notices = true, 1000); -} - }, 300); -if (skillid == 90444001 && skill == 118) setTimeout(() => { - -if (shining){ - -handlers['text']({"sub_type": "msgcp","message": "back","message_RU": "Удар назад"}); - skill = 0; - notices = false; - setTimeout(() => notices = true, 1000); -} - }, 300); - - if (notice && skillid == 305 ) { - notice = false; -handlers['text']({"sub_type": "message","message": "laser","message_RU": "Лазер !!!"}); -handlers['text']({ -"sub_type": "notification", -"message": "laser", -"message_RU": "Лазер !!!" -}); - setTimeout(() => notice = true, 4000); - } - - -if ( notices && skillid == 137 ) { -handlers['text']({"sub_type": "message","message": "back","message_RU": "Удар назад"}); -} - -} -function start_boss() { -print = true; -printend = true; -} -function print_th(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "laser (loading)", -"message_RU": "Лазер?!!!" -}); -} -print = false; -} -function print_end(handlers) { -if(printend) { -handlers['text']({ -"sub_type": "message", -"message": "laser (loading)", -"message_RU": "Лазер??!!!" -}); -handlers['text']({ -"sub_type": "message", -"delay": 30000, -"message": "laser (loading)", -"message_RU": "Лазер???!!!" -}); -} -printend = false; -} - -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, -// "h-444-1000-100-0": [{"type": "func","func": guid_voice}], - "h-444-2000-100": [ - // {"type": "func","func": Spawnitem1.bind(null,542,0,0,0,3000,6000000)}, - //{"type": "func","func": Spawnitem1.bind(null,542,0,0,180,3000,6000000)} - {"type": "func","func": SpawnThingobject.bind(null,0,-700,100,60000000)}, - { - "type": "spawn", - "id": 513, - "sub_delay": 99999999, - "pos": { - x: -116268, - y: 115070, - z: 4022 - } - } - - ], - //构建直线(提示标志 偏移角度 偏移距离 角度 最远距离 时间) - - // "s-444-2000-1104-0": [ {"type": "func","func": skillds_event.bind(null, 104)}], - // "s-444-2000-2104-0": [ {"type": "func","func": skillds_event.bind(null, 104)}], - - //"s-444-2000-1134-0": [ {"type": "func","func": skillds_event.bind(null, 134)}], - // "s-444-2000-2134-0": [ {"type": "func","func": skillds_event.bind(null, 134)}], - - "s-444-1000-2103-0": [{"type": "text","sub_type": "message","message": "Front (Dodge)","message_RU": "Удар вперед (эвейд)" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,400,8,350,100,3000)}], - - "s-444-1000-2108-0": [{"type": "text","sub_type": "message","message": 'Back Throw -> Front',"message_RU": "Стан назад -> Черенок" }], - "s-444-1000-2111-0": [{"type": "text","sub_type": "message","message": 'Back',"message_RU": "Удар назад --" }, - - {"type": "func","func": Spawnitem2.bind(null,445,180,500,8,480,100,2000)} - ], - "s-444-1000-2113-0": [{"type": "text","sub_type": "message","message": 'Throw',"message_RU": "Молот (байт)" }], - - "s-444-1000-2114-0": [{"type": "text","sub_type": "message","message": 'Front Slam',"message_RU": "Удар назад" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,260,10,320,100,4000)} - - ], - "s-444-1000-2115-0": [{"type": "text","sub_type": "message","message": 'Knockup',"message_RU": "Черкаш (полет)" }], - "s-444-1000-2116-0": [{"type": "text","sub_type": "message","message": 'Donuts',"message_RU": "Бублики" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,290,100,6000)} - ], - "s-444-1000-2117-0": [{"type": "text","sub_type": "message","message": 'Jump (Bait)',"message_RU": "Прыжок (байт)" }], - "s-444-1000-2118-0": [{"type": "text","sub_type": "message","message": 'Jump (Tank)',"message_RU": "Прыжок (танк)" } - //{"type": "func","func": skillds_event.bind(null, 118)} - ], - - "s-444-1000-2121-0": [{"type": "text","sub_type": "message","message": 'Waves (Left)',"message_RU": "Волны (левая)" }, - - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - - ], - "s-444-1000-2131-0": [{"type": "text","sub_type": "message","message": 'Front -> Left Scratch',"message_RU": "1Удар в вперед -> левый черкаш" }, - {"type": "func","func": Spawnitem2.bind(null,445,358,340,8,660,100,4000)} - - ], - "s-444-1000-2132-0": [ - {"type": "func","func": Spawnitem1.bind(null,553,270,200,0,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,200,180,500,2000)}], - - "s-444-1000-2137-0": [ -{"type": "text","sub_type": "message","message": 'Hammer back ',"message_RU": "Удар назад " }, - {"type": "func","func": Spawnitem2.bind(null,445,180,500,8,480,100,2000)}], - - "s-444-1000-2138-0": [{"type": "text","sub_type": "message","message": 'Knockup (Bait)',"message_RU": "Черкаш (полет)" }], - "s-444-1000-2139-0": [{"type": "text","sub_type": "message","message": 'Dodge!!',"message_RU": "Эвейд!!!" }], - "s-444-1000-2140-0": [{"type": "text","sub_type": "message","message": 'Waves (Right)',"message_RU": "Волны (правая)" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], -//----------------------------------------------------------------------------------------------------- - "s-444-1000-1103-0": [{"type": "text","sub_type": "message","message": 'Front (Dodge)',"message_RU": "Удар вперед (эвейд)" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,400,8,350,100,3000)}], - - "s-444-1000-1108-0": [{"type": "text","sub_type": "message","message": 'Back Throw -> Front',"message_RU": "Стан назад -> Черенок" }], - "s-444-1000-1111-0": [{"type": "text","sub_type": "message","message": 'Back',"message_RU": "Удар назад --" }, - - {"type": "func","func": Spawnitem2.bind(null,445,180,500,8,480,100,2000)} - ], - "s-444-1000-1113-0": [{"type": "text","sub_type": "message","message": 'Throw',"message_RU": "Молот (байт)" }], - - "s-444-1000-1114-0": [{"type": "text","sub_type": "message","message": 'Front Slam',"message_RU": "Удар назад" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,260,10,320,100,4000)} - - ], - "s-444-1000-1115-0": [{"type": "text","sub_type": "message","message": 'Knockup',"message_RU": "Черкаш (полет)" }], - "s-444-1000-1116-0": [{"type": "text","sub_type": "message","message": 'Donuts',"message_RU": "Бублики" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,290,100,6000)} - ], - "s-444-1000-1117-0": [{"type": "text","sub_type": "message","message": 'Jump (Bait)',"message_RU": "Прыжок (байт)" }], - "s-444-1000-1118-0": [{"type": "text","sub_type": "message","message": 'Jump (Tank)',"message_RU": "Прыжок (танк)" } - //{"type": "func","func": skillds_event.bind(null, 118)} - ], - - "s-444-1000-1121-0": [{"type": "text","sub_type": "message","message": 'Waves (Left)',"message_RU": "Волны (левая)" }, - - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - - ], - "s-444-1000-1131-0": [{"type": "text","sub_type": "message","message": 'Front -> Left Scratch',"message_RU": "1Удар вперед -> левый черкаш" }, - {"type": "func","func": Spawnitem2.bind(null,445,358,340,8,660,100,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,358,340,180,500,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,358,340,0,500,4000)} - ], - "s-444-1000-1132-0": [ - {"type": "func","func": Spawnitem1.bind(null,553,270,200,0,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,200,180,500,2000)}], - - "s-444-1000-1137-0": [ -{"type": "text","sub_type": "message","message": 'Hammer back ',"message_RU": "Удар назад" }, - {"type": "func","func": Spawnitem2.bind(null,445,180,500,8,480,100,2000)}], - - "s-444-1000-1138-0": [{"type": "text","sub_type": "message","message": 'Knockup (Bait)',"message_RU": "Черкаш (полет)" }], - "s-444-1000-1139-0": [{"type": "text","sub_type": "message","message": 'Dodge!!',"message_RU": "Эвейд!!!" }], - "s-444-1000-1140-0": [{"type": "text","sub_type": "message","message": 'Waves (Right)',"message_RU": "Волны (правая)" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - //------------------------------------------------------------------------------------------------- - /* - "h-444-2000-99": [{"type": "func","func": start_boss}, - { - "type": "spawn", - "id": 6, - "sub_delay": 99999999, - "pos": { - x: -114567, - y: 115063, - z: 4022 - } - }], -*/ - - "h-444-2000-0": [{"type": "func","func": print_end}], - "s-444-2000-1101-0": [{"type": "text","sub_type": "message","message": '4 Hit combo',"message_RU": " 270 " }, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,195,500,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,270,500,3000)}], - - "s-444-2000-1103-0": [{"type": "text","sub_type": "message","message": 'Front (Dodge)',"message_RU": "Удар вперед (эвейд)" }, - - {"type": "func","func": Spawnitem2.bind(null,445,356,400,8,350,100,3000)}], - - "s-444-2000-1107-0": [{"type": "text","sub_type": "message","message": '4 Hit (3)',"message_RU": "4 " }], - "s-444-2000-1108-0": [{"type": "text","sub_type": "message","message": 'Back Throw -> Front',"message_RU": "Стан назад -> удар вперед" }], - "s-444-2000-1111-0": [{"type": "text","sub_type": "message","message": 'Back',"message_RU": "Удар назад" }, - {"type": "func","func": Spawnitem2.bind(null,445,180,500,8,480,100,2000)} - ], - - "s-444-2000-1112-0": [ - //{"type": "text","sub_type": "message","message_RU": "完美格挡" }, - {"type": "text","sub_type": "message","delay": 1240,"message": 'Perfect Defense',"message_RU": "Идеальный блок" }, - // {"type": "text","sub_type": "message","delay": 2040,"message": "1" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,220,12,210,100,4000)} - - ], - - "s-444-2000-1113-0": [{"type": "text","sub_type": "message","message": 'Throw',"message_RU": "Молот (байт)" }], - - "s-444-2000-1114-0": [{"type": "text","sub_type": "message","message": 'Front Slam',"message_RU": "Удар назад" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,260,10,320,100,4000)} - - ], - "s-444-2000-1115-0": [{"type": "text","sub_type": "message","message": 'Knockup',"message_RU": "Черкаш (полет)" }], - "s-444-2000-1116-0": [{"type": "text","sub_type": "message","message": 'Donuts',"message_RU": "Бублики" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,290,100,6000)} - ], - "s-444-2000-1117-0": [{"type": "text","sub_type": "message","message": 'Jump (Bait)',"message_RU": "Прыжок (байт)" }], - "s-444-2000-1118-0": [{"type": "text","sub_type": "message","message": 'Jump (Tank)',"message_RU": "Прыжок (танк)" } - // {"type": "func","func": skillds_event.bind(null, 118)} - ], - "s-444-2000-1119-0": [{"type": "text","sub_type": "message","message": 'Left swipe',"message_RU": "Слева" }, - {"type": "func","func": SpawnThing.bind(null,270,300,100,2000)} - ], - "s-444-2000-120-0": [{"type": "text","sub_type": "message","message": 'Right swipe',"message_RU": "Справа" }, - {"type": "func","func": SpawnThing.bind(null,90,300,100,2000)} - ], - - "s-444-2000-1121-0": [{"type": "text","sub_type": "message","message": 'Waves (Left)',"message_RU": "Волны (левая)" }, - - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - - ], - "s-444-2000-1122-0": [{"type": "text","sub_type": "message","message": 'Waves (Left) 3nd fast',"message_RU": "Волны(левая) 3 быстрая" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - "s-444-2000-1123-0": [{"type": "text","sub_type": "message","message": 'Waves (Left) 2nd fast',"message_RU": "Волны (левая) 2 быстрая" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - "s-444-2000-1125-0": [{"type": "text","sub_type": "message","message": 'Front -> Right Scratch',"message_RU": "1Удар вперед -> правый черкаш" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,400,8,350,100,3000)}, - {"type": "func","func": Spawnitem1.bind(null,553,356,400,180,500,3000)}, - {"type": "func","func": Spawnitem1.bind(null,553,356,400,0,500,3000)} - ], - "s-444-2000-1126-0": [ - {"type": "func","func": Spawnitem1.bind(null,553,90,200,0,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,200,180,500,2000)}], - - "s-444-2000-1131-0": [{"type": "text","sub_type": "message","message": 'Front -> Left Scratch',"message_RU": "Удар вперед -> левый черкаш" }, - {"type": "func","func": Spawnitem2.bind(null,445,358,340,8,660,100,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,358,340,180,500,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,358,340,0,500,4000)} - - ], - "s-444-2000-1132-0": [ - {"type": "func","func": Spawnitem1.bind(null,553,270,200,0,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,200,180,500,2000)}], - "s-444-2000-1135-0": [ - //{"type": "text","sub_type": "message","message_RU": "完美格挡" }, - {"type": "text","sub_type": "message","delay": 200,"message": 'Perfect Defense',"message_RU": "Идеальный блок" },//------------------------------------------------------ - // {"type": "text","sub_type": "message","delay": 1535,"message": "1" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,220,12,210,100,4000)} - ], - "s-444-2000-1137-0": [ -//{"type": "func","func": skilld_event.bind(null, 137)}, -{"type": "text","sub_type": "message","message": 'Hammer back ',"message_RU": "Удар назад" }, - {"type": "func","func": Spawnitem2.bind(null,445,180,500,8,480,100,2000)}], - - "s-444-2000-1138-0": [{"type": "text","sub_type": "message","message": 'Knockup (Bait)',"message_RU": "Черкаш (полет)" }], - "s-444-2000-1139-0": [{"type": "text","sub_type": "message","message": 'Dodge!!',"message_RU": "Эвейд!!!" }], - "s-444-2000-1140-0": [{"type": "text","sub_type": "message","message": 'Waves (Right)',"message_RU": "Волны (правая)" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - "s-444-2000-1141-0": [{"type": "text","sub_type": "message","message": 'Waves (Right) 3nd fast',"message_RU": "Волны (правая) 3 быстрая" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - "s-444-2000-1142-0": [{"type": "text","sub_type": "message","message": 'Waves (Right) 2nd fast',"message_RU": "Волны (правая) 2 быстрая" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - "s-444-2000-1307-0": [{"type": "text","sub_type": "message","message": '!',"message_RU": "!" }, - {"type": "text","sub_type": "message","delay": 20000,"message": 'last aerolite',"message_RU": "последний" } - - ], - "s-444-2000-1308-0": [{"type": "text","sub_type": "message","message": 'Stun (1)',"message_RU": "Стан (1)" }], - "s-444-2000-1309-0": [{"type": "text","sub_type": "message","message": 'Stun (2)',"message_RU": "Стан(2)" }], - "s-444-2000-1310-0": [{"type": "text","sub_type": "message","message": 'Stun (3)',"message_RU": "Стан(3)" }], - - "s-444-2000-1311-0": [{"type": "text","sub_type": "message","message": 'Wrath',"message_RU": "Облепиха" }, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,180,500,6000)} - - ], - "s-444-2000-1312-0": [{"type": "text","sub_type": "message","message": 'Wrath!',"message_RU": "Облепиха" }, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,180,500,6000)}], -//--------------------------------------------------------------------------------------------------- - "s-444-2000-2101-0": [{"type": "text","sub_type": "message","message": '4 Hit combo',"message_RU": " 270 " }, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,195,500,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,270,500,3000)}], - - "s-444-2000-2103-0": [{"type": "text","sub_type": "message","message": 'Front (Dodge)',"message_RU": "Удар вперед (эвейд)" }, - - {"type": "func","func": Spawnitem2.bind(null,445,356,400,8,350,100,3000)}], - - "s-444-2000-2107-0": [{"type": "text","sub_type": "message","message": '4 Hit (3)',"message_RU": "4" }], - "s-444-2000-2108-0": [{"type": "text","sub_type": "message","message": 'Back Throw -> Front',"message_RU": "Стан назад -> удар вперед" }], - "s-444-2000-2111-0": [{"type": "text","sub_type": "message","message": 'Back',"message_RU": "Удар назад" }, - {"type": "func","func": Spawnitem2.bind(null,445,180,500,8,480,100,2000)} - ], - - "s-444-2000-2112-0": [ - //{"type": "text","sub_type": "message","message_RU": "完美格挡" }, - {"type": "text","sub_type": "message","delay": 2000,"message": 'Perfect Defense',"message_RU": "Идеальный блок" }, - {"type": "text","sub_type": "message","delay": 2700,"message": "2" }, - // {"type": "text","sub_type": "message","delay": 2800,"message": "1" }, - // {"type": "text","sub_type": "message","delay": 3690,"message": "2" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,220,12,210,100,4000)} - - ], - - "s-444-2000-2113-0": [{"type": "text","sub_type": "message","message": 'Throw',"message_RU": "Молот (байт)" }], - - "s-444-2000-2114-0": [{"type": "text","sub_type": "message","message": 'Front Slam',"message_RU": "Удар назад" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,260,10,320,100,4000)} - - ], - "s-444-2000-2115-0": [{"type": "text","sub_type": "message","message": 'Knockup',"message_RU": "Черкаш (полет)" }], - "s-444-2000-2116-0": [{"type": "text","sub_type": "message","message": 'Donuts',"message_RU": "Бублики" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,290,100,6000)} - ], - "s-444-2000-2117-0": [{"type": "text","sub_type": "message","message": 'Jump (Bait)',"message_RU": "Прыжок (байт)" }], - "s-444-2000-2118-0": [{"type": "text","sub_type": "message","message": 'Jump (Tank)',"message_RU": "Прыжок (танк)" } - //{"type": "func","func": skillds_event.bind(null, 118)} - ], - "s-444-2000-2119-0": [{"type": "text","sub_type": "message","message": 'Left swipe',"message_RU": "Слева" }, - {"type": "func","func": SpawnThing.bind(null,270,300,100,2000)} - ], - "s-444-2000-2120-0": [{"type": "text","sub_type": "message","message": 'Right swipe',"message_RU": "Справа" }, - {"type": "func","func": SpawnThing.bind(null,90,300,100,2000)} - ], - - "s-444-2000-2121-0": [{"type": "text","sub_type": "message","message": 'Waves (Left)',"message_RU": "Волны (слева)" }, - - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - - ], - "s-444-2000-2122-0": [{"type": "text","sub_type": "message","message": 'Waves (Left) 3nd fast',"message_RU": "Волны (левая) 3 быстрая" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - "s-444-2000-2123-0": [{"type": "text","sub_type": "message","message": 'Waves (Left) 2nd fast',"message_RU": "Волны (левая) 2 быстрая" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - "s-444-2000-2125-0": [{"type": "text","sub_type": "message","message": 'Front -> Right Scratch',"message_RU": "1Удар вперед -> правый черкаш" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,400,8,350,100,3000)}, - {"type": "func","func": Spawnitem1.bind(null,553,356,400,180,500,3000)}, - {"type": "func","func": Spawnitem1.bind(null,553,356,400,0,500,3000)} - ], - "s-444-2000-2126-0": [ - {"type": "func","func": Spawnitem1.bind(null,553,90,200,0,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,200,180,500,2000)}], - - "s-444-2000-2131-0": [{"type": "text","sub_type": "message","message": 'Front -> Left Scratch',"message_RU": "1Удар вперед -> левый черкаш" }, - {"type": "func","func": Spawnitem2.bind(null,445,358,340,8,660,100,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,358,340,180,500,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,358,340,0,500,4000)} - ], - "s-444-2000-2132-0": [ - {"type": "func","func": Spawnitem1.bind(null,553,270,200,0,500,2000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,200,180,500,2000)}], - "s-444-2000-2135-0": [ - //{"type": "text","sub_type": "message","message_RU": "完美格挡快" }, - {"type": "text","sub_type": "message","delay": 200,"message": 'Perfect Defense',"message_RU": "Идеальный блок" },//-------------------------------- - {"type": "text","sub_type": "message","delay": 1535,"message": "2" }, - // {"type": "text","sub_type": "message","delay": 1535,"message": "1" }, - // {"type": "text","sub_type": "message","delay": 2535,"message": "2" }, - {"type": "func","func": Spawnitem2.bind(null,445,356,220,12,210,100,4000)} - ], - "s-444-2000-2137-0": [ -//{"type": "func","func": skilld_event.bind(null, 137)}, -{"type": "text","sub_type": "message","message": 'Hammer back ',"message_RU": "Удар назад" }, - {"type": "func","func": Spawnitem2.bind(null,445,180,500,8,480,100,2000)}], - - "s-444-2000-2138-0": [{"type": "text","sub_type": "message","message": 'Knockup (Bait)',"message_RU": "Черкаш (полет)" }], - "s-444-2000-2139-0": [{"type": "text","sub_type": "message","message": 'Dodge!!',"message_RU": "Эвейд!!!" }], - "s-444-2000-2140-0": [{"type": "text","sub_type": "message","message": 'Waves (Right)',"message_RU": "Волны (левая)" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - "s-444-2000-2141-0": [{"type": "text","sub_type": "message","message": 'Waves (Right) 3nd fast',"message_RU": "Волны (правая) 3 быстрая" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - "s-444-2000-2142-0": [{"type": "text","sub_type": "message","message": 'Waves (Right) 2nd fast',"message_RU": "Волны (правая) 2 быстрая" }, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,90,50,180,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,0,500,6000)}, - {"type": "func","func": Spawnitem1.bind(null,553,270,50,180,500,6000)}, - {"type": "text","sub_type": "message","delay": 60000,"message": 'Waves soon...',"message_RU": "Скоро волны"} - ], - - "ab-444-2000-90442000": [{"type": "func","func": skilld_event.bind(null, 90442000)}], - "ab-444-2000-90442001": [{"type": "func","func": skilld_event.bind(null, 90442001)}], - "ab-444-2000-90442304": [{"type": "func","func": skilld_event.bind(null, 90442304)}], - "ab-444-2000-90444001": [{"type": "func","func": skilld_event.bind(null, 90444001)}], - - "s-444-2500-1201-0": [{"type": "func","func": print_th}], - "s-444-2500-1305-0": [{"type": "func","func": skilld_event.bind(null, 305)}, - {"type": "func","func": Spawnitem1.bind(null,912,0,0,0,3000,4000)}] -}; + dispatch.hook("S_ABNORMALITY_BEGIN", dispatch._mod.majorPatchVersion >= 107 ? 5 : 4, event => { + if (event.id === 90442502) { + if (dispatch._mod.game.me.is(event.target)) { + handlers.text({ sub_type: "notification", message: "Laser on you", message_RU: "Лазер на тебе" }); + } else { + const member = player.playersInParty.get(event.target); + if (member) { + handlers.text({ + sub_type: "message", + message: `Laser on ${member.name}`, + message_RU: `Лазер на ${member.name}` + }); + } + } + } + }); + + return { + // PHASE 1 + "nd-444-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + // Not enraged + "s-444-1000-1103-0": [ + { type: "text", sub_type: "message", message: "Front (Dodge)", message_RU: "Удар вперед (эвейд)" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 400, 8, 350, 100, 3000] } + ], + "s-444-1000-1108-0": [ + { type: "text", sub_type: "message", message: "Back Throw", message_RU: "Стан назад" }, + { type: "spawn", func: "circle", args: [false, 553, 180, 250, 12, 300, 100, 3000] } + ], + "s-444-1000-1111-0": [ + { type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 185, 500, 8, 490, 1500, 2000] } + ], + "s-444-1000-1113-0": [{ type: "text", sub_type: "message", message: "Throw (Bait)", message_RU: "Молот (байт)" }], + "s-444-1000-1114-0": [ + { type: "text", sub_type: "message", message: "Front Slam", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 260, 10, 320, 100, 3000] } + ], + "s-444-1000-1115-0": [{ type: "text", sub_type: "message", delay: 1100, message: "Dodge", message_RU: "Эвейд" }], // Knockup + "s-444-1000-1116-0": [ + { type: "text", sub_type: "message", message: "Donuts (In)", message_RU: "Бублики (к нему)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 12, 290, 0, 2000] } + ], + "s-444-1000-1116-1": [ + { type: "text", sub_type: "message", message: "Out > In", message_RU: "От него > К нему" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 290, 0, 4000] } + ], + "s-444-1000-1117-0": [{ type: "text", sub_type: "message", message: "Jump (Bait)", message_RU: "Прыжок (байт)" }], + "s-444-1000-1118-0": [{ type: "text", sub_type: "message", message: "Jump (Tank)", message_RU: "Прыжок (танк)" }], + "s-444-1000-1118-1": [{ type: "spawn", func: "circle", args: [false, 553, 0, 400, 12, 300, 100, 2000] }], + "s-444-1000-1121-0": [ + { type: "text", sub_type: "message", message: "Waves (Left)", message_RU: "Волны (левая)" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 37, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 143, 125, 0, 2533, false, ["safe", "safe"]] } + ], + "s-444-1000-1131-0": [ + { type: "text", sub_type: "message", message: "Front | Left Scratch", message_RU: "Удар вперед | Левый черкаш" }, + { type: "text", sub_type: "message", delay: 1200, message: "Dodge", message_RU: "Эвейд" }, + { type: "spawn", func: "circle", args: [false, 553, 358, 340, 6, 630, 100, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 115, 186, 800, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 90, 115, 6, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 270, 250, 6, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 270, 250, 186, 800, 0, 3500] } + ], + "s-444-1000-1137-0": [ + { type: "text", sub_type: "message", message: "Hammer Back", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 185, 500, 8, 490, 100, 2000] } + ], + "s-444-1000-1138-0": [{ type: "text", sub_type: "message", delay: 1100, message: "Dodge", message_RU: "Эвейд" }], // Knockup (Bait) + "s-444-1000-1139-0": [ + { type: "text", sub_type: "message", delay: 550, message: "Dodge!", message_RU: "Эвейд!" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 20, 160, 0, 2000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 12, 220, 0, 2000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 10, 300, 0, 2000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 8, 360, 0, 2000] } + ], + "s-444-1000-1140-0": [ + { type: "text", sub_type: "message", message: "Waves (Right)", message_RU: "Волны (правая)" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 323, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 217, 125, 0, 2533, false, ["safe", "safe"]] } + ], + // Enraged + "s-444-1000-2103-0": "s-444-1000-1103-0", + "s-444-1000-2108-0": "s-444-1000-1108-0", + "s-444-1000-2111-0": "s-444-1000-1111-0", + "s-444-1000-2113-0": "s-444-1000-1113-0", + "s-444-1000-2114-0": "s-444-1000-1114-0", + "s-444-1000-2115-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], // Knockup + "s-444-1000-2116-0": "s-444-1000-1116-0", + "s-444-1000-2116-1": "s-444-1000-1116-1", + "s-444-1000-2117-0": "s-444-1000-1117-0", + "s-444-1000-2118-0": "s-444-1000-1118-0", + "s-444-1000-2118-1": "s-444-1000-1118-1", + "s-444-1000-2121-0": "s-444-1000-1121-0", + "s-444-1000-2131-0": "s-444-1000-1131-0", + "s-444-1000-2137-0": "s-444-1000-1137-0", + "s-444-1000-2138-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], // Knockup (Bait) + "s-444-1000-2139-0": "s-444-1000-1139-0", + "s-444-1000-2140-0": "s-444-1000-1140-0", + + // PHASE 2 + "nd-444-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-444-2000": [ + { type: "spawn", func: "marker", args: [false, 0, -700, 100, 60000000, false, ["Throne", "Throne Direction"]] }, + { type: "spawn", func: "point", args: [513, 0, 800, 100, 60000000] }, + { type: "func", func: () => print_loading = true }, + { type: "func", func: () => print_lasers = true } + ], + // Not enraged + "s-444-2000-1101-0": [ + { type: "text", sub_type: "message", message: "4 Hit Combo", message_RU: "270 (сейф-зона)" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 195, 500, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 270, 500, 0, 3000] } + ], + "s-444-2000-1103-0": [ + { type: "text", sub_type: "message", message: "Front (Dodge)", message_RU: "Удар вперед (эвейд)" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 400, 8, 350, 100, 3000] } + ], + "s-444-2000-1107-0": [{ type: "text", sub_type: "message", message: "4 Hit (3)", message_RU: "4" }], + "s-444-2000-1108-0": [ + { type: "text", sub_type: "message", message: "Back Throw", message_RU: "Стан назад" }, + { type: "spawn", func: "circle", args: [false, 553, 180, 250, 12, 300, 100, 3000] } + ], + "s-444-2000-1111-0": [ + { type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 185, 500, 8, 490, 1500, 2000] } + ], + "s-444-2000-1112-0": [ + { type: "text", sub_type: "message", message: "Perfect Defense (Fast)", message_RU: "Идеальный блок (быстро)" }, + { type: "text", sub_type: "message", delay: 1200, message: "Block", message_RU: "Блок" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 220, 12, 210, 100, 3000] } + ], + "s-444-2000-1113-0": [{ type: "text", sub_type: "message", message: "Throw (Bait)", message_RU: "Молот (байт)" }], + "s-444-2000-1114-0": [ + { type: "text", sub_type: "message", message: "Front Slam", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 260, 10, 320, 100, 3000] } + ], + "s-444-2000-1115-0": [{ type: "text", sub_type: "message", delay: 1100, message: "Dodge", message_RU: "Эвейд" }], // Knockup + "s-444-2000-1116-0": [ + { type: "text", sub_type: "message", message: "Donuts (In)", message_RU: "Бублики (к нему)" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 12, 290, 100, 2000] } + ], + "s-444-2000-1116-1": [ + { type: "text", sub_type: "message", message: "Out > In", message_RU: "От него > К нему" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 290, 100, 4000] } + ], + "s-444-2000-1117-0": [{ type: "text", sub_type: "message", message: "Jump (Bait)", message_RU: "Прыжок (байт)" }], + "s-444-2000-1118-0": [{ type: "text", sub_type: "message", message: "Jump (Tank)", message_RU: "Прыжок (танк)" }], + "s-444-2000-1118-1": [{ type: "spawn", func: "circle", args: [false, 553, 0, 400, 12, 300, 100, 2000] }], + "s-444-2000-1119-0": [ + { type: "text", sub_type: "message", message: "Left Swipe", message_RU: "Слева" }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 270, 300, 100, 2000, true, null] } + ], + "s-444-2000-1120-0": [ + { type: "text", sub_type: "message", message: "Right Swipe", message_RU: "Справа" }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 90, 300, 100, 2000, true, null] } + ], + "s-444-2000-1121-0": [ + { type: "text", sub_type: "message", message: "Waves (Left)", message_RU: "Волны (левая)" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 37, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 143, 125, 0, 2533, false, ["safe", "safe"]] } + ], + "s-444-2000-1122-0": [ + { type: "text", sub_type: "message", message: "Waves (Left) 3nd fast", message_RU: "Волны (левая) 3-я быстрая" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 37, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 143, 125, 0, 2533, false, ["safe", "safe"]] } + ], + "s-444-2000-1123-0": [ + { type: "text", sub_type: "message", message: "Waves (Left) 2nd fast", message_RU: "Волны (левая) 2-я быстрая" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 37, 125, 0, 2500, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 143, 125, 0, 2500, false, ["safe", "safe"]] } + ], + "s-444-2000-1125-0": [ + { type: "text", sub_type: "message", message: "Front | Right Scratch", message_RU: "Удар вперед | Правый черкаш" }, + { type: "text", sub_type: "message", delay: 1750, message: "Dodge", message_RU: "Эвейд" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 400, 8, 350, 100, 2000] }, + { type: "spawn", func: "vector", args: [553, 60, 290, 175, 800, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 60, 290, -5, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 290, 95, -5, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 290, 95, 175, 800, 0, 3500] } + ], + "s-444-2000-1131-0": [ + { type: "text", sub_type: "message", message: "Front | Left Scratch", message_RU: "Удар вперед | Левый черкаш" }, + { type: "text", sub_type: "message", delay: 1200, message: "Dodge", message_RU: "Эвейд" }, + { type: "spawn", func: "circle", args: [false, 553, 358, 340, 6, 630, 100, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 115, 186, 800, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 90, 115, 6, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 270, 250, 6, 300, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 270, 250, 186, 800, 0, 3500] } + ], + "s-444-2000-1135-0": [ + { type: "text", sub_type: "message", message: "Perfect Defense", message_RU: "Идеальный блок" }, + { type: "text", sub_type: "message", delay: 800, message: "Block", message_RU: "Блок" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 220, 12, 210, 100, 3000] } + ], + "s-444-2000-1137-0": [ + { type: "text", sub_type: "message", message: "Hammer back", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [false, 553, 185, 500, 8, 490, 100, 2000] } + ], + "s-444-2000-1138-0": [{ type: "text", sub_type: "message", delay: 900, message: "Dodge", message_RU: "Эвейд" }], // Knockup (Bait) + "s-444-2000-1139-0": [{ type: "text", sub_type: "message", delay: 200, message: "Dodge!", message_RU: "Эвейд!" }], + "s-444-2000-1140-0": [ + { type: "text", sub_type: "message", message: "Waves (Right)", message_RU: "Волны (правая)" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 323, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 217, 125, 0, 2533, false, ["safe", "safe"]] } + ], + "s-444-2000-1141-0": [ + { type: "text", sub_type: "message", message: "Waves (Right) 3nd fast", message_RU: "Волны (правая) 3-я быстрая" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 323, 125, 0, 2533, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 217, 125, 0, 2533, false, ["safe", "safe"]] } + ], + "s-444-2000-1142-0": [ + { type: "text", sub_type: "message", message: "Waves (Right) 2nd fast", message_RU: "Волны (правая) 2-я быстрая" }, + { type: "func", func: waves_event }, + { type: "spawn", func: "marker", args: [false, 323, 125, 0, 2500, false, ["safe", "safe"]] }, + { type: "spawn", func: "marker", args: [false, 217, 125, 0, 2500, false, ["safe", "safe"]] } + ], + "s-444-2000-1307-0": [ + { type: "text", sub_type: "message", message: "!", message_RU: "!" }, + { type: "text", sub_type: "message", delay: 20000, message: "Last aerolite", message_RU: "Последний метеор" } + ], + "s-444-2000-1308-0": [{ type: "text", sub_type: "message", message: "Stun (1)", message_RU: "Стан (1)" }], + "s-444-2000-1309-0": [{ type: "text", sub_type: "message", message: "Stun (2)", message_RU: "Стан (2)" }], + "s-444-2000-1310-0": [{ type: "text", sub_type: "message", message: "Stun (3)", message_RU: "Стан (3)" }], + "s-444-2000-1311-0": [ + { type: "text", sub_type: "message", message: "Wrath (Kaia)", message_RU: "Облепиха (кайа)" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 6000] } + ], + "s-444-2000-1312-0": [ + { type: "text", sub_type: "message", message: "Wrath (Kaia)", message_RU: "Облепиха (кайа)" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 6000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 6000] } + ], + // Enraged + "s-444-2000-2101-0": "s-444-2000-1101-0", + "s-444-2000-2103-0": "s-444-2000-1103-0", + "s-444-2000-2107-0": "s-444-2000-1107-0", + "s-444-2000-2108-0": "s-444-2000-1108-0", + "s-444-2000-2111-0": "s-444-2000-1111-0", + "s-444-2000-2112-0": [ + { type: "text", sub_type: "message", delay: 1000, message: "Perfect Defense x2 (Slow)", message_RU: "Идеальный блок x2 (медленно)" }, + { type: "text", sub_type: "message", delay: 2400, message: "Block", message_RU: "Блок" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 220, 12, 210, 100, 4000] } + ], + "s-444-2000-2113-0": "s-444-2000-1113-0", + "s-444-2000-2114-0": "s-444-2000-1114-0", + "s-444-2000-2115-0": [{ type: "text", sub_type: "message", delay: 100, message: "Dodge", message_RU: "Эвейд" }], // Knockup + "s-444-2000-2116-0": "s-444-2000-1116-0", + "s-444-2000-2116-1": "s-444-2000-1116-1", + "s-444-2000-2117-0": "s-444-2000-1117-0", + "s-444-2000-2118-0": "s-444-2000-1118-0", + "s-444-2000-2118-1": "s-444-2000-1118-1", + "s-444-2000-2119-0": "s-444-2000-1119-0", + "s-444-2000-2120-0": "s-444-2000-1120-0", + "s-444-2000-2121-0": "s-444-2000-1121-0", + "s-444-2000-2122-0": "s-444-2000-1122-0", + "s-444-2000-2123-0": "s-444-2000-1123-0", + "s-444-2000-2125-0": "s-444-2000-1125-0", + "s-444-2000-2131-0": "s-444-2000-1131-0", + "s-444-2000-2135-0": [ + { type: "text", sub_type: "message", message: "Perfect Defense x2", message_RU: "Идеальный блок x2" }, + { type: "text", sub_type: "message", delay: 800, message: "Block", message_RU: "Блок" }, + { type: "spawn", func: "circle", args: [false, 553, 356, 220, 12, 210, 100, 4000] } + ], + "s-444-2000-2137-0": "s-444-2000-1137-0", + "s-444-2000-2138-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], // Knockup (Bait) + "s-444-2000-2139-0": "s-444-2000-1139-0", + "s-444-2000-2140-0": "s-444-2000-1140-0", + "s-444-2000-2141-0": "s-444-2000-1141-0", + "s-444-2000-2142-0": "s-444-2000-1142-0", + // + "s-444-2500-1201-0": [ + { type: "event", check_func: () => print_loading, args: [ + { type: "text", sub_type: "alert", message: "Loading lasers...", message_RU: "Зарядка лазеров..." }, + { type: "func", func: () => print_loading = false } + ] } + ], + "s-444-2500-1305-0": [ + { type: "event", check_func: () => print_lasers, args: [ + { type: "text", sub_type: "message", message: "Laser", message_RU: "Лазер" }, + { type: "func", func: () => print_lasers = false }, + { type: "func", func: () => print_lasers = true, delay: 4000 } + ] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 3000, 0, 4000] } + ], + "ab-444-2000-90442303": [{ type: "text", sub_type: "message", message: "Plague/Regress", message_RU: "Регресс" }], + "ab-444-2000-90442304": [ + { type: "text", sub_type: "notification", message: "Stun", message_RU: "Стан!", speech: false }, + { type: "text", sub_type: "message", message: "Stun", message_RU: "Стан!" } + ] + }; +}; \ No newline at end of file diff --git a/guides/9050.js b/guides/9050.js index c4f49aaf..29b97eec 100644 --- a/guides/9050.js +++ b/guides/9050.js @@ -1,328 +1,84 @@ -// -//made by michengs -let timer; -let counter = 0; -let notice_guide = true; -let player, entity, library, effect; -let shining = false; -let skill = 0; -let print = true; -let notice = true; -let notices = true; -let printend = false; - - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } -function SpawnThingobject( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "巴哈勒", - "message": "王坐方向" - }, {loc: shield_loc}); -} +// Rift's Edge (Hard) (10-Person) +// +// made by ITunk - -// 召喚光柱 ,告示牌提示( 角度 距离 延迟时间 时间) -function SpawnThing( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "SAFE SPOT", - "message": "SAFE" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} -// 召喚点 ,提示( 提示标志 角度 距离 延迟时间 时间) -function Spawnitem( item,degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; - //构建直线(提示标志 偏移角度 偏移距离 角度 最远距离 时间) -function Spawnitem1(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} + return { + // 1 BOSS + "nd-450-1001": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-450-1001-1102-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 375, 0, 3300] } + ], + "s-450-1001-1115-0": [ + { type: "text", sub_type: "message", message: "Floor", message_RU: "Атака в пол" }, + { type: "spawn", func: "vector", args: [553, 50, 75, 0, 700, 0, 1400] }, + { type: "spawn", func: "vector", args: [553, -50, 75, 0, 700, 0, 1400] } + ], + "s-450-1001-1116-1": [ + { type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }, + { type: "spawn", func: "vector", args: [553, 90, 125, 0, 1200, 0, 1600] }, + { type: "spawn", func: "vector", args: [553, 270, 125, 0, 1200, 0, 1600] } + ], + "s-450-1001-2102-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 375, 0, 2900] } + ], + "s-450-1001-2115-0": [ + { type: "text", sub_type: "message", message: "Floor", message_RU: "Атака в пол" }, + { type: "spawn", func: "vector", args: [553, 25, 75, 0, 700, 0, 1200] }, + { type: "spawn", func: "vector", args: [553, -25, 75, 0, 700, 0, 1200] } + ], + "s-450-1001-2116-1": [ + { type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }, + { type: "spawn", func: "vector", args: [553, 90, 125, 0, 1200, 0, 1600] }, + { type: "spawn", func: "vector", args: [553, 270, 125, 0, 1200, 0, 1600] } + ], - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -function start_1boss90(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "90%", -"message_TW": "召唤傀儡" -}); -} -print = false; -setTimeout(() => print = true, 10000); -} -function start_1boss70(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "70%", -"message_TW": "召唤傀儡" -}); -} -print = false; -setTimeout(() => print = true, 10000); -} -function start_1boss30(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "30%", -"message_TW": "召唤傀儡,1.5倍攻速" -}); -} -print = false; -setTimeout(() => print = true, 10000); -} -function start_1boss10(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "10%", -"message_TW": "召唤傀儡" -}); -} -print = false; -setTimeout(() => print = true, 10000); -} - -function skilld_event(skillid, handlers, event, ent, dispatch) { - - if ([1109, 2109].includes(skillid)) { - -if(!shining) { - -handlers['text']({ -"sub_type": "message", -"message": "move out", -"message_TW": `范围攻击准备就绪` -}); -shining = true; -} - -setTimeout(() => shining = false, 10000); - } -} -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - "h-450-1001-90": [{"type": "func","func": start_1boss90}], - "h-450-1001-70": [{"type": "func","func": start_1boss70}], - "h-450-1001-30": [{"type": "func","func": start_1boss30}], - "h-450-1001-10": [{"type": "func","func": start_1boss10}], - - - "s-450-1001-1101-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1101巨型虫植物前方触水攻击atk 01老马" }], - "s-450-1001-1102-0": [{"type": "text","sub_type": "message","message": 'spin',"message_TW": "旋转攻击" }], - "s-450-1001-1103-0": [{"type": "text","sub_type": "message","message": 'floor',"message_TW": "点名地板攻击" }], - "s-450-1001-1104-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1104巨型虫植物根传唤攻击longAtk 01老话" }], - "s-450-1001-1105-0": [{"type": "text","sub_type": "message","message": 'OUT',"message_TW": "远离" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,375,100,4000)}], - "s-450-1001-1106-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1106巨型虫植物右转攻击roundAtk 01老话" }], - "s-450-1001-1107-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1107巨型虫植物左转攻击roundAtk 02" }], - "s-450-1001-1108-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1108巨大食用物赞助动作1spSummon 01老话" }], - "s-450-1001-1109-0": [{"type": "func","func": skilld_event.bind(null, 1109)}], - "s-450-1001-1110-0": [{"type": "text","sub_type": "message","message": 'knock down',"message_TW": "击倒" }], - "s-450-1001-1301-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1301巨大虫植物大气wait" }], - "s-450-1001-2101-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2101巨大虫植物前方触水攻击atk 01愤怒" }], - "s-450-1001-2102-0": [{"type": "text","sub_type": "message","message": 'spin',"message_TW": "旋转攻击" }], - "s-450-1001-2103-0": [{"type": "text","sub_type": "message","message": 'floor',"message_TW": "点名地板攻击" }], - "s-450-1001-2104-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2104巨型虫植物根传唤攻击longAtk 01愤怒" }], - "s-450-1001-2105-0": [{"type": "text","sub_type": "message","message": 'OUT',"message_TW": "远离" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,375,100,4000)}], - "s-450-1001-2106-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2106巨大虫植物右转攻击roundAtk 01愤怒" }], - "s-450-1001-2107-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2107巨大食虫植物左转攻击roundAtk 02愤怒" }], - "s-450-1001-2108-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2108巨大食用物赞助动作1spSummon 01愤怒" }], - "s-450-1001-2109-0": [{"type": "func","func": skilld_event.bind(null, 2109)}], - "s-450-1001-2110-0": [{"type": "text","sub_type": "message","message": 'knock down',"message_TW": "击倒" }], - - -//-----------------------------------------------------------------------------------------------------2 - "s-450-45016-1308-0": [{"type": "text","sub_type": "message","message": 'Circle of poison',"message_TW": "圈" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,400,100,8000)}, - { - "type": "spawn", - "id": 513, - "sub_delay": 99999999, - "pos": { - x: -23072, - y: 176198, - z: -875 - } - } - ], - -"s-450-1002-1101-0": [{"type": "text","class_position":"tank","sub_type": "message","message": 'right',"message_TW": "右手" }], -"s-450-1002-1102-0": [{"type": "text","class_position":"tank","sub_type": "message","message": 'left',"message_TW": "左手" }], -"s-450-1002-1103-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "用巨型马蜂前脚进行蜂箱旋转攻击heavyAtkcomboatk 01" }], -"s-450-1002-1105-0": [{"type": "text","class_position":"tank","sub_type": "message","message": 'double handed',"message_TW": "双手" }], -"s-450-1002-1106-0": [{"type": "text","class_position":"tank","sub_type": "message","message": 'stun',"message_TW": "毒针晕" }], -"s-450-1002-1107-0": [{"type": "text","sub_type": "message","message": 'flying attack',"message_TW": "飞天攻击" }], -"s-450-1002-1109-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂左转攻击roundAtk 01老话" }], -"s-450-1002-1110-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂右转攻击roundAtk 02" }], -"s-450-1002-1151-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂活动activemove nove" }], -"s-450-1002-1201-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm" }], -"s-450-1002-1202-0": [{"type": "text","sub_type": "message","message": 'knock down',"message_TW": "俯冲击倒" }], -"s-450-1002-1203-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂grogy" }], -"s-450-1002-1204-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂逃跑runAway" }], -"s-450-1002-1301-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂待机动作" }], -"s-450-1002-1302-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的马蜂不可保障的50%" }], -"s-450-1002-1303-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式闹钟modeAlarm老马2" }], -"s-450-1002-1304-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马3" }], -"s-450-1002-1305-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老话4" }], -"s-450-1002-1306-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马5" }], -"s-450-1002-1307-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马6" }], -"s-450-1002-1308-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马7" }], -"s-450-1002-1309-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂模式闹钟modeAlarm老话8" }], -"s-450-1002-1310-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马9" }], -"s-450-1002-1311-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马10" }], -"s-450-1002-2101-0": [{"type": "text","class_position":"tank","sub_type": "message","message": 'right',"message_TW": "右手" }], -"s-450-1002-2102-0": [{"type": "text","class_position":"tank","sub_type": "message","message": 'left',"message_TW": "左手" }], -"s-450-1002-2103-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "用巨型马蜂前脚进行蜂箱旋转攻击heavyAtkcomboatk 01" }], -"s-450-1002-2105-0": [{"type": "text","class_position":"tank","sub_type": "message","message": 'double handed',"message_TW": "双手" }], -"s-450-1002-2106-0": [{"type": "text","class_position":"tank","sub_type": "message","message": 'stun',"message_TW": "毒针晕" }], -"s-450-1002-2107-0": [{"type": "text","sub_type": "message","message": 'flying attack',"message_TW": "飞天攻击" }], -"s-450-1002-2109-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂左转攻击roundAtk 01愤怒" }], -"s-450-1002-2110-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂右转攻击roundAtk 02愤怒" }], -"s-450-1002-2151-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂活动activeMove愤怒" }], -"s-450-1002-2201-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm愤怒" }], -"s-450-1002-2202-0": [{"type": "text","sub_type": "message","message": 'knock down',"message_TW": "俯冲击倒" }], -"s-450-1002-2203-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂grogy" }], -"s-450-1002-2204-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂逃跑runAway" }], -"s-450-1002-2301-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂待机动作" }], -"s-450-1002-2302-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的马蜂不可保障的50%" }], - "s-450-1002-1108-0": [{"type": "text","sub_type": "message","message": 'overpower',"message_TW": "壓人" }], - "s-450-1002-2108-0": [{"type": "text","sub_type": "message","message": 'overpower',"message_TW": "壓人" }], - "s-450-1002-2104-0": [{"type": "text","sub_type": "message","message": 'pull',"message_TW": "拉人" }, - {"type": "text","sub_type": "message","delay": 3000,"message": 'dodge',"message_TW": "閃避" }], - "s-450-1002-1104-0": [{"type": "text","sub_type": "message","message": 'pull',"message_TW": "拉人" }, - {"type": "text","sub_type": "message","delay": 3000,"message": 'dodge',"message_TW": "閃避" }], - - -"s-450-1003-1101-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟角攻击Atk 01老马" }], -"s-450-1003-1102-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟角角角拍Atk 02" }], -"s-450-1003-1103-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟子下角拍发射体老马" }], -"s-450-1003-1104-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟左面攻击roundAtk 01老马" }], -"s-450-1003-1105-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟右面攻击roundAtk 02" }], -"s-450-1003-1106-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "俯冲" }], -"s-450-1003-1107-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "喷毒" }], -"s-450-1003-1108-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟前方石堆longAtk 01老马" }], -"s-450-1003-1109-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟前方石堆发射体longAtk 01老马" }], -"s-450-1003-1110-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "掷巨金龟追踪型石块longAtk 02" }], -"s-450-1003-1111-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟抛出追踪型石块的发射体longAtk 02匹马" }], -"s-450-1003-1112-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟愤怒时奋进攻击modealarm" }], -"s-450-1003-1113-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟部下Monster spAtk01End 01" }], -"s-450-1003-1114-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟攻击气体spatk02End 02" }], -"s-450-1003-1151-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟是Active activetiveMove" }], -"s-450-1003-1201-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟长款MongMove nove" }], -"s-450-1003-1202-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟grogy" }], -"s-450-1003-1203-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟逃跑runAway" }], -"s-450-1003-1204-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟2招待期" }], -"s-450-1003-1205-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟扑通" }], -"s-450-1003-1301-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "水晶1" }], -"s-450-1003-1302-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "水晶2" }], -"s-450-1003-1303-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "水晶3" }], -"s-450-1003-1304-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟攻击前方斯顿" }], -"s-450-1003-1305-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟远程也攻击你" }], -"s-450-1003-1306-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "擊倒" }], -"s-450-1003-1307-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟3段落雷技能" }], -"s-450-1003-1308-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "诱发巨大金龟的反应" }], -"s-450-1003-1309-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "破盾" }], -"s-450-1003-1310-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟反应" }], -"s-450-1003-2101-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟角攻击Atk 01愤怒" }], -"s-450-1003-2102-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟角角角角拍Atk 02愤怒" }], -"s-450-1003-2103-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟角角角下拍发射体愤怒" }], -"s-450-1003-2104-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟左面攻击roundAtk 01愤怒" }], -"s-450-1003-2105-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟右侧攻击roundAtk 02愤怒" }], -"s-450-1003-2106-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "俯冲" }], -"s-450-1003-2107-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "喷毒" }], -"s-450-1003-2108-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟前方石堆longAtk 01愤怒" }], -"s-450-1003-2109-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟前方石堆发射体longAtk 01愤怒" }], -"s-450-1003-2110-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "将巨大的金龟抛出追踪型石头的longAtk 02愤怒" }], -"s-450-1003-2111-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟抛出追踪型石块的发射体longAtk 02愤怒" }], -"s-450-1003-2112-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟愤怒的攻击modealarm愤怒" }], -"s-450-1003-2113-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟部下Monster spAtk01End 01" }], -"s-450-1003-2114-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟攻击气体spatk02愤怒" }], -"s-450-1003-2151-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟是Active activetiveMove愤怒" }], -"s-450-1003-2201-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟长款MongMove愤怒" }], -"s-450-1003-2301-0": [{"type": "text","sub_type": "message","message": 'hit Crystal column',"message_TW": "打水晶柱" }, - {"type": "text","sub_type": "message","delay": 5000,"message_TW": "走位" } -], -"s-450-1003-2302-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "水晶2" }], -"s-450-1003-2303-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "水晶3" }], -"s-450-1003-2304-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟攻击前方斯顿" }], -"s-450-1003-2305-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟远程也攻击你" }], -"s-450-1003-2306-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "远离" }], -"s-450-1003-2307-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟3段落雷技能" }] - + // 2 BOSS + "nd-450-1002": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-450-1002-1113-0": [{ type: "text", sub_type: "message", message: "Discarding", message_RU: "Три откида" }], + "s-450-1002-2113-0": [{ type: "text", sub_type: "message", message: "Discarding", message_RU: "Три откида" }], + "s-450-1002-1114-0": [{ type: "text", sub_type: "message", message: "Discarding", message_RU: "Три откида" }], + "s-450-1002-2114-0": [{ type: "text", sub_type: "message", message: "Discarding", message_RU: "Три откида" }], + "s-450-1002-1115-0": [{ type: "text", sub_type: "message", message: "Flying Attack", message_RU: "Летающая атака" }], + "s-450-1002-2115-0": [{ type: "text", sub_type: "message", message: "Flying Attack", message_RU: "Летающая атака" }], + "s-450-1002-1116-0": [{ type: "text", sub_type: "message", message: "A swarm of bees", message_RU: "Рой пчел" }], + "s-450-1002-2116-0": [{ type: "text", sub_type: "message", message: "A swarm of bees", message_RU: "Рой пчел" }], + "s-450-1002-1117-0": [{ type: "text", sub_type: "message", message: "Rise (Kaia)", message_RU: "Взлет (Кайя)" }], + "s-450-1002-2117-0": [{ type: "text", sub_type: "message", message: "Rise (Kaia)", message_RU: "Взлет (Кайя)" }], + "s-450-1002-1205-0": [ + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/Регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ], + "s-450-1002-1210-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-450-1002-2210-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + // 3 BOSS + "nd-450-1003": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-450-1003-1107-2": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-450-1003-2107-2": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-450-1003-1115-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-450-1003-2115-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-450-1003-1313-0": [ + { type: "text", sub_type: "message", message: "Column", message_RU: "Колонна" }, + { type: "text", sub_type: "message", delay: 8000, message: "Dodge", message_RU: "Эвейд" } + ], + "s-450-1003-1315-0": [ + { type: "text", sub_type: "message", message: "Break Shield", message_RU: "Сломать щит", class_position: ["tank", "dps"] }, + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/Регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ] + }; }; \ No newline at end of file diff --git a/guides/9053.js b/guides/9053.js new file mode 100644 index 00000000..e3301a57 --- /dev/null +++ b/guides/9053.js @@ -0,0 +1,35 @@ +// Kezzel's Gorge +// +// Made by Multarix + +module.exports = (dispatch, handlers, guide, lang) => { + return { + "nd-453-999": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-453-999-103-0": [{ type: "text", sub_type: "message", message: "Smash (Left)", message_RU: "Удар (лево)" }], + "s-453-999-104-0": [{ type: "text", sub_type: "message", message: "Smash (Right)", message_RU: "Удар (право)" }], + "s-453-999-105-0": [ + { type: "text", sub_type: "message", message: "Rock Smash", message_RU: "Удар (танк)", class_position: "tank" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 210, 14, 190, 0, 3000] } + ], + "s-453-999-106-0": [ + { type: "text", sub_type: "message", message: "Blast", message_RU: "Выстрел" }, + { type: "text", sub_type: "message", message: "Dodge!", message_RU: "Эвейд!", delay: 2000 } + ], + "s-453-999-107-0": [{ type: "text", sub_type: "message", message: "Whip", message_RU: "Кнут" }], + "s-453-999-116-0": [{ type: "text", sub_type: "message", message: "Shield", message_RU: "Щит" }], + "s-453-999-119-0": [ + { type: "text", sub_type: "message", message: "Kaia's Shield", message_RU: "Кайа", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Thrall of Protection", message_RU: "Кайа", class_position: "mystic" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 10, 500, 0, 6000] } + ], + "s-453-999-120-0": [ + { type: "text", sub_type: "message", message: "AoE Waves", message_RU: "AoE волны" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 14, 200, 0, 7000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 10, 390, 0, 7000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 8, 590, 0, 7000] } + ] + }; +}; \ No newline at end of file diff --git a/guides/9054.js b/guides/9054.js index 772e68af..6e5c7c95 100644 --- a/guides/9054.js +++ b/guides/9054.js @@ -1,252 +1,154 @@ - -//made by michengs - -let player, entity, library, effect; - - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } - -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay,times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -function SpawnThing5( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "安全点", - "message": "安全点" - }, {loc: shield_loc}); -} -function SpawnThing6( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "水墙背面", - "message": "水墙背面" - }, {loc: shield_loc}); -} -function Spawnitem1(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -function SpawnThing( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "閃電球", - "message": "閃電球" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - -//1王 - - -"s-454-1000-1101-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left","message_TW": "左手"}], -"s-454-1000-1102-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right","message_TW": "右手"}], -"s-454-1000-1103-0": [{"type": "text","sub_type": "message","message": "Head Slam! (Slow)","message_TW": "3连闪避"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,200,15,275,0,4000)}], -"s-454-1000-1104-0": [{"type": "text","sub_type": "message","message": "Spin get out (Slow)","message_TW": "旋转6次"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,200,0,5000)}], -"s-454-1000-1105-0": [{"type": "text","sub_type": "message","message": "Get in","message_TW": "进"}], -"s-454-1000-1106-0": [{"type": "text","sub_type": "message","message": "Random hatred","message_TW": "点名"}], -"s-454-1000-1107-0": [{"type": "text","sub_type": "message","message_TW": "乌龟行动"}], -"s-454-1000-1108-0": [{"type": "text","sub_type": "message","message": "left side","message_TW": "左侧"}], -"s-454-1000-1109-0": [{"type": "text","sub_type": "message","message": "right side","message_TW": "右侧"}], -"s-454-1000-1201-0": [{"type": "text","sub_type": "message","message": "Body Slam!","message_TW": "身体撞击"}], -"s-454-1000-1202-0": [{"type": "text","sub_type": "message","message_TW": "乌龟防御动作"}], -"s-454-1000-1203-0": [{"type": "text","sub_type": "message","message_TW": "乌龟眩晕"}], -"s-454-1000-1204-0": [{"type": "text","sub_type": "message","message_TW": "乌龟模式提醒"}], -"s-454-1000-1205-0": [{"type": "text","sub_type": "message","message_TW": "乌龟逃走"}], -"s-454-1000-1206-0": [{"type": "text","sub_type": "message","message_TW": "乌龟大气动作Wait老马"}], -//-------------------------------------------------------------------------------------------------------------------- -"s-454-1000-2101-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left","message_TW": "左手"}], -"s-454-1000-2102-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right","message_TW": "右手"}], -"s-454-1000-2103-0": [{"type": "text","sub_type": "message","message": "Head Slam! (Fast)","message_TW": "3连闪避"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,200,15,275,0,4000)}], -"s-454-1000-2104-0": [{"type": "text","sub_type": "message","message": "Spin get out (Fast)","message_TW": "旋转6次"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,200,0,5000)}], -"s-454-1000-2105-0": [{"type": "text","sub_type": "message","message": "Get in","message_TW": "进"}], -"s-454-1000-2106-0": [{"type": "text","sub_type": "message","message": "Random hatred","message_TW": "点名"}], -"s-454-1000-2107-0": [{"type": "text","sub_type": "message","message_TW": "乌龟行动"}], -"s-454-1000-2108-0": [{"type": "text","sub_type": "message","message": "left side","message_TW": "左侧"}], -"s-454-1000-2109-0": [{"type": "text","sub_type": "message","message": "right side","message_TW": "右侧"}], -"s-454-1000-2201-0": [{"type": "text","sub_type": "message","message": "Body Slam!","message_TW": "身体撞击"}], -"s-454-1000-2202-0": [{"type": "text","sub_type": "message","message_TW": "乌龟防御动作"}], -"s-454-1000-2203-0": [{"type": "text","sub_type": "message","message_TW": "乌龟眩晕"}], -"s-454-1000-2204-0": [{"type": "text","sub_type": "message","message_TW": "乌龟模式提醒"}], -"s-454-1000-2205-0": [{"type": "text","sub_type": "message","message_TW": "乌龟逃走"}], -"s-454-1000-2206-0": [{"type": "text","sub_type": "message","message_TW": "乌龟大气动作Wait老马"}], -"s-454-1000-3101-0": [{"type": "text","sub_type": "message","message": "Pile damage","message_TW": "石堆破坏"}], -"s-454-1000-3102-0": [{"type": "text","sub_type": "message","message": "front","message_TW": "前喷"}], -"s-454-1000-3103-0": [{"type": "text","sub_type": "message","message": "Knock down","message_TW": "击倒boss"}], -"s-454-1000-3104-0": [{"type": "text","sub_type": "message","message": "SHIELD!","message_TW": "破盾不然团灭"}], - -//2王 - -"s-454-1001-1101-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front attack","message_TW": "前拱"}], -"s-454-1001-2101-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front attack","message_TW": "前拱"}], - -"s-454-1001-1102-0": [{"type": "text","sub_type": "message","message": "Back Flip (Fast)","message_TW": "后空翻"}], -"s-454-1001-1104-0": [{"type": "text","sub_type": "message","message": "Frontal Spin!","message_TW": "正面旋转!"}], -"s-454-1001-1105-0": [{"type": "text","sub_type": "message","message": "Tail","message_TW": "尾巴"}], -"s-454-1001-1108-0": [{"type": "text","sub_type": "message","message": "random poison","message_TW": "隨仇放毒"}], -"s-454-1001-1109-0": [{"type": "text","sub_type": "message","message": "Pull + poison","message_TW": "拉人放毒"}, - {"type": "text","sub_type": "message","delay": 1500,"message_TW": "闪"}], -"s-454-1001-1110-0": [{"type": "text","sub_type": "message","message": "Cyclone! (Slow)","message_TW": "死亡旋轉"}], -"s-454-1001-1113-0": [{"type": "text","sub_type": "message","message_TW": "深海粘液场"}], -"s-454-1001-1111-0": [{"type": "text","sub_type": "message","message": "Spin lunge attack","message_TW": "旋转突进攻击"}], -//-------------------------------------------------------------------------------------------------------------------- -"s-454-1001-2102-0": [{"type": "text","sub_type": "message","message": "Back Flip (Fast)","message_TW": "后空翻"}], -"s-454-1001-2104-0": [{"type": "text","sub_type": "message","message": "Frontal Spin!","message_TW": "正面旋转!"}], -"s-454-1001-2105-0": [{"type": "text","sub_type": "message","message": "Tail","message_TW": "尾巴"}], -"s-454-1001-2108-0": [{"type": "text","sub_type": "message","message": "random poison","message_TW": "隨仇放毒"}], -"s-454-1001-2109-0": [{"type": "text","sub_type": "message","message": "Pull + poison","message_TW": "拉人放毒"}, - {"type": "text","sub_type": "message","delay": 1500,"message_TW": "闪"}], -"s-454-1001-2110-0": [{"type": "text","sub_type": "message","message": "Cyclone! (Slow)","message_TW": "死亡旋轉"}], -"s-454-1001-2113-0": [{"type": "text","sub_type": "message","message_TW": "深海粘液场"}], -"s-454-1001-2111-0": [{"type": "text","sub_type": "message","message": "Spin lunge attack","message_TW": "旋转突进攻击"}], -"s-454-1001-3103-0": [{"type": "text","sub_type": "message","message": "Knock down","message_TW": "击倒检定"}], -"s-454-1001-3105-0": [{"type": "text","sub_type": "message","message": "poison","message_TW": "放毒"}], -"s-454-1001-3102-0": [{"type": "text","sub_type": "message","message": "big jump","message_TW": "大跳跃攻击"}], - -//3王 - -"s-454-1002-1102-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_TW": "前砸"}], -"s-454-1002-1103-0": [{"type": "text","sub_type": "message","message": "Random hatred","message_TW": "点名"}], -"s-454-1002-1104-0": [{"type": "text","sub_type": "message","message": "AOE","message_TW": "范围攻击"}], -"s-454-1002-1107-0": [{"type": "text","sub_type": "message","message": "Back Hit! (Fast)","message_TW": "后击!"}], -"s-454-1002-1108-0": [{"type": "text","sub_type": "message","message": "Back Hit","message_TW": "后击!"}], -"s-454-1002-1112-0": [{"type": "text","sub_type": "message","message": "Jump (Fast)","message_TW": "跳跃"}], -"s-454-1002-1106-0": [{"type": "text","sub_type": "message","message": "left","message_TW": "左侧攻击"}], -"s-454-1002-1110-0": [{"type": "text","sub_type": "message","message": " circle","message_TW": "齿轮扫圈"}], - -//---------------------------------------------------------------------------------------------------------------------------- -"s-454-1002-2102-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_TW": "前砸"}], -"s-454-1002-2103-0": [{"type": "text","sub_type": "message","message": "Random hatred","message_TW": "点名"}], -"s-454-1002-2104-0": [{"type": "text","sub_type": "message","message": "AOE","message_TW": "范围攻击"}], -"s-454-1002-2107-0": [{"type": "text","sub_type": "message","message": "Back Hit! (Fast)","message_TW": "后击!"}], -"s-454-1002-2108-0": [{"type": "text","sub_type": "message","message": "back","message_TW": "后击!"}], -"s-454-1002-2112-0": [{"type": "text","sub_type": "message","message": "Jump (Fast)","message_TW": "跳跃"}], -"s-454-1002-2106-0": [{"type": "text","sub_type": "message","message": "left","message_TW": "左侧攻击"}], -"s-454-1002-2110-0": [{"type": "text","sub_type": "message","message": " circle!","message_TW": "齿轮扫圈"}], - -//----------------------------------------------------------------------------------------------------------------------------- -"s-454-1002-3105-0": [{"type": "text","sub_type": "message","message": "Get in","message_TW": "进"}], -"s-454-1002-3117-0": [{"type": "text","sub_type": "message","message": "In Out In","message_TW": "进 出 进"}, - {"type": "func","func": Spawnitem2.bind(null,513,0,0,15,275,0,10000)}], -"s-454-1002-3110-0": [{"type": "text","sub_type": "message","message": "Pizza mech","message_TW": "披萨机制"}, - {"type": "func","func": SpawnThing5.bind(null,30, 201, 100, 2000)}, - {"type": "func","func": SpawnThing5.bind(null,90, 201, 100, 2000)}, - {"type": "func","func": SpawnThing5.bind(null,150, 201, 100, 2000)}, - {"type": "func","func": SpawnThing5.bind(null,210, 201, 100, 2000)}, - {"type": "func","func": SpawnThing5.bind(null,270, 201, 100, 2000)}, - {"type": "func","func": SpawnThing5.bind(null,330, 201, 100, 2000)}, - {"type": "func","func": SpawnThing5.bind(null,0, 201, 2000, 4000)}, - {"type": "func","func": SpawnThing5.bind(null,60, 201, 2000, 4000)}, - {"type": "func","func": SpawnThing5.bind(null,120, 201, 2000, 4000)}, - {"type": "func","func": SpawnThing5.bind(null,180, 201, 2000, 4000)}, - {"type": "func","func": SpawnThing5.bind(null,240, 201, 2000, 4000)}, - {"type": "func","func": SpawnThing5.bind(null,300, 201, 2000, 4000)}, - {"type": "func","func": SpawnThing5.bind(null,30, 201, 4000, 6000)}, - {"type": "func","func": SpawnThing5.bind(null,90, 201, 4000, 6000)}, - {"type": "func","func": SpawnThing5.bind(null,150, 201, 4000, 6000)}, - {"type": "func","func": SpawnThing5.bind(null,210, 201, 4000, 6000)}, - {"type": "func","func": SpawnThing5.bind(null,270, 201, 4000, 6000)}, - {"type": "func","func": SpawnThing5.bind(null,330, 201, 4000, 6000)}], -"s-454-1002-3106-0": [{"type": "text","sub_type": "message","message_TW": "全場切割檢定"}], -"s-454-1002-3113-0": [{"type": "text","sub_type": "message","message": "SHIELD!","message_TW": "破盾"}], -"s-454-1002-3115-0": [{"type": "text","sub_type": "message","message": "25%","message_TW": "爆走模式"}], -"s-454-1002-3119-0": [{"type": "text","sub_type": "message","message_TW": "水浪檢定"}], -"qb-454-1002-454001": [{"type": "text","sub_type": "alert","message": "electric ball","message_TW": "电球"}, - {"type": "text","sub_type": "alert","delay": 45000,"message_TW": "电球准备就绪"} -], - -//------------------------------------------特殊 -"qb-454-402-454008": [{"type": "text","sub_type": "message","message": "Water wave attack","message_TW": "水波攻擊"}, - {"type": "text","sub_type": "notification","delay": 70000,"message": "Water wave attack soon","message_TW": "水波攻擊准备"}, - {"type": "func","func": Spawnitem1.bind(null,912,0,0,0,3000,4000)}, - {"type": "func","func": Spawnitem1.bind(null,912,0,0,90,3000,4000)}, - {"type": "func","func": Spawnitem1.bind(null,912,0,0,180,3000,4000)}, - {"type": "func","func": Spawnitem1.bind(null,912,0,0,270,3000,4000)} - ], -"qb-454-1000-454012": [{"type": "text","sub_type": "message","message": "Fix the SLATE","message_TW": "修石板"}], -"dm-0-0-905420": [{"type": "text","sub_type": "message","message": "Water wall","message_TW": "水墙检定"}], -"s-454-403-1101-0": [{"type": "text","sub_type": "message","message_TW": "墻"}, - {"type": "func","func": SpawnThing6.bind(null,500, 180, 100, 9000)}], -"s-454-100-1101-0": [{"type": "text","sub_type": "notification","message": "electric ball","message_TW": "召喚电球"}, - {"type": "func","func": SpawnThing.bind(null,0, 0, 100, 3000)}], -"s-454-106-3101-0": [{"type": "text","sub_type": "message","message": "1","message_TW": "1"}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,2200,17000)}], -"s-454-107-3102-0": [{"type": "text","sub_type": "message","message": "2","message_TW": "2"}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,2200,17000)}], -"s-454-108-3103-0": [{"type": "text","sub_type": "message","message": "3","message_TW": "3"}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,2200,17000)}], -"s-454-109-3104-0": [{"type": "text","sub_type": "message","message": "4","message_TW": "4"}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,2200,17000)}] - - -}; - +// Bathysmal Rise (Hard) +// +// made by michengs / Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + return { + // 1 BOSS + "s-454-1000-1101-0": [{ type: "text", sub_type: "message", message_RU: "Лево", message: "Left" }], + "s-454-1000-1102-0": [{ type: "text", sub_type: "message", message_RU: "Право", message: "Right" }], + "s-454-1000-1103-0": [{ type: "text", sub_type: "message", message_RU: "Удар головой!", message: "Head Slam!" }, // + { type: "spawn", func: "circle", args: [false, 553, 0, 200, 12, 275, 0, 4000] } + ], + "s-454-1000-1104-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка (медленно)", message: "Spin get out (Slow)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 200, 0, 5000] } + ], + "s-454-1000-1105-0": [{ type: "text", sub_type: "message", message_RU: "К нему", message: "Get In" }], + "s-454-1000-1106-0": [{ type: "text", sub_type: "message", message_RU: "Круг", message: "Random Circle" }], // + "s-454-1000-1107-0": [{ type: "text", sub_type: "message", message_RU: "Действие", message: "Action Turtle" }], + "s-454-1000-1108-0": [{ type: "text", sub_type: "message", message_RU: "Левая сторона", message: "left side" }], + "s-454-1000-1109-0": [{ type: "text", sub_type: "message", message_RU: "Правая сторона", message: "right side" }], + "s-454-1000-1201-0": [{ type: "text", sub_type: "message", message_RU: "Бросок!", message: "Body Slam!" }], + "s-454-1000-1202-0": [{ type: "text", sub_type: "message", message_RU: "Призыв черепах", message: "Turtles Summon" }], + "s-454-1000-1203-0": [{ type: "text", sub_type: "message", message_RU: "Головокружение, прыжок", message: "Dizzy, Jump" }], + "s-454-1000-1204-0": [{ type: "text", sub_type: "message", message_RU: "Напоминание", message: "Turtle Mode Reminder" }], + "s-454-1000-1205-0": [{ type: "text", sub_type: "message", message_RU: "Побег черепахи", message: "Scape Turtle" }], + "s-454-1000-1206-0": [{ type: "text", sub_type: "message", message_RU: "Кислотная атмосфера", message: "Acid Atmosphere" }], + "s-454-1000-2101-0": "s-454-1000-1101-0", + "s-454-1000-2102-0": "s-454-1000-1102-0", + "s-454-1000-2103-0": "s-454-1000-1103-0", + "s-454-1000-2104-0": "s-454-1000-1104-0", + "s-454-1000-2105-0": "s-454-1000-1105-0", + "s-454-1000-2106-0": "s-454-1000-1106-0", + "s-454-1000-2107-0": "s-454-1000-1107-0", + "s-454-1000-2108-0": "s-454-1000-1108-0", + "s-454-1000-2109-0": "s-454-1000-1109-0", + "s-454-1000-2201-0": "s-454-1000-1201-0", + "s-454-1000-2202-0": "s-454-1000-1202-0", + "s-454-1000-2203-0": "s-454-1000-1203-0", + "s-454-1000-2204-0": "s-454-1000-1204-0", + "s-454-1000-2205-0": "s-454-1000-1205-0", + "s-454-1000-2206-0": "s-454-1000-1206-0", + "s-454-1000-3101-0": [{ type: "text", sub_type: "message", message_RU: "Камни разрушены", message: "Rocks Destroyed" }], + "s-454-1000-3102-0": [{ type: "text", sub_type: "message", message_RU: "Кислотная рвота", message: "Random Acid Puke" }], // + "s-454-1000-3103-0": [{ type: "text", sub_type: "message", message_RU: "Опрокинуть босса", message: "Knock Down Boss" }], + "s-454-1000-3104-0": [{ type: "text", sub_type: "message", message_RU: "СЛОМАТЬ ЩИТ!", message: "BREAKE SHIELD!" }], + + // 2 BOSS + //"s-454-1001-1101-0": [{ type: "text", sub_type: "message", message_RU: "Передняя", message: "Frontal Attack" }], + //"s-454-1001-1102-0": [{ type: "text", sub_type: "message", message_RU: "Сальто назад (быстро)", message: "Back Flip (Fast)" }], + "s-454-1001-1104-0": [{ type: "text", sub_type: "message", message_RU: "Передняя крутилка!", message: "Frontal Spin!" }], + "s-454-1001-1105-0": [{ type: "text", sub_type: "message", message_RU: "Хвост", message: "Tail" }], + "s-454-1001-1108-0": [{ type: "text", sub_type: "message", message_RU: "Яд", message: "Random Poison" }], + "s-454-1001-1109-0": [{ type: "text", sub_type: "message", message_RU: "Притяжка + Яд", message: "Pull + Poison" }, + { type: "text", sub_type: "message", "delay": 1500, message_RU: "Вспышка", message: "Flash" } + ], + "s-454-1001-1110-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка! (медленно)", message: "Spin! (Slow)" }], + "s-454-1001-1113-0": [{ type: "text", sub_type: "message", message_RU: "Лужа", message: "Slime Puddle" }], + "s-454-1001-1111-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка с выпадом", message: "Spin Lunge Attack" }], + //"s-454-1001-2101-0": "s-454-1001-1101-0", + //"s-454-1001-2102-0": "s-454-1001-1102-0", + "s-454-1001-2104-0": "s-454-1001-1104-0", + "s-454-1001-2105-0": "s-454-1001-1105-0", + "s-454-1001-2108-0": "s-454-1001-1108-0", + "s-454-1001-2110-0": "s-454-1001-1110-0", + "s-454-1001-2109-0": "s-454-1001-1109-0", + "s-454-1001-2113-0": "s-454-1001-1113-0", + "s-454-1001-2111-0": "s-454-1001-1111-0", + "s-454-1001-3103-0": [{ type: "text", sub_type: "message", message_RU: "Опрокинуть босса", message: "Knock Down Boss" }], + "s-454-1001-3105-0": [{ type: "text", sub_type: "message", message_RU: "Яд", message: "Poison" }], + "s-454-1001-3102-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок + Волна", message: "Big Jump + Wave" }], + "s-454-403-1101-0": [{ type: "text", sub_type: "message", message_RU: "Водяная стена (разбить)", message: "Water Wall (Breake)" }, + { type: "spawn", func: "marker", args: [false, 500, 180, 100, 9000] } + ], + + // 3BOSS + "s-454-1002-1102-0": [{ type: "text", sub_type: "message", message_RU: "Передняя атака", message: "Frontal Attack" }], + "s-454-1002-1103-0": [{ type: "text", sub_type: "message", message_RU: "Таргет", message: "Random Target" }], + "s-454-1002-1104-0": [{ type: "text", sub_type: "message", message_RU: "Бублик (внутрь)", message: "Donut (In)" }], + "s-454-1002-1107-0": [{ type: "text", sub_type: "message", message_RU: "Задний удар (быстро)", message: "Back Hit! (Fast)" }], + "s-454-1002-1108-0": [{ type: "text", sub_type: "message", message_RU: "Задний удар", message: "Back Hit" }], + "s-454-1002-1112-0": [{ type: "text", sub_type: "message", message_RU: "Сальто (быстро)", message: "Jump (Fast)" }], + "s-454-1002-1106-0": [{ type: "text", sub_type: "message", message_RU: "Левая атака", message: "Left Attack" }], + "s-454-1002-1110-0": [{ type: "text", sub_type: "message", message_RU: "Шестерни", message: "Gear Sweep" }], + "s-454-1002-2102-0": "s-454-1002-1102-0", + "s-454-1002-2103-0": "s-454-1002-1103-0", + "s-454-1002-2104-0": "s-454-1002-1104-0", + "s-454-1002-2107-0": "s-454-1002-1107-0", + "s-454-1002-2108-0": "s-454-1002-1108-0", + "s-454-1002-2112-0": "s-454-1002-1112-0", + "s-454-1002-2106-0": "s-454-1002-1106-0", + "s-454-1002-2110-0": "s-454-1002-1110-0", + "s-454-1002-3105-0": [{ type: "text", sub_type: "message", message_RU: "К нему", message: "Get In" }], + "s-454-1002-3117-0": [{ type: "text", sub_type: "message", message_RU: "К нему", message: "In" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 290, 0, 10000] }, + { type: "text", sub_type: "message", message_RU: "От него", message: "Out", delay: 3500 }, + { type: "text", sub_type: "message", message_RU: "К нему", message: "In", delay: 5500 } + ], + "s-454-1002-3110-0": [{ type: "text", sub_type: "message", message_RU: "Пицца", message: "Pizza" }, + { type: "spawn", func: "marker", args: [false, 30, 201, 100, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 90, 201, 100, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 150, 201, 100, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 210, 201, 100, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 270, 201, 100, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 330, 201, 100, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 0, 201, 2000, 4000, true, null] }, + { type: "spawn", func: "marker", args: [false, 60, 201, 2000, 4000, true, null] }, + { type: "spawn", func: "marker", args: [false, 120, 201, 2000, 4000, true, null] }, + { type: "spawn", func: "marker", args: [false, 180, 201, 2000, 4000, true, null] }, + { type: "spawn", func: "marker", args: [false, 240, 201, 2000, 4000, true, null] }, + { type: "spawn", func: "marker", args: [false, 300, 201, 2000, 4000, true, null] }, + { type: "spawn", func: "marker", args: [false, 30, 201, 4000, 6000, true, null] }, + { type: "spawn", func: "marker", args: [false, 90, 201, 4000, 6000, true, null] }, + { type: "spawn", func: "marker", args: [false, 150, 201, 4000, 6000, true, null] }, + { type: "spawn", func: "marker", args: [false, 210, 201, 4000, 6000, true, null] }, + { type: "spawn", func: "marker", args: [false, 270, 201, 4000, 6000, true, null] }, + { type: "spawn", func: "marker", args: [false, 330, 201, 4000, 6000, true, null] } + ], + "s-454-1002-3106-0": [{ type: "text", sub_type: "message", message_RU: "Резка завершена (выйти)", message: "Cut Completed (Get Out)" }], + "s-454-1002-3113-0": [{ type: "text", sub_type: "message", message_RU: "СЛОМАТЬ ЩИТ!", message: "BREAKE SHIELD!" }], + "s-454-1002-3115-0": [{ type: "text", sub_type: "message", message_RU: "Взрывной режим 25%", message: "25% Blast Mode" }], + "s-454-1002-3119-0": [{ type: "text", sub_type: "message", message_RU: "Волна (на центр)", message: "Wave Attack (Go Center)" }], + "qb-454-1002-454001": [{ type: "text", sub_type: "alert", message_RU: "Электрическая сфера", message: "Electric Ball" }, + { type: "text", sub_type: "alert", "delay": 45000, message_RU: "Электрическая сфера готова", message: "Electric Ball Ready" } + ], + // Special attacks + "qb-454-402-454008": [{ type: "text", sub_type: "message", message_RU: "Атака водной волной", message: "Water Wave Attack" }, + { type: "text", sub_type: "notification", "delay": 70000, message_RU: "Скоро атака водной волной", message: "Water Wave Attack Soon" }, + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 1300, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 1300, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 1300, 0, 4000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 270, 1300, 0, 4000] } + ], + "qb-454-1000-454012": [{ type: "text", sub_type: "message", message_RU: "Починить плиту", message: "Fix the SLATE" }], + "dm-0-0-905420": [{ type: "text", sub_type: "message", message_RU: "Проверка водяной стены", message: "Water Wall Check" }], + "s-454-100-1101-0": [ + // { type: "text", sub_type: "notification", message_RU: "Сфера (держить дальше)", message: "Ball (Stay Away)" }, + { type: "spawn", func: "marker", args: [false, 0, 0, 100, 3000] } + ], + "s-454-106-3101-0": [{ type: "text", sub_type: "message", message_RU: "1", message: "1" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 2200, 0, 15000] } + ], + "s-454-107-3102-0": [{ type: "text", sub_type: "message", message_RU: "2", message: "2" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 2200, 0, 15000] } + ], + "s-454-108-3103-0": [{ type: "text", sub_type: "message", message_RU: "3", message: "3" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 2200, 0, 15000] } + ], + "s-454-109-3104-0": [{ type: "text", sub_type: "message", message_RU: "4", message: "4" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 2200, 0, 15000] } + ] + }; +}; \ No newline at end of file diff --git a/guides/9056.js b/guides/9056.js new file mode 100644 index 00000000..189bc317 --- /dev/null +++ b/guides/9056.js @@ -0,0 +1,205 @@ +// Timescape (Hard) +// +// made by HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = ES; + + const third_boss_sun_w = -2; + const third_boss_daemon_w = 0; + const third_boss_goddess_w = 2; + let third_boss_wall_w = null; + let third_boss_small_w = null; + let third_boss_middle_w = null; + let third_boss_large_w = null; + let third_boss_small_game_id = null; + let third_boss_middle_game_id = null; + let third_boss_large_game_id = null; + + function w_to_deg(radians) { + if (radians == 0) return 0; + if (radians == 2) return 120; + if (radians == -2) return 240; + } + + function calc_step(a, b, reverse = false) { + if (a === b) return 0; + let diff = w_to_deg(b) - w_to_deg(a); + if (diff <= 0) diff += 360; + if (reverse) return diff > 120 ? 1 : 2; + return diff > 120 ? 2 : 1; + } + + function third_boss_wall_announce() { + const small = calc_step(third_boss_small_w, third_boss_wall_w); + const middle = calc_step(third_boss_middle_w, third_boss_wall_w, true); + const large = calc_step(third_boss_large_w, third_boss_wall_w); + if (small + middle + large === 0) { + handlers.text({ + sub_type: "notification", + message: "Set", + message_RU: "Установлено", + speech: false + }); + } else { + handlers.text({ + sub_type: "notification", + message: `Small: ${small}, Middle: ${middle}, Large: ${large}`, + message_RU: `Малый: ${small}, Средний: ${middle}, Большой: ${large}`, + speech: false + }); + } + } + + dispatch.hook("S_SPAWN_NPC", "*", e => { + if (e.templateId === 243) { + third_boss_wall_w = third_boss_sun_w; + handlers.event([ + { type: "text", sub_type: "alert", message: "Wall Change (Sun)", message_RU: "Смена печати (Солнце)" }, + { type: "func", func: third_boss_wall_announce, delay: 2000 } + ]); + } + if (e.templateId === 244) { + third_boss_wall_w = third_boss_daemon_w; + handlers.event([ + { type: "text", sub_type: "alert", message: "Wall Change (Demon)", message_RU: "Смена печати (Демон)" }, + { type: "func", func: third_boss_wall_announce, delay: 2000 } + ]); + } + if (e.templateId === 245) { + third_boss_wall_w = third_boss_goddess_w; + handlers.event([ + { type: "text", sub_type: "alert", message: "Wall Change (Goddess)", message_RU: "Смена печати (Богиня)" }, + { type: "func", func: third_boss_wall_announce, delay: 2000 } + ]); + } + if (e.templateId === 301) { + third_boss_small_game_id = e.gameId; + third_boss_small_w = parseInt(e.w); + } + if (e.templateId === 302) { + third_boss_middle_game_id = e.gameId; + third_boss_middle_w = parseInt(e.w); + } + if (e.templateId === 303) { + third_boss_large_game_id = e.gameId; + third_boss_large_w = parseInt(e.w); + } + }); + + dispatch.hook("S_CREATURE_ROTATE", "*", e => { + dispatch.setTimeout(() => { + if (e.gameId === third_boss_small_game_id) { + third_boss_small_w = parseInt(e.w); + third_boss_wall_announce(); + } + if (e.gameId === third_boss_middle_game_id) { + third_boss_middle_w = parseInt(e.w); + third_boss_wall_announce(); + } + if (e.gameId === third_boss_large_game_id) { + third_boss_large_w = parseInt(e.w); + third_boss_wall_announce(); + } + }, e.time + 100); + }); + + return { + // Boss 1 (phase 1) + "nd-456-401": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-456-401-104-0": [ + { type: "text", sub_type: "message", message: "Bomb", message_RU: "Бомба" }, + { type: "text", sub_type: "warning", message: "(1)", speech: false, delay: 550 }, + { type: "text", sub_type: "warning", message: "(2)", speech: false, delay: 1300 }, + { type: "text", sub_type: "warning", message: "(3)", speech: false, delay: 2050 }, + { type: "text", sub_type: "message", message: "(4) Dodge!", message_RU: "(4) Эвейд!", delay: 2800 } + ], + "s-456-1001-107-0": [{ type: "text", sub_type: "alert", message: "Shot", message_RU: "Выстрел" }], + + "s-456-403-106-0": [{ type: "text", sub_type: "alert", message: "Circle", message_RU: "Круг" }], + "s-456-1001-103-0": [{ type: "text", sub_type: "alert", message: "Tail", message_RU: "Хвост" }], + "s-456-1001-101-0": [{ type: "text", sub_type: "alert", message: "Hit", message_RU: "Удар" }], + "s-456-1001-112-0": [{ type: "text", sub_type: "message", message: "Rotate", message_RU: "Разворот" }], + "s-456-1001-113-0": "s-456-1001-112-0", + "s-456-1001-111-0": [{ type: "text", sub_type: "message", message: "Flight", message_RU: "Взлет" }], + "qb-456-1001-456020": [{ type: "text", sub_type: "message", message: "Give stun", message_RU: "Дать стан" }], + + // Boss 1 (phase 2) + "nd-456-413": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-456-413-104-0": [ + { type: "text", sub_type: "message", message: "Bomb", message_RU: "Бомба" }, + { type: "text", sub_type: "warning", message: "(1)", speech: false, delay: 550 }, + { type: "text", sub_type: "warning", message: "(2)", speech: false, delay: 1300 }, + { type: "text", sub_type: "warning", message: "(3)", speech: false, delay: 2050 }, + { type: "text", sub_type: "message", message: "(4) Dodge!", message_RU: "(4) Эвейд!", delay: 2800 } + ], + "s-456-414-104-0": "s-456-413-104-0", + "s-456-415-104-0": "s-456-413-104-0", + "s-456-416-104-0": "s-456-413-104-0", + "s-456-1000-107-0": [{ type: "text", sub_type: "alert", message: "Shot", message_RU: "Выстрел" }], + "ab-456-1000-905685": [ + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ], + + "s-456-1000-103-0": "s-456-1001-103-0", + "s-456-1000-101-0": "s-456-1001-101-0", + "s-456-1000-112-0": "s-456-1001-112-0", + "s-456-1000-113-0": "s-456-1001-112-0", + "s-456-1000-111-0": "s-456-1001-111-0", + "dm-456-1000-456001": "qb-456-1001-456020", + + // Boss 2 + "nd-456-1002": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-456-1002-102-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-456-1002-103-0": [{ type: "text", sub_type: "message", message: "Combo", message_RU: "Комба" }], + "s-456-1002-104-0": [{ type: "text", sub_type: "message", message: "Shot (target)", message_RU: "Выстрел (таргет)" }], + "s-456-1002-107-0": [{ type: "text", sub_type: "message", message: "Many Pokes", message_RU: "Серия ударов" }], + "s-456-1002-110-0": [{ type: "text", sub_type: "message", message: "Clap", message_RU: "Удар вперед" }], + "s-456-1002-111-0": [{ type: "text", sub_type: "message", message: "Front | Jump Back", message_RU: "Удар вперед | Прыжок назад" }], + "s-456-1002-212-0": [{ type: "text", sub_type: "message", message: "Jump Back", message_RU: "Прыжок назад" }], + "s-456-1002-314-0": [{ type: "text", sub_type: "alert", message: "Lay Back", message_RU: "Кувырок назад" }], + "s-456-1002-315-0": [{ type: "text", sub_type: "alert", message: "Lay Front", message_RU: "Кувырок вперед" }], + "s-456-1002-319-0": [{ type: "text", sub_type: "alert", message: "Spin", message_RU: "Крутилка" }], + "s-456-1002-3110-0": [{ type: "text", sub_type: "message", message: "Breath", message_RU: "Дыхание" }], + "s-456-1002-3113-0": [{ type: "text", sub_type: "message", message: "AOE (Give stun)", message_RU: "АОЕ (Дать стан)", delay: 4000 }], + + // Boss 3 + "nd-456-1003": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ab-456-1003-905607": [ + { type: "text", sub_type: "message", message: "Cleanse + Plague of Exhaustion", message_RU: "Клинс + регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Cleanse + Regression", message_RU: "Клинс + регресс", class_position: "mystic" } + ], + "s-456-1003-3101-0": [ + { type: "text", sub_type: "message", message: "Take a Circle", message_RU: "Взять бублик", check_func: () => third_boss_wall_w !== third_boss_middle_w }, + { type: "text", sub_type: "message", message: "Don't Take a Circle", message_RU: "Не брать бублик", check_func: () => third_boss_wall_w === third_boss_middle_w } + ], + "s-756-1003-103-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 340, 0, 5000] } + ], + "s-456-1003-104-0": [{ type: "text", sub_type: "message", message: "Clap", message_RU: "Удар вперед" }], + "s-456-1003-105-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Вперед" }], + "s-456-1003-105-1": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Назад" }], + "s-456-1003-107-0": [{ type: "text", sub_type: "message", message: "Swipe", message_RU: "Откид" }], + "s-456-1003-108-0": [{ type: "text", sub_type: "message", message: "Swipe", message_RU: "Откид" }], + "s-456-1003-109-0": [{ type: "text", sub_type: "message", message: "Breath (target)", message_RU: "Дыхание (таргет)" }], + "s-456-1003-111-0": [{ type: "text", sub_type: "message", message: "Leash (target)", message_RU: "Притяжка (таргет)" }], + "s-456-1003-3104-0": [{ type: "text", sub_type: "message", message: "Cage", message_RU: "Клетка" }], // 456016 + "s-456-1003-3108-0": [{ type: "text", sub_type: "message", message: "Waves", message_RU: "Волны" }], + "qb-456-1003-456015": [{ type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ" }], // 3103 + "qb-456-1003-456017": [{ type: "text", sub_type: "message", message: "Give Stun", message_RU: "Дать стан" }] // 3102 + }; +}; \ No newline at end of file diff --git a/guides/9057.js b/guides/9057.js new file mode 100644 index 00000000..ba10aba2 --- /dev/null +++ b/guides/9057.js @@ -0,0 +1,117 @@ +// Akeron's Inferno (Hard) +// +// made by Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + let mech_enable = true; + + return { + // 1 BOSS + "nd-457-1001": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-457-1001-1104-0": [{ type: "text", sub_type: "message", message_RU: "Правая рука (откид)", message: "Right Hand (Push)" }], + "s-457-1001-1117-0": [{ type: "text", sub_type: "message", message_RU: "Удар", message: "Kick (Smash)" }], + "s-457-1001-1118-0": [{ type: "text", sub_type: "message", message_RU: "Случайный прыжок", message: "Random Jump" }], + "s-457-1001-1116-0": [{ type: "text", sub_type: "message", message_RU: "Прыжки (танк)", message: "Jumps (Tank)" }], + "s-457-1001-1107-0": [{ type: "text", sub_type: "message", message_RU: "Передняя атака", message: "Front" }], + "s-457-1001-1206-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок назад", message: "Jump Back" }], + "s-457-1001-1109-0": [{ type: "text", sub_type: "message", message_RU: "Переднее АоЕ", message: "Front AoE" }], + "s-457-1001-1108-0": [{ type: "text", sub_type: "message", message_RU: "Случайный прыжок", message: "Random Jump" }], + "s-457-1001-2104-0": "s-457-1001-1104-0", + "s-457-1001-2117-0": "s-457-1001-1117-0", + "s-457-1001-2118-0": "s-457-1001-1118-0", + "s-457-1001-2116-0": "s-457-1001-1116-0", + "s-457-1001-2107-0": "s-457-1001-1107-0", + "s-457-1001-2206-0": "s-457-1001-1206-0", + "s-457-1001-2109-0": "s-457-1001-1109-0", + "s-457-1001-2108-0": "s-457-1001-1108-0", + + // 2 BOSS + "nd-457-1002": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-457-1002-1105-0": [{ type: "text", sub_type: "message", message_RU: "Огненное дыхание", message: "Fire Breath" }], + "s-457-1002-1108-0": [{ type: "text", sub_type: "message", message_RU: "Огненные бомбы (спереди)", message: "Fire Bombs" }], + "s-457-1002-1109-0": [{ type: "text", sub_type: "message", message_RU: "Плавание + Задняя", message: "Swim + Back Attack" }], + "s-457-1002-1206-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок + Случайная атака", message: "Jump + Random Target" }], + "s-457-1002-1204-0": [{ type: "text", sub_type: "message", message_RU: "Большое АоЕ", message: "Large AoE", delay: 3000 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 6, 630, 3000, 4000] } + ], + "s-457-1002-1107-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка", message: "Spin" }], + "s-457-1002-1106-1": [{ type: "text", sub_type: "message", message_RU: "АоЕ + Пламя", message: "AoE + Side Flames", delay: 3000 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 550, 3000, 4000] } + ], + "s-457-1002-1112-0": [{ type: "text", sub_type: "message", message_RU: "Огненные шары (таргет)", message: "Target Fireball" }], + "s-457-1002-2105-0": "s-457-1002-1105-0", + "s-457-1002-2108-0": "s-457-1002-1108-0", + "s-457-1002-2109-0": "s-457-1002-1109-0", + "s-457-1002-2206-0": "s-457-1002-1206-0", + "s-457-1002-2204-0": "s-457-1002-1204-0", + "s-457-1002-2107-0": "s-457-1002-1107-0", + "s-457-1002-2106-1": "s-457-1002-1106-1", + "s-457-1002-2112-0": "s-457-1002-1112-0", + + // 3 BOSS + "nd-457-1003": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-457-1003-1105-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ", message: "AoE" }], + "s-457-1003-1203-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка", message: "Spin Cut Attack" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 400, 100, 4000] } + ], + "s-457-1003-1110-0": [{ type: "text", sub_type: "message", message_RU: "Яд (круг)", message: "Poison (Circle)" }], + "s-457-1003-2105-0": "s-457-1003-1105-0", + "s-457-1003-2203-0": "s-457-1003-1203-0", + "s-457-1003-2110-0": "s-457-1003-1110-0", + + // 4 BOSS + "nd-457-1004": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-457-1004-99": [{ type: "func", func: () => mech_enable = true }], + "h-457-1004-20": [{ type: "func", func: () => mech_enable = false }], + "s-457-1004-1105-0": [{ type: "text", sub_type: "message", message_RU: "Передняя атака", message: "Frontal Hit" }], + "s-457-1004-1106-0": [ + { type: "text", sub_type: "message", message_RU: "Случайный выстрел", message: "Random Shot" }, + { type: "spawn", func: "vector", args: [912, 459, 120, 12, 1150, 0, 3000] }, + { type: "spawn", func: "vector", args: [912, 251, 100, -13, 1150, 0, 3000] }, + { type: "spawn", func: "vector", args: [912, 360, 0, 0, 1150, 0, 3000] }, + { type: "spawn", func: "vector", args: [912, 250, 70, -6, 1150, 0, 3000] }, + { type: "spawn", func: "vector", args: [912, 460, 70, 6, 1150, 0, 3000] } + ], + "s-457-1004-1107-0": [ + { type: "text", sub_type: "message", message_RU: "Случайный кнут", message: "Random Whip" }, + { type: "spawn", func: "vector", args: [912, 360, 50, 0, 900, 0, 2000] } + ], + "s-457-1004-1108-0": [{ type: "text", sub_type: "message", message_RU: "Линия земли", message: "Earth Line" }], + "s-457-1004-1111-0": [{ type: "text", sub_type: "message", message_RU: "Комбо ударов", message: "Stomp Combo" }], + "s-457-1004-3108-0": [{ type: "text", sub_type: "message", message_RU: "Эвейд", message: "Dodge" }], + "s-457-1004-3105-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ атака", message: "AoE Attack" }], + "s-457-1004-3106-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ бублик", message: "Donut AoE" }], + "s-457-1004-3103-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ удар", message: "AoE Stomp" }], + "s-457-1004-4201-0": [{ type: "text", sub_type: "message", message_RU: "Лава", message: "Lava" }, + { type: "text", sub_type: "message", message_RU: "Безопасные круги", message: "Safe Circles", delay: 1500 }, + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 12000, pos: { x: -83453, y: 100168, z: 3389 } }, + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 12000, pos: { x: -83453, y: 100168, z: 3389, w: -2.36 }, ownerName: "SAFE", message: "SAFE" }, + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 12000, pos: { x: -83463, y: 99177, z: 3389 } }, + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 12000, pos: { x: -83463, y: 99177, z: 3389, w: 2.38 }, ownerName: "SAFE", message: "SAFE" }, + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 12000, pos: { x: -84461, y: 99186, z: 3389 } }, + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 12000, pos: { x: -84461, y: 99186, z: 3389, w: 0.80 }, ownerName: "SAFE", message: "SAFE" }, + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 12000, pos: { x: -84452, y: 100173, z: 3389 } }, + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 12000, pos: { x: -84452, y: 100173, z: 3389, w: -0.79 }, ownerName: "SAFE", message: "SAFE" } + ], + "qb-457-405-457016": [{ type: "text", sub_type: "message", message_RU: "ЩИТ", message: "SHIELD" }], + "qb-457-1004-457003": [{ type: "text", sub_type: "notification", message_RU: "Убить миньонов", message: "Kill Minions", check_func: () => mech_enable }], + "s-457-1004-2105-0": "s-457-1004-1105-0", + "s-457-1004-2106-0": "s-457-1004-1106-0", + "s-457-1004-2107-0": "s-457-1004-1107-0", + "s-457-1004-2108-0": "s-457-1004-1108-0", + "s-457-1004-2111-0": "s-457-1004-1111-0" + }; +}; \ No newline at end of file diff --git a/guides/9059.js b/guides/9059.js deleted file mode 100644 index 06cb335d..00000000 --- a/guides/9059.js +++ /dev/null @@ -1,27 +0,0 @@ - -//made by michengs - -let player, entity, library, effect; - - - -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - -"s-459-1000-104-0": [{"type": "text","sub_type": "message","message": "Jump","message_TW": "跳"}], -"s-459-1000-106-0": [{"type": "text","sub_type": "message","message": "Spin","message_TW": "旋转攻击"}], - - -"s-459-2000-101-0": [{"type": "text","sub_type": "message","message": "Push","message_TW": "推"}], -"s-459-2000-104-0": [{"type": "text","sub_type": "message","message": "BIG AOE","message_TW": "全屏攻击"}], -"s-459-2000-107-0": [{"type": "text","sub_type": "message","message": "Dodge","message_TW": "闪避"}], - - -"s-459-3000-101-0": [{"type": "text","sub_type": "message","message": "Explo","message_TW": "爆炸"}], -"s-459-3000-102-0": [{"type": "text","sub_type": "message","message": "Pull","message_TW": "拉"}], -"s-459-3000-105-0": [{"type": "text","sub_type": "message","message": "Dodge","message_TW": "闪避"}], -"s-459-3000-110-0": [{"type": "text","sub_type": "message","message": "GET OUT","message_TW": "出"}] - -}; \ No newline at end of file diff --git a/guides/9066.js b/guides/9066.js index 532b5ba3..a4f21447 100644 --- a/guides/9066.js +++ b/guides/9066.js @@ -1,119 +1,102 @@ -// DW-Guide +// Demon's Wheel +// +// made by michengs / Calvary - let print = false; - let circlecount = 0; - - function skilld_event(skillid, handlers, event, ent, dispatch) { +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + let print = false; + let msg_num = null; - if ([1311, 1313, 1315, 1317].includes(skillid)) { - circlecount = 0; - handlers['text']({"sub_type": "message","message": 'OUT',"message_TW": "出"}); - } - if ([1312, 1313, 1316, 1318].includes(skillid)) { - circlecount = 0; - handlers['text']({"sub_type": "message","message": 'IN',"message_TW": "进"}); - } + const mech_messages = { + 0: { message: "Don't hit RED", message_RU: "Не бить КРАСНЫЙ" }, + 1: { message: "Don't hit WHITE",message_RU: "Не бить БЕЛЫЙ" }, + 2: { message: "Don't hit BLUE", message_RU: "Не бить СИНИЙ" }, + 3: { message: "Hit RED", message_RU: "Бить КРАСНЫЙ" }, + 4: { message: "Hit WHITE", message_RU: "Бить БЕЛЫЙ" }, + 5: { message: "Hit BLUE", message_RU: "Бить СИНИЙ" }, + }; - if ([1306, 1307, 1308, 1309, 1310].includes(skillid)) { - circlecount += (skillid - 1306) + 1; - handlers['text']({"sub_type": "notification","message": `${circlecount} - ${(circlecount & 1) ? "odd - red" : "even - blue"}`,"message_TW": `${circlecount} - ${(circlecount & 1) ? "基数 - 红" : "偶数 - 蓝"}`}); - } - - if ([1319, 1320, 1321, 1322, 1323].includes(skillid)) { - // circlecount += (skillid - 1306) + 1; - circlecount += (skillid - 1319) + 1; - handlers['text']({"sub_type": "notification","message": `${circlecount} - ${(circlecount & 1) ? "odd - red" : "even - blue"}`,"message_TW": `${circlecount} - ${(circlecount & 1) ? "基数 - 红" : "偶数 - 蓝"}`}); - } + function skilld_event(skillid) { + if ([1311, 1313, 1315, 1317].includes(skillid)) { + handlers.text({ sub_type: "message", message: "OUT", message_RU: "От него" }); + } + if ([1312, 1313, 1316, 1318].includes(skillid)) { + handlers.text({ sub_type: "message", message: "IN", message_RU: "К нему" }); + } + if ([21311, 21314].includes(skillid)) { + handlers.event([ + { type: "text", sub_type: "message", message: "IN | OUT (Kaia)", message_RU: "К нему | От него (Кайа)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 4000] } + ]); + } - if ([21311, 21314].includes(skillid)) { - handlers['text']({"sub_type": "message","message": 'IN then OUT',"message_TW": '进 then 出'}); - } - - if ([21312, 21313].includes(skillid)) { - handlers['text']({"sub_type": "message","message": 'OUT then IN',"message_TW": '出 then 进'}); - } - - if ([21303].includes(skillid)) { - if(print) { -handlers['text']({ -"sub_type": "notification", -"message": "Hit ALL", -"message_TW": "打所有" -}); -handlers['text']( -{ -"sub_type": "message", -"message": "Hit ALL", -"message_TW": "打所有" -}); -} else { - handlers['text']({"sub_type": "message","message_TW": '打投掷'}); -} - } -} -function start_boss30() { -print = true; -} -function start_boss99() { -print = false; -} -module.exports = { - // First boss - - "s-466-46601-1105-0": [{"type": "text","sub_type": "message","message": 'stun',"message_TW": "晕" }], - "s-466-46601-2105-0": [{"type": "text","sub_type": "message","message": 'stun',"message_TW": "晕" }], - "s-466-46601-1106-0": [{"type": "text","sub_type": "message","message": 'tail',"message_TW": "尾气后喷" }], - "s-466-46601-2106-0": [{"type": "text","sub_type": "message","message": 'tail',"message_TW": "尾气后喷" }], - "s-466-46601-1109-0": [{"type": "text","class_position":"tank","sub_type": "message","message": 'front attack',"message_TW": "前砸(坦)" }], - "s-466-46601-2109-0": [{"type": "text","class_position":"tank","sub_type": "message","message": 'front attack',"message_TW": "前砸(坦)" }], - "s-466-46601-1110-0": [{"type": "text","sub_type": "message","message_TW": "甩尾(中毒)" }], - "s-466-46601-2110-0": [{"type": "text","sub_type": "message","message_TW": "甩尾(中毒)" }], - "s-466-46601-1311-0": [{"type": "func","func": skilld_event.bind(null, 1311)}], - "s-466-46601-1313-0": [{"type": "func","func": skilld_event.bind(null, 1313)}], - "s-466-46601-1315-0": [{"type": "func","func": skilld_event.bind(null, 1315)}], - "s-466-46601-1317-0": [{"type": "func","func": skilld_event.bind(null, 1317)}], - "s-466-46601-1312-0": [{"type": "func","func": skilld_event.bind(null, 1312)}], - "s-466-46601-1314-0": [{"type": "func","func": skilld_event.bind(null, 1314)}], - "s-466-46601-1316-0": [{"type": "func","func": skilld_event.bind(null, 1316)}], - "s-466-46601-1318-0": [{"type": "func","func": skilld_event.bind(null, 1318)}], - "s-466-46601-1306-0": [{"type": "func","func": skilld_event.bind(null, 1306)}], - "s-466-46601-1307-0": [{"type": "func","func": skilld_event.bind(null, 1307)}], - "s-466-46601-1308-0": [{"type": "func","func": skilld_event.bind(null, 1308)}], - "s-466-46601-1309-0": [{"type": "func","func": skilld_event.bind(null, 1309)}], - "s-466-46601-1310-0": [{"type": "func","func": skilld_event.bind(null, 1310)}], - "s-466-46601-1319-0": [{"type": "func","func": skilld_event.bind(null, 1319)}], - "s-466-46601-1320-0": [{"type": "func","func": skilld_event.bind(null, 1320)}], - "s-466-46601-1321-0": [{"type": "func","func": skilld_event.bind(null, 1321)}], - "s-466-46601-1322-0": [{"type": "func","func": skilld_event.bind(null, 1322)}], - "s-466-46601-1323-0": [{"type": "func","func": skilld_event.bind(null, 1323)}], -//-------------------------------------------------- - "h-466-46602-99": [{"type": "func","func": start_boss99}], - "h-466-46602-30": [{"type": "func","func": start_boss30}], - - - "qb-466-46621-466050": [{"type": "text","sub_type": "notification","message": 'Don\'t hit RED',"message_TW": "打 蓝+白" }, - {"type": "text","sub_type": "message","message": 'Don\'t hit RED',"message_TW": "打 蓝+白" }], - "qb-466-46621-466051": [{"type": "text","sub_type": "notification","message": 'Don\'t hit WHITE',"message_TW": "打 红+蓝" }, - {"type": "text","sub_type": "message","message": 'Don\'t hit WHITE',"message_TW": "打 红+蓝" }], - "qb-466-46621-466052": [{"type": "text","sub_type": "notification","message": 'Don\'t hit BLUE',"message_TW": "打 红+白" }, - {"type": "text","sub_type": "message","message": 'Don\'t hit BLUE',"message_TW": "打 红+白" }],//------------ - "qb-466-46622-466054": [{"type": "text","sub_type": "notification","message": 'Hit RED',"message_TW": "打红(逆)" }, - {"type": "text","sub_type": "message","message": 'Hit RED',"message_TW": "打红(逆)" }], - "qb-466-46622-466055": [{"type": "text","sub_type": "notification","message": 'Hit WHITE',"message_TW": "打白(逆)" }, - {"type": "text","sub_type": "message","message": 'Hit WHITE',"message_TW": "打白(逆)" }], //-------------------- - "qb-466-46622-466056": [{"type": "text","sub_type": "notification","message": 'Hit BLUE',"message_TW": "打蓝(逆)" }, - {"type": "text","sub_type": "message","message": 'Hit BLUE',"message_TW": "打蓝(逆)" }], - "s-466-46602-1116-0": [{"type": "text","sub_type": "message","message": 'pull',"message_TW": "拉人(群体)" }], - "s-466-46602-2116-0": [{"type": "text","sub_type": "message","message": 'pull',"message_TW": "拉人(群体)" }], - "s-466-46602-1223-0": [{"type": "text","sub_type": "message","message": 'Double RED',"message_TW": "红圈" }], - "s-466-46602-1113-0": [{"type": "text","sub_type": "message","message": 'LASER!!!!!!',"message_TW": "激光" }], - "s-466-46602-2113-0": [{"type": "text","sub_type": "message","message": 'LASER!!!!!!',"message_TW": "激光" }], - "s-466-46602-1311-0": [{"type": "func","func": skilld_event.bind(null, 21311)}], // - "s-466-46602-1314-0": [{"type": "func","func": skilld_event.bind(null, 21314)}], // - "s-466-46602-1312-0": [{"type": "func","func": skilld_event.bind(null, 21312)}], // - "s-466-46602-1313-0": [{"type": "func","func": skilld_event.bind(null, 21313)}],// - "s-466-46602-1303-0": [{"type": "func","func": skilld_event.bind(null, 21303)}] + if ([21312, 21313].includes(skillid)) { + handlers.event([ + { type: "text", sub_type: "message", message: "OUT | IN (Kaia)", message_RU: "От него | К нему (Кайа)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 4000] } + ]); + } + + if ([21303].includes(skillid)) { + if (print) { + handlers.text({ sub_type: "message", message: "Hit ALL", message_RU: "Бить ВСЕ" }); + } else { + handlers.text({ sub_type: "message", message: mech_messages[msg_num].message, message_RU: mech_messages[msg_num].message_RU }); + } + } + } + + function secondboss_message(num) { + msg_num = num; + handlers.text({ sub_type: "notification", message: mech_messages[num].message, message_RU: mech_messages[num].message_RU }); + } + + return { + // First boss + "h-466-46602-99": [{ type: "func", func: () => print = false }], + "h-466-46602-30": [{ type: "func", func: () => print = true }], + // + "qb-466-46621-466050": [{ type: "func", func: secondboss_message, args: [0] }], + "qb-466-46621-466051": [{ type: "func", func: secondboss_message, args: [1] }], + "qb-466-46621-466052": [{ type: "func", func: secondboss_message, args: [2] }], + "qb-466-46622-466054": [{ type: "func", func: secondboss_message, args: [3] }], + "qb-466-46622-466055": [{ type: "func", func: secondboss_message, args: [4] }], + "qb-466-46622-466056": [{ type: "func", func: secondboss_message, args: [5] }], + // + "s-466-46601-1105-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "s-466-46601-1106-0": [{ type: "text", sub_type: "message", message: "Exhaust", message_RU: "Выхлоп" }], + "s-466-46601-1109-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Stun (tank)", message_RU: "Стан (танк)" }], + "s-466-46601-1110-0": [{ type: "text", sub_type: "message", message: "Tail", message_RU: "Хвост" }], + "s-466-46601-2105-0": "s-466-46601-1105-0", + "s-466-46601-2106-0": "s-466-46601-1106-0", + "s-466-46601-2109-0": "s-466-46601-1109-0", + "s-466-46601-2110-0": "s-466-46601-1110-0", + "s-466-46601-1311-0": [{ type: "func", func: skilld_event.bind(null, 1311) }], + "s-466-46601-1313-0": [{ type: "func", func: skilld_event.bind(null, 1313) }], + "s-466-46601-1315-0": [{ type: "func", func: skilld_event.bind(null, 1315) }], + "s-466-46601-1317-0": [{ type: "func", func: skilld_event.bind(null, 1317) }], + "s-466-46601-1312-0": [{ type: "func", func: skilld_event.bind(null, 1312) }], + "s-466-46601-1314-0": [{ type: "func", func: skilld_event.bind(null, 1314) }], + "s-466-46601-1316-0": [{ type: "func", func: skilld_event.bind(null, 1316) }], + "s-466-46601-1318-0": [{ type: "func", func: skilld_event.bind(null, 1318) }], + // Second boss + "s-466-46602-1116-0": [ + { type: "text", sub_type: "message", message: "Dodge. Pull", message_RU: "Эвейд. Притяжка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 220, 0, 6000] } + ], + "s-466-46602-1223-0": [{ type: "text", sub_type: "message", message: "Double RED", message_RU: "Двойной КРАСНЫЙ" }], + "s-466-46602-1113-0": [{ type: "text", sub_type: "message", message: "LASER!!!", message_RU: "ЛАЗЕР!!!" }], + "s-466-46602-1311-0": [{ type: "func", func: skilld_event.bind(null, 21311) }], + "s-466-46602-1314-0": [{ type: "func", func: skilld_event.bind(null, 21314) }], + "s-466-46602-1312-0": [{ type: "func", func: skilld_event.bind(null, 21312) }], + "s-466-46602-1313-0": [{ type: "func", func: skilld_event.bind(null, 21313) }], + "s-466-46602-1303-0": [{ type: "func", func: skilld_event.bind(null, 21303) }], + "s-466-46602-1105-0": [{ type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 200, 0, 6000]}], + "s-466-46602-2105-0": "s-466-46602-1105-0", + "s-466-46602-2116-0": "s-466-46602-1116-0", + "s-466-46602-2113-0": "s-466-46602-1113-0" + }; }; \ No newline at end of file diff --git a/guides/9067.js b/guides/9067.js index b104305a..13bb2f92 100644 --- a/guides/9067.js +++ b/guides/9067.js @@ -1,64 +1,51 @@ - -//made by michengs - -let player, entity, library, effect; - - - -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - - - - - - - "s-467-46703-213-0": [{"type": "text","sub_type": "message","message": 'back attack',"message_TW": "后方攻击" }], //晕 - - "s-467-46704-205-0": [{"type": "text","sub_type": "message","delay":2500,"message": 'Pushback - Iframe',"message_TW": "吹飛" }], //延迟击退 3000 - //"s-467-46704-206-0": [{"type": "text","sub_type": "message","message": 'Throw',"message_TW": "206" }], -// "s-467-46704-207-0": [{"type": "text","sub_type": "message","message": 'Throw',"message_TW": "207" }], - - - - - - - "s-467-46704-208-0": [{"type": "text","sub_type": "message","message": 'laser',"message_TW": "镭射" }, - {"type": "text","sub_type": "message","delay": 13000,"message": 'Pushback - Iframe',"message_TW": "击退" }], //激光 14 - "s-467-46704-209-0": [{"type": "text","sub_type": "message","message": 'tank',"message_TW": "确认坦克" }], - - "s-467-46704-210-0": [{"type": "text","sub_type": "message","message": 'laser',"message_TW": "镭射" }, - {"type": "text","sub_type": "message","delay": 21000,"message": 'Pushback - Iframe',"message_TW": "击退" }], //激光逆顺22 - - "s-467-46704-211-0": [{"type": "text","sub_type": "message","message": 'Throw',"message_TW": "内>外扩散" }, - {"type": "text","sub_type": "message","delay": 3000,"message": 'Throw',"message_TW": "闪"}], //内外扩散 2000 - - "s-467-46704-212-0": [{"type": "text","sub_type": "message","message": 'Out to in Wave',"message_TW": "外>内扩散" }, - {"type": "text","sub_type": "message","delay": 3000,"message": 'Throw',"message_TW": "闪"}], //外内扩散 - - "s-467-46704-213-0": [{"type": "text","sub_type": "message","message": 'Circle - Iframe',"message_TW": "红圈" }, - {"type": "text","sub_type": "message","delay": 1000,"message": 'Throw',"message_TW": "闪"}, - {"type": "text","sub_type": "message","delay": 4000,"message": 'Throw',"message_TW": "顺"}], //红圈顺 - - "s-467-46704-214-0": [{"type": "text","sub_type": "message","message": 'Circle - Iframe',"message_TW": "红圈" }, - {"type": "text","sub_type": "message","delay": 1000,"message": 'Throw',"message_TW": "闪"}, - {"type": "text","sub_type": "message","delay": 4000,"message": 'Throw',"message_TW": "逆"}], //红圈逆 - - "s-467-46704-215-0": [{"type": "text","sub_type": "message","message": 'Circle - Iframe',"message_TW": "红圈" }, - {"type": "text","sub_type": "message","delay": 1000,"message": 'Throw',"message_TW": "闪"}], //红圈 逆+顺+逆 - - "s-467-46704-216-0": [{"type": "text","sub_type": "message","message": 'Circle - Iframe',"message_TW": "红圈" }, - {"type": "text","sub_type": "message","delay": 1000,"message": 'Throw',"message_TW": "闪"}], //红圈 顺+逆+顺 - - "s-467-46704-217-0": [{"type": "text","sub_type": "message","message": 'Throw',"message_TW": "红圈" }, - {"type": "text","sub_type": "message","delay": 1000,"message": 'Throw',"message_TW": "闪"}], //红圈 顺+ - - "s-467-46704-219-0": [{"type": "text","sub_type": "message","message": 'Throw',"message_TW": "内>外+外>内扩散" }, - {"type": "text","sub_type": "message","delay": 3000,"message": 'Throw',"message_TW": "闪"}] //内外圈 外内圈 2000 - - +// Demokron Factory (Hard) +// +// made by michengs + +module.exports = (dispatch, handlers, guide, lang) => { + return { + "s-467-46703-213-0": [{ type: "text", sub_type: "message", message: "Back attack", message_RU: "Задняя" }], + "s-467-46704-205-0": [{ type: "text", sub_type: "message", delay: 2500, message: "Pushback", message_RU: "Откид" }], + "s-467-46704-208-0": [ + { type: "text", sub_type: "message", message: "Laser", message_RU: "Лазер" }, + { type: "text", sub_type: "message", delay: 13000, message: "Pushback", message_RU: "Откид" } + ], + "s-467-46704-209-0": [{ type: "text", sub_type: "message", message: "Attack to tank", message_RU: "Удар в танка" }], + "s-467-46704-210-0": [ + { type: "text", sub_type: "message", message: "Laser", message_RU: "Лазер" }, + { type: "text", sub_type: "message", delay: 21000, message: "Pushback", message_RU: "Откид" } + ], + "s-467-46704-211-0": [ + { type: "text", sub_type: "message", message: "Outward Wave", message_RU: "Волна от босса" }, + { type: "text", sub_type: "message", delay: 3000, message: "Dodge", message_RU: "Эвейд!" } + ], + "s-467-46704-212-0": [ + { type: "text", sub_type: "message", message: "Inward Wave", message_RU: "Волна к боссу" }, + { type: "text", sub_type: "message", delay: 3000, message: "Dodge", message_RU: "Эвейд!" } + ], + "s-467-46704-213-0": [ + { type: "text", sub_type: "message", message: "Circles", message_RU: "Круги!" }, + { type: "text", sub_type: "message", delay: 1000, message: "Dodge", message_RU: "Эвейд!" } + ], + "s-467-46704-214-0": [ + { type: "text", sub_type: "message", message: "Circles", message_RU: "Круги!!" }, + { type: "text", sub_type: "message", delay: 1000, message: "Dodge", message_RU: "Эвейд!" } + ], + "s-467-46704-215-0": [ + { type: "text", sub_type: "message", message: "Circles", message_RU: "Круги!" }, + { type: "text", sub_type: "message", delay: 1000, message: "Dodge", message_RU: "Эвейд!" } + ], + "s-467-46704-216-0": [ + { type: "text", sub_type: "message", message: "Circles", message_RU: "Круги!" }, + { type: "text", sub_type: "message", delay: 1000, message: "Dodge", message_RU: "Эвейд!" } + ], + "s-467-46704-217-0": [ + { type: "text", sub_type: "message", message: "Circles", message_RU: "Круги!" }, + { type: "text", sub_type: "message", delay: 1000, message: "Dodge", message_RU: "Эвейд!" } + ], + "s-467-46704-219-0": [ + { type: "text", sub_type: "message", message: "Two waves", message_RU: "Две волны" }, + { type: "text", sub_type: "message", delay: 3000, message: "Dodge", message_RU: "Эвейд!" } + ] + }; }; \ No newline at end of file diff --git a/guides/9068.js b/guides/9068.js new file mode 100644 index 00000000..bf4f3b86 --- /dev/null +++ b/guides/9068.js @@ -0,0 +1,253 @@ +// Shadow Sanguinary (Hard) +// +// made by HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + + let thirdboss_stacks_count = 0; + let thirdboss_stacks_timer = null; + let thirdboss_print_combo = true; + let thirdboss_print_bait = true; + let thirdboss_combo_count = 0; + let thirdboss_combo_last_128 = null; + let thirdboss_combo_last_129 = null; + + function secondboss_floor_event(one, two) { + if (one && two) { + handlers.event([ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "marker", args: [false, one * 45 - 22, 500, 0, 5000, true, null] }, + { type: "spawn", func: "vector", args: [553, 0, 0, one * 45 - 45, 750, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, one * 45, 750, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 330, 0, 7000] }, + { type: "spawn", func: "marker", args: [false, two * 45 - 22, 300, 8000, 5000, true, null] }, + { type: "spawn", func: "vector", args: [553, 0, 0, two * 45 - 45, 750, 8000, 5000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, two * 45, 750, 8000, 5000] } + ]); + } + } + + function thirdboss_stacks_event(count) { + thirdboss_stacks_count = count; + dispatch.clearTimeout(thirdboss_stacks_timer); + + if (count === 0) { + handlers.event([ + { type: "text", sub_type: "notification", message: "Stacks removed", message_RU: "Стаки сняты", speech: false }, + { type: "text", sub_type: "message", message: "Stacks removed", message_RU: "Стаки сняты" } + ]); + } else { + thirdboss_stacks_timer = dispatch.setTimeout(() => { + handlers.event([ + { type: "text", sub_type: "notification", message: `${count} stacks`, message_RU: `Стаков: ${count}`, speech: false }, + { type: "text", sub_type: "message", message: `${count} stacks`, message_RU: `Стаков: ${count}` } + ]); + }, 500); + } + } + + return { + // 1 BOSS + "nd-468-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-468-1000-102-0": [{ type: "text", sub_type: "message", message: "Turn Attack", message_RU: "Разворот" }], + "s-468-1000-106-0": [{ type: "text", sub_type: "message", message: "Three Combo", message_RU: "Тройная комба" }], + "s-468-1000-107-0": [{ type: "text", sub_type: "message", message: "Front Combo", message_RU: "Передняя комба" }], + "s-468-1000-301-0": [{ type: "text", sub_type: "message", message: "Wave Front", message_RU: "Волна вперед" }], + "s-468-1000-304-0": [{ type: "text", sub_type: "message", message: "Strike (Target)", message_RU: "Выстрел (таргет)" }], + "s-468-1000-304-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 700 }], + "s-468-1000-305-0": [{ type: "text", sub_type: "message", message: "8 explosions", message_RU: "Серия взрывов" }], + "s-468-1000-306-0": [{ type: "text", sub_type: "message", message: "Stones", message_RU: "Пилоны" }], // 306 -> 307 + + // 2 BOSS + "nd-468-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-468-2000-101-0": [{ type: "text", sub_type: "message", message: "Fireball", message_RU: "Огненный шар" }], + "s-468-2000-102-0": [{ type: "text", sub_type: "message", message: "Drain", message_RU: "Разряд" }], + "s-468-2000-103-0": [{ type: "text", sub_type: "message", message: "Explosion", message_RU: "Взрыв" }], + "s-468-2000-104-0": [{ type: "text", sub_type: "message", message: "Dark Frame", message_RU: "Удар вперед" }], + "s-468-2000-110-0": [{ type: "text", sub_type: "message", message: "Front Attack", message_RU: "Передняя" }], + "s-468-2000-111-0": [{ type: "text", sub_type: "message", message: "360", message_RU: "Крутилка" }], // 114 -> 111 + "s-468-2000-112-0": [{ type: "text", sub_type: "message", message: "Back Attack", message_RU: "Задняя" }], + "s-468-2000-117-0": [{ type: "text", sub_type: "message", message: "Laser (Target)", message_RU: "Лазер (таргет)" }], + "s-468-2000-117-2": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 600 }], + "s-468-2000-118-0": [{ type: "text", sub_type: "message", message: "Laser", message_RU: "Лазер" }], + "s-468-2000-307-0": [{ type: "text", sub_type: "message", message: "Donut", message_RU: "Бублик" }], + "s-468-2000-501-0": [{ type: "text", sub_type: "message", message: "Charging", message_RU: "Зарядка" }], + "s-468-2000-301-0": [{ type: "func", func: secondboss_floor_event, args: [4, 7] }], + "s-468-2000-302-0": [{ type: "func", func: secondboss_floor_event, args: [2, 6] }], + "s-468-2000-303-0": [{ type: "func", func: secondboss_floor_event, args: [7, 3] }], + "s-468-2000-304-0": [{ type: "func", func: secondboss_floor_event, args: [0, 0] }], // 1-4-2-3-5 + "s-468-2000-305-0": [{ type: "func", func: secondboss_floor_event, args: [0, 0] }], // 4-2-5-1-3 + "s-468-2000-306-0": [{ type: "func", func: secondboss_floor_event, args: [0, 0] }], // 5-1-4-3-2 + "s-468-2000-310-0": [{ type: "func", func: secondboss_floor_event, args: [4, 7] }], + "s-468-2000-311-0": [{ type: "func", func: secondboss_floor_event, args: [2, 6] }], + "s-468-2000-312-0": [{ type: "func", func: secondboss_floor_event, args: [7, 3] }], + + // 3 BOSS + "nd-468-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-468-3000-60": [{ type: "text", sub_type: "message", message: "60%" }], + "h-468-3000-40": [{ type: "text", sub_type: "message", message: "40%" }], + // + "s-468-3000-101-0": [ + { type: "event", check_func: () => thirdboss_print_combo, args: [ + { type: "text", sub_type: "message", message: "Combo soon", message_RU: "Скоро комба" }, + { type: "func", func: () => thirdboss_print_combo = false }, + { type: "func", func: () => thirdboss_print_combo = true, delay: 12000 } + ] } + ], + "s-468-3000-102-0": "s-468-3000-101-0", + // + "s-468-3000-128-0": [ // 128 -> 106/130 + { type: "text", sub_type: "message", message: "Back/Left", message_RU: "Задний/Откид влево", check_func: () => thirdboss_combo_last_128 === null }, + { type: "text", sub_type: "message", message: "Back", message_RU: "Задний", check_func: () => thirdboss_combo_last_128 === 130 }, + { type: "text", sub_type: "message", message: "Left", message_RU: "Откид влево", check_func: () => thirdboss_combo_last_128 === 106 } + ], + "s-468-3000-129-0": [ // 129 -> 108/131 + { type: "text", sub_type: "message", message: "Front/Right", message_RU: "Передний/Откид вправо", check_func: () => thirdboss_combo_last_129 === null }, + { type: "text", sub_type: "message", message: "Front", message_RU: "Передний", check_func: () => thirdboss_combo_last_129 === 131 }, + { type: "text", sub_type: "message", message: "Right", message_RU: "Откид вправо", check_func: () => thirdboss_combo_last_129 === 108 } + ], + "s-468-3000-130-0": [ // 128 -> 130 + { type: "text", sub_type: "message", message: "Left", message_RU: "Откид влево", check_func: () => thirdboss_combo_last_128 === null }, + { type: "func", func: () => { + thirdboss_combo_count++; + thirdboss_combo_last_128 = 130; + } } + ], + "s-468-3000-105-0": [ // 130 -> 105 + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] } + ], + "s-468-3000-106-0": [ // 128 -> 106 + { type: "text", sub_type: "message", message: "Back", message_RU: "Задний", check_func: () => thirdboss_combo_last_128 === null }, + { type: "spawn", func: "circle", args: [false, 553, 180, 340, 12, 270, 0, 2600] }, + { type: "func", func: () => { + thirdboss_combo_count++; + thirdboss_combo_last_128 = 106; + } } + ], + "s-468-3000-131-0": [ // 129 -> 131 + { type: "text", sub_type: "message", message: "Right", message_RU: "Откид вправо", check_func: () => thirdboss_combo_last_129 === null }, + { type: "func", func: () => { + thirdboss_combo_count++; + thirdboss_combo_last_129 = 131; + } } + ], + "s-468-3000-107-0": [ // 131 -> 107 + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] } + ], + "s-468-3000-108-0": [ // 129 -> 108 + { type: "text", sub_type: "message", message: "Front", message_RU: "Передний", check_func: () => thirdboss_combo_last_129 === null }, + { type: "func", func: () => { + thirdboss_combo_count++; + thirdboss_combo_last_129 = 108; + } } + ], + "s-468-3000-109-0": "s-468-3000-106-0", + // + "s-468-3000-110-0": [{ type: "text", sub_type: "message", message: "Back Move", message_RU: "Рывок назад" }], + "s-468-3000-111-0": [{ type: "text", sub_type: "message", message: "360 attack", message_RU: "Круговая" }], + "s-468-3000-114-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Притяжка" }], // 114 -> 111 + "s-468-3000-115-0": [{ type: "text", sub_type: "message", message: "Circles", message_RU: "Круги" }], // 202/205 -> 115 + "s-468-3000-115-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 150 }], + "s-468-3000-117-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], // 503 -> 117 + "s-468-3000-134-0": [ // qb 468052 -> 134 + { type: "text", sub_type: "message", message: "Inner + AoE", message_RU: "Ближний + АоЕ" }, + { type: "text", sub_type: "message", message: "Get Debuff", message_RU: "Взять стак", class_position: "heal", delay: 2000 }, + { type: "spawn", func: "circle", args: [true, 553, 0, 75, 14, 175, 0, 1500] } + ], + "s-468-3000-134-1": [ + { type: "spawn", func: "circle", args: [true, 553, 0, 80, 8, 390, 0, 2000] } + ], + "s-468-3000-136-0": [{ type: "text", sub_type: "message", message: "Donut", message_RU: "Бублик" }], // 135 -> 136 + "s-468-3000-202-0": [{ type: "text", sub_type: "message", message: "Target Throw", message_RU: "Бросок цели" }], // 503 -> 201 -> 202 + "s-468-3000-205-0": [{ type: "text", sub_type: "message", message: "Target Throw", message_RU: "Бросок цели" }], // 503 -> 117 -> 203 -> 204 -> 205 + "s-468-3000-206-0": [{ type: "text", sub_type: "message", message: "Pike (Target)", message_RU: "Копье (таргет)" }], // 206 -> 207 + "s-468-3000-302-0": [ + { type: "text", sub_type: "message", message: "Bait (Target)", message_RU: "Байт (таргет)" }, + { type: "func", func: () => { + thirdboss_combo_count = 0; + thirdboss_combo_last_128 = null; + thirdboss_combo_last_129 = null; + } } + ], + "s-468-3000-302-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1600 }], + "s-468-3000-501-0": [ + { type: "text", sub_type: "message", message: "Cage", message_RU: "Клетка" }, + { type: "text", sub_type: "alert", + message: "Stand in the red zone to remove stack", message_RU: "Встаньте в красный сектор для снятия стака", + speech: false, check_func: () => thirdboss_stacks_count > 0, delay: 2000 + } + ], + "s-468-3000-502-0": [ + { type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 80, 8, 390, 0, 3000] } + ], + "s-468-3000-503-0": [{ type: "text", sub_type: "message", message: "Target Lockon", message_RU: "Захват цели" }], // qb 468050 -> 503 + "s-468-3000-504-0": [{ type: "text", sub_type: "message", message: "Mobs Summon", message_RU: "Призыв мобов" }], + // "s-468-3000-508-0": [{ type: "text", sub_type: "message", message: "Buff" }], + "dm-0-0-9068013": [ + { type: "text", sub_type: "notification", message: "Ready to Shield", message_RU: "Готовность ломать щит", speech: false }, + { type: "text", sub_type: "alert", message: "Ready to Shield", message_RU: "Готовность ломать щит" } + ], + "ae-0-0-468039-4": [{ type: "func", func: thirdboss_stacks_event, args: [4] }], + "ae-0-0-468039-3": [{ type: "func", func: thirdboss_stacks_event, args: [3] }], + "ae-0-0-468039-2": [{ type: "func", func: thirdboss_stacks_event, args: [2] }], + "ae-0-0-468039-1": [{ type: "func", func: thirdboss_stacks_event, args: [1] }], + "ar-0-0-468039": [{ type: "func", func: thirdboss_stacks_event, args: [0] }], + // + "give_bait": [ + { type: "event", check_func: () => thirdboss_print_bait, args: [ + { type: "text", sub_type: "message", message: "Give Bait", message_RU: "Дать байт", class_position: "heal" }, + { type: "func", func: () => thirdboss_print_bait = false }, + { type: "func", func: () => thirdboss_print_bait = true, delay: 6000 } + ] } + ], + "give_bait_combo": [ + { type: "event", check_func: () => thirdboss_combo_count >= 3, args: [ + { type: "text", sub_type: "message", message: "Give Bait", message_RU: "Дать байт", class_position: "heal" }, + { type: "func", func: () => { + thirdboss_combo_count = 0; + thirdboss_combo_last_128 = null; + thirdboss_combo_last_129 = null; + } } + ] } + ], + "e-468-3000-101": "give_bait", + "e-468-3000-102": "give_bait", + "e-468-3000-105": "give_bait_combo", // left + "e-468-3000-106": "give_bait_combo", // back + "e-468-3000-107": "give_bait_combo", // right + "e-468-3000-108": "give_bait_combo", // front + "e-468-3000-111": "give_bait", // 360 attack + "e-468-3000-114": "give_bait", // pull + "e-468-3000-115": "give_bait", // circles + "e-468-3000-117": "give_bait", // jump + "e-468-3000-202": "give_bait", // target throw + "e-468-3000-205": "give_bait", // target throw + "e-468-3000-207": "give_bait", // pike + "s-468-3000-122-2": "give_bait", // core pattern 1 + "s-468-3000-123-2": "give_bait", // core pattern 2 + "s-468-3000-124-2": "give_bait", // core pattern 3 + "s-468-3000-127-2": "give_bait", // core pattern 4 + "e-468-3000-136": "give_bait", // donut + "s-468-3000-506-1": "give_bait" // dissipation + }; +}; \ No newline at end of file diff --git a/guides/9070.js b/guides/9070.js index 29e08cb5..9088a3f2 100644 --- a/guides/9070.js +++ b/guides/9070.js @@ -1,202 +1,111 @@ - -//made by michengs - -let player, entity, library, effect; - -let bossBuffs = [], - count = -1, - counts = 0, - shining = true, - gage_tracker_started = false, - debuff_tracker_started = false; - -const BossActions_TW = { - 213: {truth: '大实话 -> 破盾', lie: '吹牛 -> 跑远'}, // "My shield will save me!" (shield) - 212: {truth: '大实话 -> 远离boss', lie: '吹牛 -> 靠进boss'}, // "I will kill you all!" (aoe around boss) - 218: {truth: '大实话 -> 玩家远离', lie: '吹牛 -> 靠近玩家'} // "One of you must die!" (aoe around player) -}; - -const BossActions = { - 213: {truth: 'Truth -> Break shield', lie: 'Lie -> Puddles (run away)'}, // "My shield will save me!" (shield) - 212: {truth: 'Truth -> Stay outside', lie: 'Lie -> Stay inside'}, // "I will kill you all!" (aoe around boss) - 218: {truth: 'Truth -> Stay outside', lie: 'Lie -> Stay inside'} // "One of you must die!" (aoe around player) +// Manglemire +// +// made by michengs / HSDN / ambushing + +const OPCODES = { + "S_DUNGEON_EVENT_GAGE": { + 366226: 39917, + 367078: 47028, + 367080: 57835, + 367081: 39359, + 376012: 47078 + } }; -function skilld_event(skillid, handlers, event, ent, dispatch) { - -/* - switch(skillid) - { - case 46: - if (!bossBuffs.includes(3)) bossBuffs.push(3); - break; - case 47: - if (!bossBuffs.includes(6)) bossBuffs.push(6); - break; - case 48: - if (!bossBuffs.includes(9)) bossBuffs.push(9); - break; - } - - */ - - - if (skillid === 666 ) { - -handlers['text']({ -"sub_type": "message", -"message": bossBuffs -}); -} - - if (skillid === 213 ) { - -handlers['text']({ -"sub_type": "message", -"message": (isTellingTruth() ? BossActions[213].truth : BossActions[213].lie), -"message_TW": (isTellingTruth() ? BossActions_TW[213].truth : BossActions_TW[213].lie) -}); -} - if (skillid === 212 ) { - -handlers['text']({ -"sub_type": "message", -"message": (isTellingTruth() ? BossActions[212].truth : BossActions[212].lie), -"message_TW": (isTellingTruth() ? BossActions_TW[212].truth : BossActions_TW[212].lie) -}); -} - if (skillid === 218 ) { - -handlers['text']({ -"sub_type": "message", -"message": (isTellingTruth() ? BossActions[218].truth : BossActions[218].lie), -"message_TW": (isTellingTruth() ? BossActions_TW[218].truth : BossActions_TW[218].lie) -}); -} - - -} - - function isTellingTruth() { //判斷是否吹牛 - let ones = count % 10; - let tens = Math.floor((count % 100) / 10); - - if (bossBuffs.includes(ones) || bossBuffs.includes(tens)) - { - return false; - } - return true; - } - -function start_boss() { - bossBuffs = []; - count = -1; - counts = 0; - shining = true; - gage_tracker_started = false; - debuff_tracker_started = false; -} - -function start_time() { - - if (shining){ - if (count === 100 ) { - count = -1; - } - count++; - shining = false; - setTimeout(() => shining = true, 500); +function addOpcodeAndDefinition(mod, name, version = null, definition = null) { + if (OPCODES[name] !== undefined && OPCODES[name][mod.dispatch.protocolVersion] !== undefined) { + mod.dispatch.addOpcode(name, OPCODES[name][mod.dispatch.protocolVersion]); + } + if (version !== null && definition !== null) { + mod.dispatch.addDefinition(name, version, definition); } - -} - -function start_gage(handlers, event, entity, dispatch) { - const gage_change = (added, event) => { - start_time() - // console.log('\n -------------------- -> ' + 'count-> '+ count); - - }; - if (!gage_tracker_started) { - dispatch.hook('S_DUNGEON_EVENT_GAGE', 1, gage_change.bind(null, true)); - gage_tracker_started = true; - } } -let debuffs_hand = { - 470046: 3, - 470047: 6, - 470048: 9 -}; - -function start_debuffs(handlers, event, entity, dispatch) { - - const abnormality_change = (added, event) => { - if ( debuffs_hand[event.id]) { - - if (added) { - if (!bossBuffs.includes(debuffs_hand[event.id])) bossBuffs.push(debuffs_hand[event.id]); - counts++; - // console.log('\n ------添加------- -> ' + counts); - } else { - let index = bossBuffs.indexOf(debuffs_hand[event.id]); - if (index > -1) bossBuffs.splice(index, 1); - // console.log('\n ----------- -> ' + bossBuffs); - - } - +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + addOpcodeAndDefinition(dispatch._mod, "S_DUNGEON_EVENT_GAGE", 2, [ + ["name", "refString"], + ["message", "refString"], + ["unk", "int32"], + ["type", "int32"], + ["value", "int32"], + ["name", "string"], + ["message", "string"] + ]); + + const numbers = { 470046: 3, 470047: 6, 470048: 9 }; + const boss_numbers = new Set(); + let event_gage = 0; + + dispatch.hook("S_ABNORMALITY_BEGIN", 4, event => { + if (numbers[event.id] !== undefined) { + boss_numbers.add(numbers[event.id]); } - }; - if (!debuff_tracker_started) { - dispatch.hook('S_ABNORMALITY_BEGIN', 4, abnormality_change.bind(null, true)); - dispatch.hook('S_ABNORMALITY_END', 1, abnormality_change.bind(null, false)); - debuff_tracker_started = true; - } -} + }); -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - - - }, - "h-470-1000-100": [ {"type": "func","func": start_boss}], - - "h-470-1000-99": [ {"type": "func","func": start_gage}, - {"type": "func","func": start_debuffs} - ], - "s-470-1000-1105-0": [{"type": "text","sub_type": "message","message": "jump","message_TW": "大跳" }], - "s-470-1000-1106-0": [{"type": "text","sub_type": "message","message": 'smash',"message_TW": "点名球砸" }], - "s-470-1000-1120-0": [{"type": "text","sub_type": "message","message": 'pull',"message_TW": "拉人 " }], - "s-470-1000-1114-0": [{"type": "text","sub_type": "message","message": 'spray',"message_TW": "点名喷" }], - "s-470-1000-1201-0": [{"type": "text","sub_type": "message","message": 'stun',"message_TW": "眩暈" }], - "s-470-1000-1307-0": [{"type": "text","sub_type": "message","message": 'bomb',"message_TW": "炸彈" }], //炸彈 2人------------判断 - "s-470-1000-2105-0": [{"type": "text","sub_type": "message","message": 'jump',"message_TW": "大跳" }], - "s-470-1000-2106-0": [{"type": "text","sub_type": "message","message": 'smash',"message_TW": "点名球砸" }], - "s-470-1000-2107-0": [{"type": "text","sub_type": "message","message": 'stun',"message_TW": "眩暈" }], - "s-470-1000-2114-0": [{"type": "text","sub_type": "message","message": 'bomb',"message_TW": "点名喷" }], - "s-470-1000-3106-0": [{"type": "text","sub_type": "message","message": '100',"message_TW": "星星位 " }, - {"type": "func","func": skilld_event.bind(null, 000)} - - ], - - "s-470-1000-3213-0": [{"type": "func","func": skilld_event.bind(null, 213)}], //3213 保护膜 假----------判断 - "s-470-1000-3212-0": [{"type": "func","func": skilld_event.bind(null, 212)}], //假 杀光附近----------判断 - "s-470-1000-3218-0": [{"type": "func","func": skilld_event.bind(null, 218)}], //假 杀一個----------判断 - + dispatch.hook("S_ABNORMALITY_END", 1, event => { + if (numbers[event.id] !== undefined) { + boss_numbers.delete(numbers[event.id]); + } + }); + dispatch.hook("S_DUNGEON_EVENT_GAGE", 2, event => { + event_gage = event.value; + }); + function is_telling_truth() { + const ones = event_gage % 10; + const tens = Math.floor((event_gage % 100) / 10); - "ab-470-1000-470046": [{"type": "func","func": skilld_event.bind(null, 46)}], - "ab-470-1000-470047": [{"type": "func","func": skilld_event.bind(null, 47)}], - "ab-470-1000-470048": [{"type": "func","func": skilld_event.bind(null, 48)}], + return !boss_numbers.has(ones) && !boss_numbers.has(tens); + } - "qb-470-600-470053": [{"type": "text","sub_type": "message","message_TW": "开始" }], - - - //"qb-470-1000-470019": [{"type": "func","func": skilld_event.bind(null, 666)}] - - - - - + return { + "nd-470-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "func", func: () => { + boss_numbers.clear(); + event_gage = 0; + } } + ], + + "s-470-1000-1105-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-470-1000-1106-0": [{ type: "text", sub_type: "message", message: "Smash", message_RU: "Удар" }], + "s-470-1000-1120-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Притяжка" }], + "s-470-1000-1114-0": [{ type: "text", sub_type: "message", message: "Spray", message_RU: "Спрей" }], + "s-470-1000-1201-0": [ + { type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 12, 250, 0, 2500] } + ], + "s-470-1000-1307-0": [{ type: "text", sub_type: "message", message: "With a Bomb - Go away. No Bomb - Enter the circle", message_RU: "С бомбой - отойти. Без бомбы - войти в круг" }], + "s-470-1000-2105-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-470-1000-2106-0": [{ type: "text", sub_type: "message", message: "Smash", message_RU: "Удар" }], + "s-470-1000-2107-0": [ + { type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 100, 12, 250, 0, 2500] } + ], + "s-470-1000-2114-0": [{ type: "text", sub_type: "message", message: "Line", message_RU: "Полоса" }], + "s-470-1000-3106-0": [{ type: "text", sub_type: "message", message: "100" }], + + "s-470-1000-3213-0": [ // "My shield will save me!" (shield) + { type: "text", sub_type: "message", message: "Break shield", message_RU: "Сломать щит", check_func: () => is_telling_truth() }, + { type: "text", sub_type: "message", message: "Puddles (run away)", message_RU: "Лужи (убегать)", check_func: () => !is_telling_truth() } + ], + "s-470-1000-3212-0": [ // "I will kill you all!" (aoe around boss) + { type: "text", sub_type: "message", message: "Out", message_RU: "Наружу", check_func: () => is_telling_truth() }, + { type: "text", sub_type: "message", message: "In", message_RU: "Внутрь", check_func: () => !is_telling_truth() } + ], + "s-470-1000-3218-0": [ // "One of you must die!" (aoe around player) + { type: "text", sub_type: "message", message: "Out", message_RU: "Наружу", check_func: () => is_telling_truth() }, + { type: "text", sub_type: "message", message: "In", message_RU: "Внутрь", check_func: () => !is_telling_truth() } + ], + + "qb-470-1000-470019": [ + { type: "text", sub_type: "alert", message: "Truth", message_RU: "Правда", check_func: () => is_telling_truth() }, + { type: "text", sub_type: "alert", message: "Lie", message_RU: "Ложь", check_func: () => !is_telling_truth() } + ], + "qb-470-1000-470011": [{ type: "text", sub_type: "message", message: "Stand on stars", message_RU: "Встать на звезду" }] + }; }; \ No newline at end of file diff --git a/guides/9710.js b/guides/9710.js new file mode 100644 index 00000000..880023f5 --- /dev/null +++ b/guides/9710.js @@ -0,0 +1,38 @@ +// Broken Prison +// +// made by ITunk + +module.exports = (dispatch, handlers, guide, lang) => { + return { + // 1 BOSS + "s-710-1000-102-0": [{ type: "text", sub_type: "message", message: "Pushback (Kaia)", message_RU: "Откид (кайа)" }], + "s-710-1000-105-0": [{ type: "text", sub_type: "message", message: "Bait (DoT)", message_RU: "Байт лужа" }], + "s-710-1000-113-0": [{ type: "text", sub_type: "message", message: "DoT - Out", message_RU: "Лужа отвести" }], + "s-710-1000-119-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "s-710-1000-303-0": [{ type: "text", sub_type: "message", message: "Mechanics", message_RU: "Меха" }], + "s-710-1000-304-0": [ + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ], + + // 2 BOSS + "s-710-2000-102-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "s-710-2000-110-0": [{ type: "text", sub_type: "message", message: "Cleanse", message_RU: "Клинс" }], + "s-710-2000-111-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "s-710-2000-115-0": [{ type: "text", sub_type: "message", message: "Damage - Stun", message_RU: "Задувка - Стан" }], + "s-710-2000-116-0": [{ type: "text", sub_type: "message", message: "Bait", message_RU: "Байт" }], + "s-710-2000-118-0": [{ type: "text", sub_type: "message", message: "Laser 360", message_RU: "Лазер 360" }], + + // 3 BOSS + "s-710-3000-302-0": [{ type: "text", sub_type: "message", message: "Keep BLUE", message_RU: "Оставить синий" }], + "s-710-3000-301-0": [{ type: "text", sub_type: "message", message: "Stand at the portal", message_RU: "Встать за портал" }], + "s-710-3000-106-0": [{ type: "text", sub_type: "message", message: "Back attack", message_RU: "Удар назад" }], + "s-710-3000-102-0": [{ type: "text", sub_type: "message", message: "Spin (Kaia)", message_RU: "Крутилка (кайа)" }], + "s-710-3000-110-0": [{ type: "text", sub_type: "message", message: "Get Out", message_RU: "От него" }], + "s-710-3000-205-0": [{ type: "text", sub_type: "message", message: "Mechanics", message_RU: "Меха" }], + "s-710-3000-107-0": [{ type: "text", sub_type: "message", message: "Back attack", message_RU: "Удар назад" }], + "s-710-3000-109-0": [{ type: "text", sub_type: "message", message: "Spin (Kaia)", message_RU: "Крутилка (кайа)" }], + "s-710-3000-111-0": [{ type: "text", sub_type: "message", message: "Get In", message_RU: "К нему" }], + "s-710-3000-115-0": [{ type: "text", sub_type: "message", message: "Bait attack", message_RU: "Байт бросок" }] + }; +}; \ No newline at end of file diff --git a/guides/9716.js b/guides/9716.js new file mode 100644 index 00000000..2c634011 --- /dev/null +++ b/guides/9716.js @@ -0,0 +1,226 @@ +// Sky Cruiser Endeavor +// +// made by michengs / HSDN / Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + let back_print = false; + let back_time = 0; + let end_back_time = 0; + let is_one_back = false; + let counter = 0; + let timer2 = null; + + function boss_backcombo_event() { + dispatch.clearTimeout(timer2); + counter++; + + if (counter >= 2) { + handlers.text({ + sub_type: "message", + message_RU: "Задняя комба 2x360", + message: "Back Combo 2x360" + }); + } + + timer2 = dispatch.setTimeout(() => counter = 0, 3000); + } + + function boss_backattack_event() { + end_back_time = new Date() - back_time; + + if (!back_print) { + back_print = true; + is_one_back = end_back_time > 0 && end_back_time < 1500; + + handlers.text({ + sub_type: "message", + message_RU: is_one_back ? "Задняя 360" : "!!!", + message: is_one_back ? "Back 360" : "!!!" + }); + } + dispatch.setTimeout(() => back_print = false, 3500); + } + + return { + // Mini BOSS 1 + "s-716-91650-1102-0": [{ type: "text", sub_type: "message", message_RU: "Стан АоЕ", message: "AoE Stun" }], + "s-716-91650-1104-0": [{ type: "text", sub_type: "message", message_RU: "Случайная цель (стан)", message: "Random Target (Stun)" }, + { type: "spawn", func: "semicircle", args: [-33, 38, 912, 0, 0, 8, 550, 0, 3500] }, //1 + { type: "spawn", func: "semicircle", args: [-30, 35, 912, 0, 0, 8, 500, 0, 3500] }, //1 + { type: "spawn", func: "semicircle", args: [59, 116, 912, -22, 210, 8, 480, 0, 3500] }, //2 + { type: "spawn", func: "semicircle", args: [65, 120, 912, -17, 210, 8, 410, 0, 3500] }, //2 + { type: "spawn", func: "semicircle", args: [-110, -55, 912, 30, 200, 8, 500, 0, 3500] }, //3 + { type: "spawn", func: "semicircle", args: [-110, -55, 912, 30, 200, 8, 450, 0, 3500] }//3 + ], + "s-716-91650-1105-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок + Удар головой (таргет)", message: "Jump + Headbutt on Target" }], + "s-716-91650-1106-0": [{ type: "text", sub_type: "message", message_RU: "Удар головой (таргет)", message: "Headbutt (Target)" }], + "s-716-91650-2102-0": "s-716-91650-1102-0", + "s-716-91650-2104-0": "s-716-91650-1104-0", + "s-716-91650-2105-0": "s-716-91650-1105-0", + "s-716-91650-2106-0": "s-716-91650-1106-0", + + // Mini BOSS 2 + "ns-716-91606": [ + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 57046, y: 129715, z: 2370, w: -1.08 }, ownerName: "AIM LASER", message: "LASER" }, //1 + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 57046, y: 129715, z: 2370, w: -1.08 } }, //1 + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 58360, y: 129712, z: 2370, w: -2.09 }, ownerName: "AIM LASER", message: "LASER" }, //2 + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 58360, y: 129712, z: 2370, w: -2.09 } }, //2 + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 58361, y: 126912, z: 2370, w: 2.00 }, ownerName: "AIM LASER", message: "LASER" }, //3 + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 58361, y: 126912, z: 2370, w: 2.00 } }, //3 + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 57048, y: 126914, z: 2370, w: 1.06 }, ownerName: "AIM LASER", message: "LASER" }, //4 + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 57048, y: 126914, z: 2370, w: 1.06 } }, //4 + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 59088, y: 127837, z: 2370, w: 2.76 }, ownerName: "AIM LASER", message: "LASER" }, //4 esquerda atras + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 59088, y: 127837, z: 2370, w: 2.76 } }, //4 esquerda atras + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 56343, y: 127836, z: 2370, w: 0.39 }, ownerName: "AIM LASER", message: "LASER" }, //4 direita atras + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 56343, y: 127836, z: 2370, w: 0.39 } }, //4 direita atras + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 56339, y: 128908, z: 2370, w: -0.38 }, ownerName: "AIM LASER", message: "LASER" }, //4 direita frente + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 56339, y: 128908, z: 2370, w: -0.38 } }, //4 direita frente + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 59087, y: 128907, z: 2370, w: -2.75 }, ownerName: "AIM LASER", message: "LASER" }, //4 esquerda frente + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 59087, y: 128907, z: 2370, w: -2.75 } }//4 esquerda frente + ], + "s-716-91606-1304-0": [{ type: "text", sub_type: "message", message_RU: "ЛАЗЕР", message: "Random Laser" } + ], + "s-716-91606-1102-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка", message: "Spin" }, + { type: "spawn", func: "circle", args: [false, 553, 0, -15, 15, 280, 0, 2500] } + ], + "s-716-91606-1106-0": [{ type: "text", sub_type: "message", message_RU: "Передняя комба (таргет)", message: "Frontal Combo (Target)" }, + { type: "spawn", func: "circle", args: [false, 553, -30, 200, 18, 160, 0, 2000] }, + { type: "spawn", func: "circle", args: [false, 553, -10, 230, 15, 210, 2000, 3000] }, + { type: "spawn", func: "circle", args: [false, 413, 50, 50, 15, 160, 2000, 2000] } + ], + "s-716-91606-1105-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок (эвейд)", message: "Jump (Dodge)" }], + "s-716-91606-1107-0": [{ type: "text", sub_type: "message", message_RU: "Несколько ударов (таргет)", message: "Many Hits (Target)" }], + "s-716-91606-1302-0": [{ type: "text", sub_type: "message", message_RU: "Лазер (ЗАЩИТА)", message: "Laser (PROTECT)" }, + { type: "spawn", func: "vector", args: [912, 360, 50, 0, 900, 0, 4000] } + ], + "s-716-91606-1304-1": [{ type: "text", sub_type: "message", message_RU: "Таргет", message: "Dodge", delay: 600 }], + "s-716-91606-1305-0": [{ type: "text", sub_type: "message", message_RU: "Эвейд", message: "AoEs" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 210, 22, 140, 0, 3000] }, //1 front + { type: "spawn", func: "circle", args: [false, 553, 0, -230, 22, 140, 0, 3000] }, //2 back + { type: "spawn", func: "circle", args: [false, 553, 90, -230, 22, 140, 0, 2000] }, //3 left + { type: "spawn", func: "circle", args: [false, 553, 270, -230, 22, 140, 0, 2000] }, //4 right + { type: "spawn", func: "circle", args: [false, 553, 315, 360, 14, 220, 1000, 4000] }, //1 front left big + { type: "spawn", func: "circle", args: [false, 553, 135, 360, 14, 220, 1000, 3000] }, //2 back right big + { type: "spawn", func: "circle", args: [false, 553, 45, 360, 14, 220, 1000, 4000] }, //3 front right big + { type: "spawn", func: "circle", args: [false, 553, 225, 360, 14, 220, 1000, 3000] }//4 back left big + ], + "s-716-91606-2102-0": "s-716-91606-1102-0", + "s-716-91606-2106-0": "s-716-91606-1106-0", + "s-716-91606-2107-0": "s-716-91606-1107-0", + "s-716-91606-2105-0": "s-716-91606-1105-0", + "qb-716-91606-916027": [{ type: "text", sub_type: "message", message_RU: "Таргет (откид)", message: "Target (Push)" }], + "s-716-91606-1301-0": [ + { type: "spawn", func: "semicircle", args: [338, 385, 553, 0, 0, 5, 600, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 459, 60, 18, 550, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 251, 55, -19, 550, 0, 2000] } + ], + "qb-716-91606-916007": [{ type: "text", sub_type: "message", message_RU: "(ВМЕСТЕ)", message: "GATHER" }], + + // Boss 3 + // Modo 1 + "nd-716-1001": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-716-1001-1112-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок назад", message: "Back Jump" }], + "s-716-1001-1303-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка", message: "Spin Attack" }], + "s-716-1001-1101-0": [{ type: "func", func: boss_backattack_event }], + "s-716-1001-1102-0": [{ type: "func", func: () => back_time = new Date() }], + "s-716-1001-1103-0": [{ type: "func", func: boss_backcombo_event }], + "s-716-1001-1108-0": [{ type: "func", func: boss_backcombo_event }], + "s-716-1001-1401-0": [{ type: "text", sub_type: "message", message_RU: "Правый", message: "Right" }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1500] } + ], + "s-716-1001-1402-0": [{ type: "text", sub_type: "message", message_RU: "Левый", message: "Left" }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1500] } + ], + "s-716-1001-2101-0": "s-716-1001-1101-0", + "s-716-1001-2102-0": "s-716-1001-1102-0", + "s-716-1001-2103-0": "s-716-1001-1103-0", + "s-716-1001-2108-0": "s-716-1001-1108-0", + "s-716-1001-2112-0": "s-716-1001-1112-0", + + // Modo 2 + "nd-716-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-716-1000-94": [{ type: "text", sub_type: "message", message: "94%" }], + "h-716-1000-49": [{ type: "text", sub_type: "message", message: "49%" }], + "s-716-1000-1101-0": [{ type: "func", func: boss_backattack_event }], + "s-716-1000-1102-0": [{ type: "func", func: () => back_time = new Date() }], + "s-716-1000-1112-0": [{ type: "text", sub_type: "message", message_RU: "Рывок назад", message: "Back Move" }], + "s-716-1000-1103-0": [{ type: "func", func: boss_backcombo_event }], + "s-716-1000-1108-0": [{ type: "func", func: boss_backcombo_event }], + "s-716-1000-1114-0": [ + { type: "text", sub_type: "message", message_RU: "Таргет", message: "Target Attack" }, + { type: "spawn", func: "vector", args: [553, 90, 150, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 90, 75, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 270, 75, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 270, 150, 0, 1300, 0, 2500] } + ], + "s-716-1000-1115-0": [ + { type: "text", sub_type: "message", message: "3" }, + { type: "text", sub_type: "message", delay: 1000, message: "2" }, + { type: "text", sub_type: "message", delay: 2000, message: "1" }, + { type: "text", sub_type: "message", delay: 4200, message_RU: "Эвейд", message: "Dodge" } + ], + "s-716-1000-1117-0": [{ type: "text", sub_type: "message", message_RU: "Удар вперед", message: "Front" }], + "s-716-1000-1118-0": [ + { type: "text", sub_type: "message", message_RU: "Передний разрез | Эвейд", message: "Front Cut | Dodge" }, + { type: "spawn", func: "semicircle", args: [0, 60, 553, 0, 0, 15, 60, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 55, 553, 0, 0, 15, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 45, 553, 0, 0, 10, 250, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 45, 553, 0, 0, 10, 340, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [300, 360, 553, 0, 0, 15, 60, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [305, 360, 553, 0, 0, 15, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [310, 360, 553, 0, 0, 10, 250, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [315, 360, 553, 0, 0, 10, 340, 0, 2000] } + ], + "s-716-1000-1302-0": [ + { type: "text", sub_type: "message", message_RU: "АоЕ", message: "AOE" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 500, 100, 6000] } + ], + "s-716-1000-2101-0": "s-716-1000-1101-0", + "s-716-1000-2102-0": "s-716-1000-1102-0", + "s-716-1000-2103-0": "s-716-1000-1103-0", + "s-716-1000-2108-0": "s-716-1000-1108-0", + "s-716-1000-2112-0": "s-716-1000-1112-0", + "s-716-1000-1303-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка", message: "Spin Attack" }], + "s-716-1000-1801-0": [{ type: "text", sub_type: "message", message_RU: "Стан", message: "Incoming Stun" }], + "s-716-1000-1401-0": [{ type: "text", sub_type: "message", message_RU: "Правый", message: "Right" }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1500] } + ], + "s-716-1000-1402-0": [{ type: "text", sub_type: "message", message_RU: "Левый", message: "Left" }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1500] } + ], + "s-716-1000-2114-0": "s-716-1000-1114-0", + "s-716-1000-2115-0": "s-716-1000-1115-0", + "s-716-1000-2117-0": "s-716-1000-1117-0", + "s-716-1000-2118-0": "s-716-1000-1118-0", + "s-716-1000-2401-0": "s-716-1000-1401-0", + "s-716-1000-2402-0": "s-716-1000-1402-0" + }; +}; \ No newline at end of file diff --git a/guides/9720.js b/guides/9720.js index 62d1a095..1e545d22 100644 --- a/guides/9720.js +++ b/guides/9720.js @@ -1,233 +1,158 @@ -// AANM -//made by Yuyuko - -let counter = 0; -let timer; - -const TIMER_DELAY = 600; - -const ITEM_SPAWNED_ON_SWIPE_ID = 513; -const ITEM_SPAWNED_ON_SWIPE_SUB_DELAY = 2500; -const ITEM_SPAWNED_ON_SWIPE_DISTANCE = 150; - -//一王击飞躲避提示延迟推送 -// fistboss: Knock up mech, AKA 'Your flesh will be deleted' callout -let notice_guide = true; -let player, entity, library, effect; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); - -handlers['text']({ -"sub_type": "notification", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); -} -notice_guide = false; - -} -const EVENT_DELAY_FIRST_BOSS_NM = [ -{ -"type": "text", -"sub_type": "message", -"delay": TIMER_DELAY, -"message": "Dodge!", -"message_TW": "注意躲避" -}, -]; - -//三王后砸前置计数 -// thirdboss: counter of back attacks - -function back_attack_NM(handlers) { -clearTimeout(timer); -counter++; -if(counter >= 2) { -handlers['text']({ -"sub_type": "message", -"message": "Back attack", -"message_TW": "后砸" -}); -} -timer = setTimeout(()=>{ -counter = 0; -}, 3000); -} - -module.exports = { -// "h-720-1000-100": [{"type": "func","func": guid_voice}], - -//一王 -//firstboss, - -//后跳+内外圈,安全区域:站里面+站外面 -//Backstep+donuts, stay in, get out - -"s-720-1000-117-0": [{"type": "text","sub_type": "message","message": "stay in↑ + get out↓","message_TW": "站里面↑+站外面↓"}], - -//原地抬腿+内外圈,安全区域:站外面+站里面 -//Stomp+donuts, get out, stay in - -"s-720-1000-116-0": [{"type": "text","sub_type": "message","message": "get out↓ + stay in↑","message_TW": "站外面↓+站里面↑"}], - -//剑戳地2下+后方挥盾 -//ground thrust 2x+shield swing - -"s-720-1000-109-0": [{"type": "text","sub_type": "message","message": "back attack","message_TW": "后方攻击"}], - -//一王特殊技能 -//firstboss special attack - -//击飞攻击 -//knockup attack - -"s-720-1000-300-0": EVENT_DELAY_FIRST_BOSS_NM, - - - - -//二王 -//secondboss, - -//转圈攻击(2106) -//Spin attack - -"s-720-2000-106-0": [{"type": "text","sub_type": "message","message": "Spin attack","message_TW": "转圈攻击"}], - -//愤怒后方攻击(2105) -//enraged back attack - -"s-720-2000-105-0": [{"type": "text","sub_type": "message","message": "back attack","message_TW": "后方攻击"}], - -//点名大跳晕人 -//Random aggro stun - -"s-720-2000-104-0": [{"type": "text","sub_type": "message","message": "Random aggro jump","message_TW": "点名大跳"}], - -//BOSS右手边划刀,安全区域:坦右,打左 -//right hand side swing, tank goes to right, dps goes to left - -"s-720-2000-112-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "left←","message_TW": "左←"}], - -//BOSS左手边划刀,安全区域:坦左,打右 -//left hand side swing, tank goes to left, dps goes to right - -"s-720-2000-111-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "right→","message_TW": "右→"}], - -//眩晕攻击 -//Stun attack - -"s-720-2000-110-0": [{"type": "text","sub_type": "message","message": "Stun attack","message_TW": "眩晕攻击"}], - -//二王特殊技能 -//secondboss, special attacks - -//红色鉴定,安全区域:15M外 -//Red, stay 15m away - -"s-720-2000-119-0": [{"type": "text","sub_type": "message","message": "red: get out↓","message_TW": "红色:外↓"}], - -//蓝色鉴定,安全区域:15M内(3220) -//Blue, stay near within 15m - -"s-720-2000-220-0": [{"type": "text","sub_type": "message","message": "blue: stay in↑","message_TW": "蓝色:内↑"}], - -//眩晕圈(3116)+外圈伤害(3118) -//stun+donut - -"s-720-2000-116-0": [{"type": "text","sub_type": "message","message": "dodge + stay in↑","message_TW": "躲避+内↑"}], - -//点名喷长条毒(3107) - - -//三王 - -//进场的推人红圈 - -"s-720-3000-315-0": [{"type": "text","sub_type": "message","message": "Pushback","message_TW": "开场推人"}], - -//点名大跳晕人(1107) -"s-720-3000-107-0": [{"type": "text","sub_type": "message","message": "Random jump","message_TW": "点名大跳"}], - -//点名出剑刃风暴,手里握篮球挥篮球(1120),剑刃风暴(1121) - -"s-720-3000-204-0": [{"type": "text","sub_type": "message","message": "energy beam","message_TW": "点名剑气"}], - -//剑舞前戳+逆时针旋转+右手扇形攻击 注:坦右边安全,打左边安全请自行更改 - -"s-720-3000-109-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "left←","message_TW": "左←"}, - -// Courtesy of Kasea ;) -{ -"type": "spawn", -"id": ITEM_SPAWNED_ON_SWIPE_ID, -"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY, -"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE, -"offset": -1 -}, -{ -"type": "spawn", -"id": ITEM_SPAWNED_ON_SWIPE_ID, -"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY, -"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE, -"offset": -2.3 -} -], - -//剑舞前戳+顺时针旋转+左手扇形攻击 注:坦左边安全,打右边安全请自行更改 - -"s-720-3000-111-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "right→","message_TW": "右→"}, - -// Courtesy of Kasea ;) -{ -"type": "spawn", -"id": ITEM_SPAWNED_ON_SWIPE_ID, -"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY, -"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE, -"offset": 1 -}, -{ -"type": "spawn", -"id": ITEM_SPAWNED_ON_SWIPE_ID, -"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY, -"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE, -"offset": 2.3 -} -], - -//前后砸 -"s-720-3000-113-0": [{"type": "text","sub_type": "message","message": "front, back slam","message_TW": "前后砸"}], - -//旋转攻击 - -"s-720-3000-115-0": [{"type": "text","sub_type": "message","message": "spinning attack","message_TW": "旋转攻击"}], - -//2连斜上挥(1104)后接的后砸(1119) -"s-720-3000-104-0": [{"type": "func","func": back_attack_NM}], - -//后闪+旋转or前后砸 - -"s-720-3000-202-0": [{"type": "text","sub_type": "message","message": "spin or front,back slam","message_TW": "旋转or前后砸"}], - - -//三王特殊技能 - -//召唤分身出点名剑气 -"s-720-3000-400-0": [{"type": "text","sub_type": "message","message": "beam","message_TW": "召咄分身:点名剑气"}], -//召唤分身出旋转攻击 -"s-720-3000-401-0": [{"type": "text","sub_type": "message","message": "spin","message_TW": "召咄分身:旋转攻击"}] - +// Antaroth's Abyss +// +// made by HSDN / Yuyuko / Owyn + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + let secondboss_mech_counter = 0; + let thirdboss_counter = 0; + let thirdboss_timer = null; + + function secondboss_stacks_event() { + secondboss_mech_counter++; + + handlers.text({ sub_type: "notification", message: `${secondboss_mech_counter} stack`, message_RU: `Стак ${secondboss_mech_counter}`, speech: false }); + + if (secondboss_mech_counter >= 5) { + secondboss_mech_counter = 0; + } + } + + function thirdboss_backattack_event() { + dispatch.clearTimeout(thirdboss_timer); + thirdboss_counter++; + + if (thirdboss_counter >= 2) { + handlers.text({ sub_type: "message", message: "Back Stun", message_RU: "Задний" }); + } + + thirdboss_timer = dispatch.setTimeout(() => thirdboss_counter = 0, 3000); + } + + return { + // 1 BOSS + "nd-720-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-720-1000-1117-0": [{ type: "text", sub_type: "message", message: "In > Out", message_RU: "К нему > От него" }], + "s-720-1000-1116-0": [{ type: "text", sub_type: "message", message: "Out > In", message_RU: "От него > К нему" }], + "s-720-1000-1109-0": [{ type: "text", sub_type: "message", message: "Back Attack", message_RU: "Откид назад" }], + "s-720-1000-1300-0": [{ type: "text", sub_type: "message", delay: 600, message: "Dodge!", message_RU: "Эвейд!" }], + "s-720-1000-2117-0": "s-720-1000-1117-0", + "s-720-1000-2116-0": "s-720-1000-1116-0", + "s-720-1000-2109-0": "s-720-1000-1109-0", + "s-720-1000-2220-0": "s-720-1000-1220-0", + "qb-720-1000-7201000": [{ type: "text", sub_type: "message", message: "Flying", message_RU: "Подлет" }], + + // 2 BOSS + "nd-720-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-720-2000-99": [{ type: "func", func: () => secondboss_mech_counter = 0 }], + "s-720-2000-1104-0": [{ type: "text", sub_type: "message", message: "Random Jump", message_RU: "Прыжок (стан)" }], + "s-720-2000-1105-0": [{ type: "text", sub_type: "message", message: "Back Attack", message_RU: "Удар назад" }], + "s-720-2000-1106-0": [ + { type: "text", sub_type: "message", message: "Spin Attack", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-720-2000-1108-0": [{ type: "text", sub_type: "message", message: "Target Swing", message_RU: "Таргет" }], + "s-720-2000-1110-0": [ + { type: "text", sub_type: "message", message: "Stun Attack", message_RU: "Передний стан" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 175, 10, 260, 0, 5000] } + ], + "s-720-2000-1111-0": [ + { type: "text", sub_type: "message", message: "Left Slash", message_RU: "Левая полоса" }, + { type: "spawn", func: "vector", args: [553, 270, 200, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 200, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 6, 302, 270, 200, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 176, 502, 270, 200, 0, 2000] } + ], + "s-720-2000-1112-0": [ + { type: "text", sub_type: "message", message: "Right Slash", message_RU: "Правая полоса" }, + { type: "spawn", func: "vector", args: [553, 90, 200, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 200, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 20, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 20, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 354, 302, 90, 200, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 184, 502, 90, 200, 0, 2000] } + ], + "s-720-2000-1113-0": "s-720-2000-1111-0", + "s-720-2000-1114-0": "s-720-2000-1112-0", + "s-720-2000-2104-0": "s-720-2000-1104-0", + "s-720-2000-2105-0": "s-720-2000-1105-0", + "s-720-2000-2106-0": "s-720-2000-1106-0", + "s-720-2000-2108-0": "s-720-2000-1108-0", + "s-720-2000-2110-0": "s-720-2000-1110-0", + "s-720-2000-2111-0": "s-720-2000-1111-0", + "s-720-2000-2112-0": "s-720-2000-1112-0", + "s-720-2000-2113-0": "s-720-2000-1111-0", + "s-720-2000-2114-0": "s-720-2000-1112-0", + "s-720-2000-3116-0": [{ type: "text", sub_type: "message", message: "Circles", message_RU: "Круги" }], + "s-720-2000-3119-0": [{ type: "text", sub_type: "message", message: "Red: Out safe", message_RU: "Красный: Наружу сейф" }], + "s-720-2000-3220-0": [{ type: "text", sub_type: "message", message: "Blue: In safe", message_RU: "Синий: Внутрь сейф" }], + // + "dm-0-0-7202000": [{ type: "func", func: secondboss_stacks_event }], + + // 3 BOSS + "nd-720-3000-0": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-720-3000-1104-0": [{ type: "func", func: thirdboss_backattack_event }], + "s-720-3000-1119-0": [{ type: "spawn", func: "circle", args: [true, 553, 0, -325, 12, 325, 0, 2000] }], + "s-720-3000-1107-0": [{ type: "text", sub_type: "message", message: "Random Jump", message_RU: "Прыжок (стан)" }], + "s-720-3000-1107-1": [{ type: "spawn", func: "circle", args: [false, 553, 0, 85, 12, 250, 0, 2000] }], + "s-720-3000-1109-0": [ + { type: "text", sub_type: "message", message: "Left", message_RU: "Лево" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] }, + { type: "spawn", func: "marker", args: [false, 270, 300, 0, 1500, true, null] } + ], + "s-720-3000-1111-0": [ + { type: "text", sub_type: "message", message: "Right", message_RU: "Право" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] }, + { type: "spawn", func: "marker", args: [false, 90, 300, 0, 1500, true, null] } + ], + "s-720-3000-1113-0": [{ type: "text", sub_type: "message", message: "Front | Back Stun", message_RU: "Передний | Задний" }], + "s-720-3000-1115-0": [{ type: "text", sub_type: "message", message: "Spin Attack", message_RU: "Круговая" }], + "s-720-3000-1120-0": [{ type: "text", sub_type: "message", message: "Energy Beam (Slow)", message_RU: "Волна (медленно)" }], + "s-720-3000-1204-0": [{ type: "text", sub_type: "message", message: "Energy Beam (Fast)", message_RU: "Волна (быстро)" }], + "s-720-3000-1206-0": [{ type: "text", sub_type: "message", message: "Orbs", message_RU: "Шары" }], + "s-720-3000-1309-0": [{ type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }], + "s-720-3000-1310-0": [{ type: "text", sub_type: "message", message: "Puddles", message_RU: "Лужи" }], + "s-720-3000-1311-0": "s-720-3000-1310-0", + "s-720-3000-1312-0": "s-720-3000-1310-0", + "s-720-3000-1313-0": "s-720-3000-1310-0", + "s-720-3000-1314-0": "s-720-3000-1310-0", + "s-720-3000-1315-0": [{ type: "text", sub_type: "message", message: "Pushback", message_RU: "Откид (кайа)" }], + "s-720-3000-1400-0": [{ type: "text", sub_type: "message", message: "Clones: Beam", message_RU: "Копии: волны" }], + "s-720-3000-1401-0": [{ type: "text", sub_type: "message", message: "Clones: Spin", message_RU: "Копии: круговые" }], + "s-720-3000-2104-0": "s-720-3000-1104-0", + "s-720-3000-2105-0": "s-720-3000-1105-0", + "s-720-3000-2119-0": "s-720-3000-1119-0", + "s-720-3000-2107-0": "s-720-3000-1107-0", + "s-720-3000-2107-1": "s-720-3000-1107-1", + "s-720-3000-2109-0": "s-720-3000-1109-0", + "s-720-3000-2111-0": "s-720-3000-1111-0", + "s-720-3000-2113-0": "s-720-3000-1113-0", + "s-720-3000-2115-0": "s-720-3000-1115-0", + "s-720-3000-2120-0": "s-720-3000-1120-0", + "s-720-3000-2204-0": "s-720-3000-1204-0", + "s-720-3000-2202-0": "s-720-3000-1202-0", + "s-720-3000-2206-0": "s-720-3000-1206-0" + }; }; \ No newline at end of file diff --git a/guides/9735.js b/guides/9735.js index cbe7d295..f1ee5cd6 100644 --- a/guides/9735.js +++ b/guides/9735.js @@ -1,219 +1,128 @@ -// RK9 -//made by michengs - -let notice_guide = true; -let player, entity, library, effect; -let power = false; -let Level = 0; -let notice = true; -let powerMsg = null; -let steptwo = false ; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message_RU": "Слой', 'Взрыв! Взрыв!" -}); - -handlers['text']({ -"sub_type": "notification", -"delay": 2000, -"message_RU": "Слой', 'Взрыв! Взрыв!" -}); -} -notice_guide = false; - -} -// 召喚光柱 ,告示牌提示( 角度 距离 延迟时间 时间) -function SpawnThing( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "SAFE SPOT", - "message": "SAFE" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} - - //构建直线(提示标志 偏移角度 偏移距离 角度 最远距离 时间) -function Spawnitem1(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "sub_type": "item", - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - -function SpawnThingobject( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "巴哈勒", - "message": "王坐方向" - }, {loc: shield_loc}); -} - - - - - - -let skills_hand = { - 1112: {truth: 'Truth -> Break shield', lie: 'Lie -> Puddles (run away)'}, - 1111: {truth: 'Truth -> Break shield', lie: 'Lie -> Puddles (run away)'}, - 1305: {truth: 'Truth -> Break shield', lie: 'Lie -> Puddles (run away)'}, - 1304: {truth: 'Truth -> Break shield', lie: 'Lie -> Puddles (run away)'} - -}; -//let debuff_tracker_started = false; - -function start_skills(handlers, event, entity, dispatch) { - const skill_change = (added, event) => { - if ((player.isMe(event.target) || player.playersInParty.includes(event.target.toString())) && skills_hand[event.id]) { - - - handlers['text']({ - "sub_type": "notification", - "message": skills_hand[event.id].lie - }); - - - } +// RK-9 Kennel +// +// made by michengs + +module.exports = (dispatch, handlers, guide, lang) => { + return { + // 1 BOSS + "nd-735-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-735-1000-111-0": [{ type: "text", sub_type: "message", message: "Back + Front", message_RU: "Удар назад + вперед" }], + "s-735-1000-112-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }], + "s-735-1000-304-0": [{ type: "text", sub_type: "message", message: "Out", message_RU: "От него" }], + "s-735-1000-305-0": [{ type: "text", sub_type: "message", message: "In", message_RU: "К нему" }], + "s-735-1000-306-0": [{ type: "text", sub_type: "message", message: "Bombs", message_RU: "Бомбы" }], + "s-735-1000-307-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Стяжка" }], + "s-735-1000-309-0": [{ type: "text", sub_type: "message", message: "Four Missile", message_RU: "Запуск 4 ракет" }], + + // 2 BOSS + "nd-735-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-735-2000-102-0": [ + { type: "text", sub_type: "message", message: "Pizza Cutter", message_RU: "Пила (Эвейд)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 300, 12, 228, 0, 3000] } + ], + "s-735-2000-105-0": [ + { type: "text", sub_type: "message", message: "360", message_RU: "Крутилка (откид)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 278, 0, 4000] } + ], + "s-735-2000-108-0": [ + { type: "text", sub_type: "message", message: "Back Swipe", message_RU: "Откид назад" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 240, 380, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 120, 380, 0, 2000] } + ], + "s-735-2000-301-0": [{ type: "text", sub_type: "message", message: "Throwing Orb", message_RU: "Бомба" }], + "s-735-2000-304-0": [ + { type: "text", sub_type: "message", message: "Get Out", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 400, 0, 4000] } + ], + "s-735-2007-201-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 500, 0, 4000] } + ], + "s-735-2007-306-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 500, 0, 4000] } + ], + "s-735-2007-307-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 500, 0, 4000] } + ], + + // 3 BOSS + "nd-735-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-735-3000-116-0": [{ type: "text", sub_type: "message", message: "Right Safe", message_RU: "Справа сейф" }, + { type: "spawn", func: "point", args: [553, 120, 250, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 130, 240, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 140, 230, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 150, 220, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 160, 210, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 170, 210, 180, 290, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 300, 250, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 310, 240, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 320, 230, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 330, 220, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 340, 210, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 350, 210, 0, 290, 0, 3000] } + ], + "s-735-3000-117-0": [{ type: "text", sub_type: "message", message: "Left Safe", message_RU: "Слева сейф" }, + { type: "spawn", func: "vector", args: [553, 10, 210, 0, 290, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 20, 210, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 30, 220, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 40, 230, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 50, 240, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 60, 250, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 240, 250, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 230, 240, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 220, 230, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 210, 220, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 200, 210, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 190, 210, 180, 290, 0, 3000] } + ], + "s-735-3000-118-0": [{ type: "text", sub_type: "message", message: "Left Safe", message_RU: "Слева сейф" }, + { type: "spawn", func: "vector", args: [553, 10, 210, 0, 290, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 20, 210, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 30, 220, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 40, 230, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 50, 240, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 60, 250, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 240, 250, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 230, 240, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 220, 230, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 210, 220, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 200, 210, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 190, 210, 180, 290, 0, 3000] } + ], + "s-735-3000-119-0": [{ type: "text", sub_type: "message", message: "Right Safe", message_RU: "Справа сейф" }, + { type: "spawn", func: "point", args: [553, 120, 250, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 130, 240, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 140, 230, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 150, 220, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 160, 210, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 170, 210, 180, 290, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 300, 250, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 310, 240, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 320, 230, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 330, 220, 0, 3000] }, + { type: "spawn", func: "point", args: [553, 340, 210, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 350, 210, 0, 290, 0, 3000] } + ], + "s-735-3000-128-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 }], + "s-735-3000-305-0": [{ type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 300, 0, 7000] }], + "s-735-3000-321-0": [{ type: "text", sub_type: "message", message: "Shield!", message_RU: "Щит!" }], + "s-735-3000-324-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }] }; - dispatch.hook('S_ACTION_STAGE',9, skill_change.bind(null, true)); -} - - - - - - - - - - - - - - - - - - - - - - - - - - - -module.exports = { - - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - - - // "h-735-1000-100": [{"type": "func","func": start_skills}], - - - "s-735-1000-111-0": [{"type": "text","sub_type": "message","message": "BACK ATTACK","message_RU": "Удар назад" }], - "s-735-1000-112-0": [{"type": "text","sub_type": "message","message": "BACK ATTACK","message_RU": "Удар назад" }], - "s-735-1000-205-0": [{"type": "text","sub_type": "message","message": "wind","message_RU": "Ветер!!!" }], - "s-735-1000-304-0": [{"type": "text","sub_type": "message","message": "OUT","message_RU": "От" }], - "s-735-1000-305-0": [{"type": "text","sub_type": "message","message": "IN","message_RU": "К" }], - "s-735-1000-306-0": [{"type": "text","sub_type": "message","message": "Incoming Summon","message_RU": "Бомбы!!!" }], - "s-735-1000-307-0": [{"type": "text","sub_type": "message","message": "PULL","message_RU": "Стяжка!!!" }], - - "s-735-1000-309-0": [ - {"type": "text","sub_type": "message","message": "Four missile launches were initiated","message_RU": "Было произведено четыре ракетных пуска!!!" }, - {"type": "text","sub_type": "message","delay": 7000,"message": "5", "message_RU": "5"}, - {"type": "text","sub_type": "message","delay": 8000,"message": "4", "message_RU": "4"}, - {"type": "text","sub_type": "message","delay": 9000,"message": "3", "message_RU": "3"}, - {"type": "text","sub_type": "message","delay": 10000,"message": "2", "message_RU": "2"}, - {"type": "text","sub_type": "message","delay": 11000,"message": "1", "message_RU": "1"}, - {"type": "text","sub_type": "message","delay": 12000,"message": "JUMP", "message_RU": "Прыгай!!!"} -], -//------------------------------------2王 - -"s-735-2000-102-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_RU": "Пила(Эвейд)"}], -"s-735-2000-108-0": [{"type": "text","sub_type": "message","message": "back","message_RU": "Откид назад"}], -"s-735-2000-301-0": [{"type": "text","sub_type": "message","message": "throws","message_RU": "Бомба"}], -"s-735-2000-304-0": [{"type": "text","sub_type": "message","message": "OUT","message_RU": "От"}], -//------------------------------------3王 -//s拳 -"s-735-3000-116-0": [{"type": "text","sub_type": "message","message": "RIGHT →↘","message_RU": "Справа"}], -"s-735-3000-119-0": [{"type": "text","sub_type": "message","message": "RIGHT →↘","message_RU": "Справа"}], -"s-735-3000-118-0": [{"type": "text","sub_type": "message","message": "LEFT ←↙","message_RU": "Слева"}], -"s-735-3000-117-0": [{"type": "text","sub_type": "message","message": "LEFT ←↙","message_RU": "Слева"}], -"s-735-3000-129-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "dodge","message_RU": "Эвейд"}], - - "s-735-3000-321-0": [ - {"type": "text","sub_type": "message","message": "SHIELD!","message_RU": "Щит!!!" }, - {"type": "text","sub_type": "message","delay": 90000,"message": "After 10s SHIELD! ", "message_RU": "Через 10 сек. щит!!!"} - ], - - -//出去 -"s-735-3000-324-0": [{"type": "text","sub_type": "message","message": "get out↓","message_RU": "Эвейд"}] - }; \ No newline at end of file diff --git a/guides/9739.js b/guides/9739.js new file mode 100644 index 00000000..6d1ef4f4 --- /dev/null +++ b/guides/9739.js @@ -0,0 +1,95 @@ +// Red Refuge +// +// made by multarix + +module.exports = (dispatch, handlers, guide, lang) => { + return { + // 1 BOSS + "nd-739-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-739-1000-105-0": [{ type: "text", sub_type: "message", message: "Turn + Breath", message_RU: "Поворот + дыхание" }], + "s-739-1000-308-0": [ + { type: "text", sub_type: "message", message: "In > Out", message_RU: "К нему > От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 7500] } + ], + "s-739-1000-308-1": [{ type: "text", sub_type: "message", message: "Out", message_RU: "От него" }], + "s-739-1000-112-0": [{ type: "text", sub_type: "message", message: "Back Spray", message_RU: "Волна назад" }], + "s-739-1000-107-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-739-1000-306-0": [ + { type: "text", sub_type: "message", message: "Out > In", message_RU: "От него > К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 7500] } + ], + "s-739-1000-306-1": [{ type: "text", sub_type: "message", message: "In", message_RU: "К нему" }], + + // 2 BOSS + "nd-739-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-739-2000-105-0": [ + { type: "text", sub_type: "message", message: "360", message_RU: "360" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 2500] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 510, 0, 2500] } + ], + "s-739-2000-113-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "s-739-2000-108-0": [ + { type: "text", sub_type: "message", message: "Cleanse", message_RU: "Клинс", class_position: "heal" }, + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка", class_position: ["tank", "dps"] } + ], + "s-739-2000-115-0": [ + { type: "text", sub_type: "message", message: "Whirlwind", message_RU: "Вихрь" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 360, 0, 6500] } + ], + "s-739-2000-119-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Спереди" }], + "s-739-2000-120-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Сзади" }], + "s-739-2000-303-0": [ + { type: "text", sub_type: "message", message: "Whip", message_RU: "Кнут" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1650 } + ], + + // 3 BOSS + "nd-739-3001": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-739-3001-30": [{ type: "text", sub_type: "message", message: "Reveal soon...", message_RU: "Скоро разоблачение..." }], + "s-739-3001-201-0": [ + { type: "text", sub_type: "message", message: "Stun (Pushback)", message_RU: "Рёв (откид)" }, + { type: "text", sub_type: "message", delay: 1000, message: "3" }, + { type: "text", sub_type: "message", delay: 2000, message: "2" }, + { type: "text", sub_type: "message", delay: 3000, message: "1" }, + { type: "text", sub_type: "message", delay: 4000, message: "Dodge!", message_RU: "Эвейд!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 630, 0, 5000] } + ], + "s-739-3001-107-0": [{ type: "text", sub_type: "message", message: "Many Hits", message_RU: "Несколько ударов" }], + "s-739-3001-112-0": [{ type: "text", sub_type: "message", message: "Target", message_RU: "Таргет" }], + "s-739-3001-115-0": [ + { type: "text", sub_type: "message", message: "Incoming Stun", message_RU: "Рёв" }, + { type: "text", sub_type: "message", delay: 1800, message: "Dodge!", message_RU: "Эвейд!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 630, 0, 4000] } + ], + "s-739-3001-118-0": [{ type: "text", sub_type: "message", message: "Scratching", message_RU: "Крутилка" }], + "s-739-3001-164-0": [{ type: "text", sub_type: "message", message: "Counter Attack (bleed)", message_RU: "Отпрыжка (кровоток)" }], + "s-739-3001-167-0": [{ type: "text", sub_type: "message", message: "Many Hits", message_RU: "Несколько ударов" }], + "s-739-3001-172-0": "s-739-3001-112-0", + "s-739-3001-301-0": "s-739-3001-112-0", + "s-739-3001-302-0": "s-739-3001-112-0", + "s-739-3001-170-0": [ + { type: "text", sub_type: "message", message: "Turn + Pushback", message_RU: "Разворот + Откид" }, + { type: "text", sub_type: "message", message: "Pushback", message_RU: "Откид", delay: 2700 } + ], + "s-739-3001-175-0": [ + { type: "text", sub_type: "message", message: "Incoming Stun", message_RU: "Рёв" }, + { type: "text", sub_type: "message", delay: 1800, message: "Dodge!", message_RU: "Эвейд!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 630, 0, 4000] } + ], + "s-739-3001-177-0": [{ type: "text", sub_type: "message", message: "Backstab", message_RU: "Назад + Вперед" }], + "s-739-3001-178-0": [{ type: "text", sub_type: "message", message: "Scratching (bleed)", message_RU: "Крутилка (кровоток)" }], + "s-739-3001-203-0": [{ type: "text", sub_type: "message", message: "Phantom x3 (bleed)", message_RU: "Прыжки x3 (кровоток)" }], + "s-739-3001-207-0": [{ type: "text", sub_type: "message", message: "Phantom x5 (bleed)", message_RU: "Прыжки x5 (кровоток)" }], + "s-739-3001-213-0": [{ type: "text", sub_type: "message", message: "Reveal | Phantom (bleed)", message_RU: "Разоблачение | Прыжки (кровоток)" }], + "s-739-3001-212-0": [{ type: "text", sub_type: "message", message: "Flash", message_RU: "Байт" }] + }; +}; \ No newline at end of file diff --git a/guides/9750.js b/guides/9750.js index 703aa931..5a8e0519 100644 --- a/guides/9750.js +++ b/guides/9750.js @@ -1,262 +1,84 @@ -// 火神 -//made by michengs -let notice_guide = true; -let player, entity, library, effect; -let shining = false; -let skill = 0; -let print = false; -let notice = true; -let notices = true; -let printend = false; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); +// Rift"s Edge (10-Person) +// +// made by ITunk -handlers['text']({ -"sub_type": "notification", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); -} -notice_guide = false; +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; -} - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } -function SpawnThingobject( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "巴哈勒", - "message": "王坐方向" - }, {loc: shield_loc}); -} + return { + // 1 BOSS + "nd-750-1001": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-750-1001-1102-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 375, 0, 3300] } + ], + "s-750-1001-1115-0": [ + { type: "text", sub_type: "message", message: "Floor", message_RU: "Атака в пол" }, + { type: "spawn", func: "vector", args: [553, 50, 75, 0, 700, 0, 1400] }, + { type: "spawn", func: "vector", args: [553, -50, 75, 0, 700, 0, 1400] } + ], + "s-750-1001-1116-1": [ + { type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }, + { type: "spawn", func: "vector", args: [553, 90, 125, 0, 1200, 0, 1600] }, + { type: "spawn", func: "vector", args: [553, 270, 125, 0, 1200, 0, 1600] } + ], + "s-750-1001-2102-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 375, 0, 2900] } + ], + "s-750-1001-2115-0": [ + { type: "text", sub_type: "message", message: "Floor", message_RU: "Атака в пол" }, + { type: "spawn", func: "vector", args: [553, 25, 75, 0, 700, 0, 1200] }, + { type: "spawn", func: "vector", args: [553, -25, 75, 0, 700, 0, 1200] } + ], + "s-750-1001-2116-1": [ + { type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }, + { type: "spawn", func: "vector", args: [553, 90, 125, 0, 1200, 0, 1600] }, + { type: "spawn", func: "vector", args: [553, 270, 125, 0, 1200, 0, 1600] } + ], - -// 召喚光柱 ,告示牌提示( 角度 距离 延迟时间 时间) -function SpawnThing( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "SAFE SPOT", - "message": "SAFE" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} -// 召喚点 ,提示( 提示标志 角度 距离 延迟时间 时间) -function Spawnitem( item,degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} - - //构建直线(提示标志 偏移角度 偏移距离 角度 最远距离 时间) -function Spawnitem1(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - - -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - "s-750-1001-1101-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1101巨型虫植物前方触水攻击atk 01老马" }], - "s-750-1001-1102-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "旋转攻击" }], - "s-750-1001-1103-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1103巨型虫植物地板触水攻击heavyatk 01老马" }], - "s-750-1001-1104-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1104巨型虫植物根传唤攻击longAtk 01老话" }], - "s-750-1001-1105-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "远离" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,375,100,4000)}], - "s-750-1001-1106-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1106巨型虫植物右转攻击roundAtk 01老话" }], - "s-750-1001-1107-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1107巨型虫植物左转攻击roundAtk 02" }], - "s-750-1001-1108-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1108巨大食用物赞助动作1spSummon 01老话" }], - "s-750-1001-1109-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "準備遠離" }], - "s-750-1001-1110-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "擊倒" }], - "s-750-1001-1301-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "1301巨大虫植物大气wait" }], - "s-750-1001-2101-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2101巨大虫植物前方触水攻击atk 01愤怒" }], - "s-750-1001-2102-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "旋转攻击" }], - "s-750-1001-2103-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2103巨型虫植物地板触水攻击heavyatk 01愤怒" }], - "s-750-1001-2104-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2104巨型虫植物根传唤攻击longAtk 01愤怒" }], - "s-750-1001-2105-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "远离" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,375,100,4000)}], - "s-750-1001-2106-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2106巨大虫植物右转攻击roundAtk 01愤怒" }], - "s-750-1001-2107-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2107巨大食虫植物左转攻击roundAtk 02愤怒" }], - "s-750-1001-2108-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "2108巨大食用物赞助动作1spSummon 01愤怒" }], - "s-750-1001-2109-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "準備遠離" }], - "s-750-1001-2110-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "擊倒" }], - - -//-----------------------------------------------------------------------------------------------------2 - "s-750-45016-1308-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "圈" }, - {"type": "func","func": Spawnitem2.bind(null,445,0,0,8,375,100,6000)}], - -"s-750-1002-1101-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂右手攻击atk 01老话" }], -"s-750-1002-1102-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂左手拍攻击atk 02老话" }], -"s-750-1002-1103-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "用巨型马蜂前脚进行蜂箱旋转攻击heavyAtkcomboatk 01" }], -"s-750-1002-1105-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "用巨型马蜂的前锋攻击heavyAtk 03老末" }], -"s-750-1002-1106-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂空中飞来发射毒针的longAtk老马" }], -"s-750-1002-1107-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "飞天攻击" }], -"s-750-1002-1109-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂左转攻击roundAtk 01老话" }], -"s-750-1002-1110-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂右转攻击roundAtk 02" }], -"s-750-1002-1151-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂活动activemove nove" }], -"s-750-1002-1201-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm" }], -"s-750-1002-1202-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨马蜂巢longMove nove" }], -"s-750-1002-1203-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂grogy" }], -"s-750-1002-1204-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂逃跑runAway" }], -"s-750-1002-1301-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂待机动作" }], -"s-750-1002-1302-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的马蜂不可保障的50%" }], -"s-750-1002-1303-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式闹钟modeAlarm老马2" }], -"s-750-1002-1304-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马3" }], -"s-750-1002-1305-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老话4" }], -"s-750-1002-1306-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马5" }], -"s-750-1002-1307-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马6" }], -"s-750-1002-1308-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马7" }], -"s-750-1002-1309-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂模式闹钟modeAlarm老话8" }], -"s-750-1002-1310-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马9" }], -"s-750-1002-1311-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm老马10" }], -"s-750-1002-2101-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂右手攻击atk 01愤怒" }], -"s-750-1002-2102-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂左手拍攻击atk 02愤怒" }], -"s-750-1002-2103-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "用巨型马蜂前脚进行蜂箱旋转攻击heavyAtkcomboatk 01" }], -"s-750-1002-2105-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "用巨型马蜂的前锋攻击heavyAtk 03愤怒" }], -"s-750-1002-2106-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂空中飞来发射毒针的longAtk愤怒" }], -"s-750-1002-2107-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "飞天攻击" }], -"s-750-1002-2109-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂左转攻击roundAtk 01愤怒" }], -"s-750-1002-2110-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂右转攻击roundAtk 02愤怒" }], -"s-750-1002-2151-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂活动activeMove愤怒" }], -"s-750-1002-2201-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂模式提醒modeAlarm愤怒" }], -"s-750-1002-2202-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的马蜂longMove愤怒" }], -"s-750-1002-2203-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂grogy" }], -"s-750-1002-2204-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大马蜂逃跑runAway" }], -"s-750-1002-2301-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨型马蜂待机动作" }], -"s-750-1002-2302-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的马蜂不可保障的50%" }], - "s-750-1002-1108-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "壓人" }], - "s-750-1002-2108-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "壓人" }], - "s-750-1002-2104-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "拉人" }, - {"type": "text","sub_type": "message","delay": 3000,"message": 'Perfect Defense',"message_TW": "閃避" }], - "s-750-1002-1104-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "拉人" }, - {"type": "text","sub_type": "message","delay": 3000,"message": 'Perfect Defense',"message_TW": "閃避" }], - - -"s-750-1003-1101-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟角攻击Atk 01老马" }], -"s-750-1003-1102-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟角角角拍Atk 02" }], -"s-750-1003-1103-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟子下角拍发射体老马" }], -"s-750-1003-1104-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟左面攻击roundAtk 01老马" }], -"s-750-1003-1105-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟右面攻击roundAtk 02" }], -"s-750-1003-1106-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟攻击空中攻击heavyatk01comboatk 01老话" }], -"s-750-1003-1107-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟粉尘攻击heavyatk01comboatk 02老话" }], -"s-750-1003-1108-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟前方石堆longAtk 01老马" }], -"s-750-1003-1109-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟前方石堆发射体longAtk 01老马" }], -"s-750-1003-1110-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "掷巨金龟追踪型石块longAtk 02" }], -"s-750-1003-1111-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟抛出追踪型石块的发射体longAtk 02匹马" }], -"s-750-1003-1112-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟愤怒时奋进攻击modealarm" }], -"s-750-1003-1113-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟部下Monster spAtk01End 01" }], -"s-750-1003-1114-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟攻击气体spatk02End 02" }], -"s-750-1003-1151-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟是Active activetiveMove" }], -"s-750-1003-1201-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟长款MongMove nove" }], -"s-750-1003-1202-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟grogy" }], -"s-750-1003-1203-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟逃跑runAway" }], -"s-750-1003-1204-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟2招待期" }], -"s-750-1003-1205-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟扑通" }], -"s-750-1003-1301-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟子光逆1打" }], -"s-750-1003-1302-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟子光逆2打" }], -"s-750-1003-1303-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟是光逆冲击3打" }], -"s-750-1003-1304-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟攻击前方斯顿" }], -"s-750-1003-1305-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟远程也攻击你" }], -"s-750-1003-1306-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "远离" }], -"s-750-1003-1307-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟3段落雷技能" }], -"s-750-1003-1308-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "诱发巨大金龟的反应" }], -"s-750-1003-1309-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "破盾" }], -"s-750-1003-1310-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟反应" }], -"s-750-1003-2101-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟角攻击Atk 01愤怒" }], -"s-750-1003-2102-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟角角角角拍Atk 02愤怒" }], -"s-750-1003-2103-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟角角角下拍发射体愤怒" }], -"s-750-1003-2104-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟左面攻击roundAtk 01愤怒" }], -"s-750-1003-2105-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟右侧攻击roundAtk 02愤怒" }], -"s-750-1003-2106-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟攻击空中轰炸攻击heavyatk01comboatk 01愤怒" }], -"s-750-1003-2107-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟粉尘攻击heavyatk01comboatk 02愤怒" }], -"s-750-1003-2108-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟前方石堆longAtk 01愤怒" }], -"s-750-1003-2109-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟前方石堆发射体longAtk 01愤怒" }], -"s-750-1003-2110-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "将巨大的金龟抛出追踪型石头的longAtk 02愤怒" }], -"s-750-1003-2111-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟抛出追踪型石块的发射体longAtk 02愤怒" }], -"s-750-1003-2112-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟愤怒的攻击modealarm愤怒" }], -"s-750-1003-2113-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟部下Monster spAtk01End 01" }], -"s-750-1003-2114-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟攻击气体spatk02愤怒" }], -"s-750-1003-2151-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟是Active activetiveMove愤怒" }], -"s-750-1003-2201-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大金龟长款MongMove愤怒" }], -"s-750-1003-2301-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "打水晶柱" }], -"s-750-1003-2302-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟子光逆2打" }], -"s-750-1003-2303-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟是光逆冲击3打" }], -"s-750-1003-2304-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟攻击前方斯顿" }], -"s-750-1003-2305-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟远程也攻击你" }], -"s-750-1003-2306-0": [{"type": "text","sub_type": "message","message": '_',"message_TW": "远离" }], -"s-750-1003-2307-0": [{"type": "text","sub_type": "MSG","message": '_',"message_TW": "巨大的金龟3段落雷技能" }] - + // 2 BOSS + "nd-750-1002": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-750-1002-1113-0": [{ type: "text", sub_type: "message", message: "Discarding", message_RU: "Три откида" }], + "s-750-1002-2113-0": [{ type: "text", sub_type: "message", message: "Discarding", message_RU: "Три откида" }], + "s-750-1002-1114-0": [{ type: "text", sub_type: "message", message: "Discarding", message_RU: "Три откида" }], + "s-750-1002-2114-0": [{ type: "text", sub_type: "message", message: "Discarding", message_RU: "Три откида" }], + "s-750-1002-1115-0": [{ type: "text", sub_type: "message", message: "Flying Attack", message_RU: "Летающая атака" }], + "s-750-1002-2115-0": [{ type: "text", sub_type: "message", message: "Flying Attack", message_RU: "Летающая атака" }], + "s-750-1002-1116-0": [{ type: "text", sub_type: "message", message: "A swarm of bees", message_RU: "Рой пчел" }], + "s-750-1002-2116-0": [{ type: "text", sub_type: "message", message: "A swarm of bees", message_RU: "Рой пчел" }], + "s-750-1002-1117-0": [{ type: "text", sub_type: "message", message: "Rise (Kaia)", message_RU: "Взлет (Кайя)" }], + "s-750-1002-2117-0": [{ type: "text", sub_type: "message", message: "Rise (Kaia)", message_RU: "Взлет (Кайя)" }], + "s-750-1002-1205-0": [ + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/Регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ], + "s-750-1002-1210-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-750-1002-2210-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + // 3 BOSS + "nd-750-1003": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-750-1003-1107-2": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-750-1003-2107-2": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-750-1003-1115-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-750-1003-2115-0": [{ type: "text", sub_type: "message", message: "Knockdown", message_RU: "Опрокид" }], + "s-750-1003-1313-0": [ + { type: "text", sub_type: "message", message: "Column", message_RU: "Колонна" }, + { type: "text", sub_type: "message", delay: 8000, message: "Dodge", message_RU: "Эвейд" } + ], + "s-750-1003-1315-0": [ + { type: "text", sub_type: "message", message: "Break Shield", message_RU: "Сломать щит", class_position: ["tank", "dps"] }, + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/Регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ] + }; }; \ No newline at end of file diff --git a/guides/9754.js b/guides/9754.js index b5ed0fac..adb4c31b 100644 --- a/guides/9754.js +++ b/guides/9754.js @@ -1,140 +1,91 @@ - -//made by michengs - -let player, entity, library, effect; - - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay,times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - //构建直线(提示标志 偏移角度 偏移距离 角度 最远距离 时间) -function Spawnitem1(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - -function SpawnThing5( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "球形闪电", - "message": "球形闪电" - }, {loc: shield_loc}); -} -function SpawnThing6( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "水墙背面", - "message": "水墙背面" - }, {loc: shield_loc}); -} -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - -"s-754-1000-1103-0": [{"type": "text","sub_type": "message","message": "Head Slam! (Slow)","message_TW": "头砸 (慢)"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,200,15,275,0,4000)} - - -], -"s-754-1000-2103-0": [{"type": "text","sub_type": "message","message": "Head Slam! (Fast)","message_TW": "头砸 (快)"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,200,15,275,0,4000)}], -"s-754-1000-2104-0": [{"type": "text","sub_type": "message","message": "Spin get out (Fast)","message_TW": "旋出(快)"}], -"s-754-1000-1104-0": [{"type": "text","sub_type": "message","message": "Spin get out (Slow)","message_TW": "旋出(慢)"}], -"s-754-1000-1201-0": [{"type": "text","sub_type": "message","message": "Body Slam!","message_TW": "身体撞击"}], -"s-754-1000-2105-0": [{"type": "text","sub_type": "message","message": "Get in","message_TW": "进入"}], -"s-754-1000-3104-0": [{"type": "text","sub_type": "message","message": "SHIELD!","message_TW": "破盾"}], - - - - -"s-754-1001-1104-0": [{"type": "text","sub_type": "message","message": "Frontal Spin!","message_TW": "正面旋转!"}], -"s-754-1001-2104-0": [{"type": "text","sub_type": "message","message": "Frontal Spin!","message_TW": "正面旋转!"}], -"s-754-1001-1110-0": [{"type": "text","sub_type": "message","message": "Cyclone! (Slow)","message_TW": "旋风!(慢)"}], -"s-754-1001-2110-0": [{"type": "text","sub_type": "message","message": "Cyclone! (Fast)","message_TW": "旋风!(快)"}], -"s-754-1001-2102-0": [{"type": "text","sub_type": "message","message": "Back Flip (Fast)","message_TW": "后翻(快)"}], -"s-754-1001-1102-0": [{"type": "text","sub_type": "message","message": "Back Flip (Slow)","message_TW": "后翻(慢)"}], -"s-754-1001-2105-0": [{"type": "text","sub_type": "message","message": "Tail","message_TW": "尾巴"}], -//------------------------------------------------------------------------------------------------------------- - -"dm-0-0-905420": [{"type": "text","sub_type": "message","message": "Water wall","message_TW": "水墙检定"}], -"s-754-403-1101-0": [{"type": "text","sub_type": "message","message_TW": "墻"}, - {"type": "func","func": SpawnThing6.bind(null,500, 180, 100, 9000)}], -"qb-754-1000-454012": [{"type": "text","sub_type": "message","message": "Fix the SLATE","message_TW": "修石板"}], -"qb-754-1002-454001": [{"type": "text","sub_type": "message","message_TW": "电球"}], -"qb-754-305-454005": [{"type": "text","sub_type": "message","message_TW": "水浪检定"}], -"qb-754-306-454006": [{"type": "text","sub_type": "message","message_TW": "水浪检定"}], -"qb-754-307-454007": [{"type": "text","sub_type": "message","message_TW": "水浪检定"}], - -"s-754-100-1101-0": [{"type": "text","sub_type": "message","message": "electric ball","message_TW": "召喚电球"}, - {"type": "func","func": SpawnThing5.bind(null,0, 0, 10, 3000)}], - -"s-754-106-3201-0": [{"type": "text","sub_type": "message","message": "1","message_TW": "1"}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,2200,11000)}], -"s-754-107-3202-0": [{"type": "text","sub_type": "message","message": "2","message_TW": "2"}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,2200,11000)}], -"s-754-108-3203-0": [{"type": "text","sub_type": "message","message": "3","message_TW": "3"}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,2200,11000)}], -"s-754-109-3204-0": [{"type": "text","sub_type": "message","message": "4","message_TW": "4"}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,2200,11000)}], - - -"s-754-1002-1107-0": [{"type": "text","sub_type": "message","message": "Back Hit! (Slow)","message_TW": "后击!(慢)"}], -"s-754-1002-2107-0": [{"type": "text","sub_type": "message","message": "Back Hit! (Fast)","message_TW": "后击!(快)"}], -"s-754-1002-1112-0": [{"type": "text","sub_type": "message","message": "Jump (Slow)","message_TW": "跳跃(慢)"}], -"s-754-1002-2112-0": [{"type": "text","sub_type": "message","message": "Jump (Fast)","message_TW": "跳跃(快)"}], -"s-754-1002-3105-0": [{"type": "text","sub_type": "message","message": "Get in","message_TW": "进"}], -"s-754-1002-3117-0": [{"type": "text","sub_type": "message","message": "In Out In","message_TW": "进 出 进"}, - {"type": "func","func": Spawnitem2.bind(null,513,0,0,15,275,0,10000)}], -"s-754-1002-3110-0": [{"type": "text","sub_type": "message","message": "Pizza mech","message_TW": "披萨机制"}] - - -}; - +// Bathysmal Rise +// +// made by michengs / Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + return { + // 1 BOSS + "s-754-1000-1101-0": [{ type: "text", sub_type: "message", message_RU: "Лево", message: "Left" }], + "s-754-1000-1102-0": [{ type: "text", sub_type: "message", message_RU: "Право", message: "Right" }], + "s-754-1000-1103-0": [{ type: "text", sub_type: "message", message_RU: "Удар головой!", message: "Head Slam!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 200, 12, 275, 0, 4000] } + ], + "s-754-1000-1105-0": [{ type: "text", sub_type: "message", message_RU: "К нему", message: "Get In" }], + "s-754-1000-1106-0": [{ type: "text", sub_type: "message", message_RU: "Круг", message: "Random Circle" }], + "s-454-1000-1108-0": [{ type: "text", sub_type: "message", message_RU: "Левая сторона", message: "Left Side" }], + "s-454-1000-1109-0": [{ type: "text", sub_type: "message", message_RU: "Правая сторона", message: "Right Side" }], + "s-754-1000-2101-0": "s-754-1000-1101-0", + "s-754-1000-2102-0": "s-754-1000-1102-0", + "s-754-1000-2103-0": "s-754-1000-1103-0", + "s-754-1000-2105-0": "s-754-1000-1105-0", + "s-754-1000-2106-0": "s-754-1000-1106-0", + "s-454-1000-2108-0": "s-454-1000-1108-0", + "s-454-1000-2109-0": "s-454-1000-1109-0", + "s-754-1000-3101-0": [{ type: "text", sub_type: "message", message_RU: "Камни разрушены", message: "Rocks Destroyed" }], + "s-754-1000-3103-0": [{ type: "text", sub_type: "message", message_RU: "Опрокинуть босса", message: "Knock Down Boss" }], + + // 2 BOSS + //"s-754-1001-1101-0": [{ type: "text", sub_type: "message", message_RU: "Передняя", message: "Frontal Attack" }], + //"s-754-1001-1102-0": [{ type: "text", sub_type: "message", message_RU: "Сальто назад (быстро)", message: "Back Flip (Fast)" }], + "s-754-1001-1104-0": [{ type: "text", sub_type: "message", message_RU: "Передняя крутилка!", message: "Frontal Spin!" }], + "s-754-1001-1105-0": [{ type: "text", sub_type: "message", message_RU: "Хвост", message: "Tail" }], + "s-754-1001-1108-0": [{ type: "text", sub_type: "message", message_RU: "Яд", message: "Random Poison" }], + "s-754-1001-1109-0": [{ type: "text", sub_type: "message", message_RU: "Притяжка + Яд", message: "Pull + Poison" }, + { type: "text", sub_type: "message", "delay": 1500, message_RU: "Вспышка", message: "Flash" } + ], + "s-754-1001-1110-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка! (медленно)", message: "Spin! (Slow)" }], + "s-754-1001-1113-0": [{ type: "text", sub_type: "message", message_RU: "Лужа", message: "Slime Puddle" }], + "s-754-1001-1111-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка с выпадом", message: "Spin Lunge Attack" }], + //"s-754-1001-2101-0": "s-754-1001-1101-0", + //"s-754-1001-2102-0": "s-754-1001-1102-0", + "s-754-1001-2104-0": "s-754-1001-1104-0", + "s-754-1001-2105-0": "s-754-1001-1105-0", + "s-754-1001-2108-0": "s-754-1001-1108-0", + "s-754-1001-2110-0": "s-754-1001-1110-0", + "s-754-1001-2109-0": "s-754-1001-1109-0", + "s-754-1001-2113-0": "s-754-1001-1113-0", + "s-754-1001-2111-0": "s-754-1001-1111-0", + + "s-754-1001-3103-0": [{ type: "text", sub_type: "message", message_RU: "Опрокинуть босса", message: "Knock Down Boss" }], + "s-754-1001-3105-0": [{ type: "text", sub_type: "message", message_RU: "Яд", message: "Poison" }], + "s-754-1001-3102-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок + Волна", message: "Big Jump + Wave" }], + "s-754-403-1101-0": [{ type: "text", sub_type: "message", message_RU: "Водяная стена (разбить)", message: "Water Wall (Breake)" }, + { type: "spawn", func: "marker", args: [false, 500, 180, 100, 9000] } + ], + + // 3 BOSS + "s-754-1002-1102-0": [{ type: "text", sub_type: "message", message_RU: "Передняя атака", message: "Frontal Attack" }], + "s-754-1002-1104-0": [{ type: "text", sub_type: "message", message_RU: "Бублик (внутрь)", message: "Donut (In)" }], + "s-754-1002-1107-0": [{ type: "text", sub_type: "message", message_RU: "Задний удар (быстро)", message: "Back Hit! (Fast)" }], + "s-754-1002-1108-0": [{ type: "text", sub_type: "message", message_RU: "Задний удар", message: "Back Hit" }], + "s-754-1002-1112-0": [{ type: "text", sub_type: "message", message_RU: "Сальто (быстро)", message: "Jump (Fast)" }], + "s-754-1002-1106-0": [{ type: "text", sub_type: "message", message_RU: "Левая атака", message: "Left Attack" }], + "s-754-1002-1110-0": [{ type: "text", sub_type: "message", message_RU: "Шестерни", message: "Gear Sweep" }], + "s-754-1002-2102-0": "s-754-1002-1102-0", + "s-754-1002-2104-0": "s-754-1002-1104-0", + "s-754-1002-2107-0": "s-754-1002-1107-0", + "s-754-1002-2108-0": "s-754-1002-1108-0", + "s-754-1002-2112-0": "s-754-1002-1112-0", + "s-754-1002-2106-0": "s-754-1002-1106-0", + "s-754-1002-2110-0": "s-754-1002-1110-0", + + "s-754-1002-3105-0": [{ type: "text", sub_type: "message", message_RU: "К нему", message: "Get In" }], + "s-754-1002-3117-0": [{ type: "text", sub_type: "message", message_RU: "К нему - От него - К нему", message: "In - Out - In" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 12, 290, 0, 10000] } + ], + "s-754-1002-3106-0": [{ type: "text", sub_type: "message", message_RU: "Резка завершена (выйти)", message: "Cut Completed (Get Out)" }], + "s-754-1002-3113-0": [{ type: "text", sub_type: "message", message_RU: "СЛОМАТЬ ЩИТ", message: "BREAKE SHIELD" }], + + "s-754-1002-3119-0": [{ type: "text", sub_type: "message", message_RU: "Волна (на центр)", message: "Wave Attack (Go Center)" }], + "qb-754-1002-754001": [{ type: "text", sub_type: "alert", message_RU: "Электрическая сфера", message: "Electric Ball" }, + { type: "text", sub_type: "alert", "delay": 45000, message_RU: "Электрическая сфера готова", message: "Electric Ball Ready" } + ], + // Special attacks + "s-754-100-1101-0": [ + // { type: "text", sub_type: "notification", message_RU: "Сфера (держить дальше)", message: "Ball (Stay Away)" }, + { type: "spawn", func: "marker", args: [false, 0, 0, 100, 3000] } + ] + }; +}; \ No newline at end of file diff --git a/guides/9756.js b/guides/9756.js new file mode 100644 index 00000000..595beb69 --- /dev/null +++ b/guides/9756.js @@ -0,0 +1,177 @@ +// Timescape +// +// made by HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = ES; + + const third_boss_sun_w = -2; + const third_boss_daemon_w = 0; + const third_boss_goddess_w = 2; + let third_boss_wall_w = null; + let third_boss_small_w = null; + let third_boss_middle_w = null; + let third_boss_large_w = null; + let third_boss_small_game_id = null; + let third_boss_middle_game_id = null; + let third_boss_large_game_id = null; + + function w_to_deg(radians) { + if (radians == 0) return 0; + if (radians == 2) return 120; + if (radians == -2) return 240; + } + + function calc_step(a, b, reverse = false) { + if (a === b) return 0; + let diff = w_to_deg(b) - w_to_deg(a); + if (diff <= 0) diff += 360; + if (reverse) return diff > 120 ? 1 : 2; + return diff > 120 ? 2 : 1; + } + + function third_boss_wall_announce() { + const small = calc_step(third_boss_small_w, third_boss_wall_w); + const middle = calc_step(third_boss_middle_w, third_boss_wall_w, true); + const large = calc_step(third_boss_large_w, third_boss_wall_w); + if (small + middle + large === 0) { + handlers.text({ + sub_type: "notification", + message: "Set", + message_RU: "Установлено", + speech: false + }); + } else { + handlers.text({ + sub_type: "notification", + message: `Small: ${small}, Middle: ${middle}, Large: ${large}`, + message_RU: `Малый: ${small}, Средний: ${middle}, Большой: ${large}`, + speech: false + }); + } + } + + dispatch.hook("S_SPAWN_NPC", "*", e => { + if (e.templateId === 243) { + third_boss_wall_w = third_boss_sun_w; + handlers.event([ + { type: "text", sub_type: "alert", message: "Wall Change (Sun)", message_RU: "Смена печати (Солнце)" }, + { type: "func", func: third_boss_wall_announce, delay: 2000 } + ]); + } + if (e.templateId === 244) { + third_boss_wall_w = third_boss_daemon_w; + handlers.event([ + { type: "text", sub_type: "alert", message: "Wall Change (Demon)", message_RU: "Смена печати (Демон)" }, + { type: "func", func: third_boss_wall_announce, delay: 2000 } + ]); + } + if (e.templateId === 245) { + third_boss_wall_w = third_boss_goddess_w; + handlers.event([ + { type: "text", sub_type: "alert", message: "Wall Change (Goddess)", message_RU: "Смена печати (Богиня)" }, + { type: "func", func: third_boss_wall_announce, delay: 2000 } + ]); + } + if (e.templateId === 301) { + third_boss_small_game_id = e.gameId; + third_boss_small_w = parseInt(e.w); + } + if (e.templateId === 302) { + third_boss_middle_game_id = e.gameId; + third_boss_middle_w = parseInt(e.w); + } + if (e.templateId === 303) { + third_boss_large_game_id = e.gameId; + third_boss_large_w = parseInt(e.w); + } + }); + + dispatch.hook("S_CREATURE_ROTATE", "*", e => { + dispatch.setTimeout(() => { + if (e.gameId === third_boss_small_game_id) { + third_boss_small_w = parseInt(e.w); + third_boss_wall_announce(); + } + if (e.gameId === third_boss_middle_game_id) { + third_boss_middle_w = parseInt(e.w); + third_boss_wall_announce(); + } + if (e.gameId === third_boss_large_game_id) { + third_boss_large_w = parseInt(e.w); + third_boss_wall_announce(); + } + }, e.time + 100); + }); + + return { + // Boss 1 + "nd-756-401": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-756-401-104-0": [ + { type: "text", sub_type: "message", message: "Bomb", message_RU: "Бомба" }, + { type: "text", sub_type: "warning", message: "(1)", speech: false, delay: 550 }, + { type: "text", sub_type: "warning", message: "(2)", speech: false, delay: 1300 }, + { type: "text", sub_type: "warning", message: "(3)", speech: false, delay: 2050 }, + { type: "text", sub_type: "message", message: "(4) Dodge!", message_RU: "(4) Эвейд!", delay: 2800 } + ], + "s-756-1001-107-0": [{ type: "text", sub_type: "alert", message: "Shot", message_RU: "Выстрел" }], + "s-756-403-106-0": [{ type: "text", sub_type: "alert", message: "Circle", message_RU: "Круг" }], + "s-756-1001-103-0": [{ type: "text", sub_type: "alert", message: "Tail", message_RU: "Хвост" }], + "s-756-1001-101-0": [{ type: "text", sub_type: "alert", message: "Hit", message_RU: "Удар" }], + "s-756-1001-112-0": [{ type: "text", sub_type: "message", message: "Rotate", message_RU: "Разворот" }], + "s-756-1001-113-0": "s-756-1001-112-0", + "s-756-1001-111-0": [{ type: "text", sub_type: "message", message: "Flight", message_RU: "Взлет" }], + "s-756-1001-206-0": [{ type: "text", sub_type: "alert", message: "Pushback", message_RU: "Откид" }], + "qb-756-1001-456020": [{ type: "text", sub_type: "message", message: "Give stun", message_RU: "Дать стан" }], + + // Boss 2 + "nd-756-1002": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-756-1002-102-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-756-1002-103-0": [{ type: "text", sub_type: "message", message: "Combo", message_RU: "Комба" }], + "s-756-1002-104-0": [{ type: "text", sub_type: "message", message: "Shot (target)", message_RU: "Выстрел (таргет)" }], + "s-756-1002-107-0": [{ type: "text", sub_type: "message", message: "Many Pokes", message_RU: "Серия ударов" }], + "s-756-1002-110-0": [{ type: "text", sub_type: "message", message: "Clap", message_RU: "Удар вперед" }], + "s-756-1002-111-0": [{ type: "text", sub_type: "message", message: "Front | Jump Back", message_RU: "Удар вперед | Прыжок назад" }], + "s-756-1002-212-0": [{ type: "text", sub_type: "message", message: "Jump Back", message_RU: "Прыжок назад" }], + "s-756-1002-314-0": [{ type: "text", sub_type: "alert", message: "Lay Back", message_RU: "Кувырок назад" }], + "s-756-1002-315-0": [{ type: "text", sub_type: "alert", message: "Lay Front", message_RU: "Кувырок вперед" }], + "s-756-1002-319-0": [{ type: "text", sub_type: "alert", message: "Spin", message_RU: "Крутилка" }], + "s-756-1002-3110-0": [{ type: "text", sub_type: "message", message: "Breath", message_RU: "Дыхание" }], + "s-756-1002-3112-0": [{ type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ", delay: 4000 }], + + // Boss 3 + "nd-756-1003": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ab-756-1003-905607": [ + { type: "text", sub_type: "message", message: "Cleanse + Plague of Exhaustion", message_RU: "Клинс + регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Cleanse + Regression", message_RU: "Клинс + регресс", class_position: "mystic" } + ], + "s-756-1003-3101-0": [ + { type: "text", sub_type: "message", message: "Take a Circle", message_RU: "Взять бублик", check_func: () => third_boss_wall_w !== third_boss_middle_w }, + { type: "text", sub_type: "message", message: "Don't Take a Circle", message_RU: "Не брать бублик", check_func: () => third_boss_wall_w === third_boss_middle_w } + ], + "s-756-1003-103-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 340, 0, 5000] } + ], + "s-756-1003-104-0": [{ type: "text", sub_type: "message", message: "Clap", message_RU: "Удар вперед" }], + "s-756-1003-105-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Вперед" }], + "s-756-1003-105-1": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Назад" }], + "s-756-1003-107-0": [{ type: "text", sub_type: "message", message: "Swipe", message_RU: "Откид" }], + "s-756-1003-108-0": [{ type: "text", sub_type: "message", message: "Swipe", message_RU: "Откид" }], + "s-756-1003-109-0": [{ type: "text", sub_type: "message", message: "Breath (target)", message_RU: "Дыхание (таргет)" }], + "s-756-1003-111-0": [{ type: "text", sub_type: "message", message: "Leash (target)", message_RU: "Притяжка (таргет)" }], + "s-756-1003-3104-0": [{ type: "text", sub_type: "message", message: "Cage", message_RU: "Клетка" }], // 456016 + "s-756-1003-3108-0": [{ type: "text", sub_type: "message", message: "Waves", message_RU: "Волны" }], + "qb-756-1003-456015": [{ type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ" }], // 3103 + "qb-756-1003-456017": [{ type: "text", sub_type: "message", message: "Give Stun", message_RU: "Дать стан" }] // 3102 + }; +}; \ No newline at end of file diff --git a/guides/9757.js b/guides/9757.js new file mode 100644 index 00000000..2f8fa0f6 --- /dev/null +++ b/guides/9757.js @@ -0,0 +1,93 @@ +// Akeron's Inferno +// +// made by Emilia-s2 + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + return { + // 1 BOSS + "nd-757-1001": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-757-1001-1104-0": [{ type: "text", sub_type: "message", message_RU: "Правая рука (откид)", message: "Right Hand (Push)" }], + "s-757-1001-1117-0": [{ type: "text", sub_type: "message", message_RU: "Удар", message: "Kick (Smash)" }], + "s-757-1001-1118-0": [{ type: "text", sub_type: "message", message_RU: "Случайный прыжок", message: "Random Jump" }], + "s-757-1001-1116-0": [{ type: "text", sub_type: "message", message_RU: "Прыжки (танк)", message: "Jumps (Tank)" }], + "s-757-1001-1107-0": [{ type: "text", sub_type: "message", message_RU: "Передняя атака", message: "Front" }], + "s-757-1001-1206-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок назад", message: "Jump Back" }], + "s-757-1001-1109-0": [{ type: "text", sub_type: "message", message_RU: "Переднее АоЕ", message: "Front AoE" }], + "s-757-1001-1108-0": [{ type: "text", sub_type: "message", message_RU: "Случайный прыжок", message: "Random Jump" }], + "s-757-1001-2104-0": "s-757-1001-1104-0", + "s-757-1001-2117-0": "s-757-1001-1117-0", + "s-757-1001-2118-0": "s-757-1001-1118-0", + "s-757-1001-2116-0": "s-757-1001-1116-0", + "s-757-1001-2107-0": "s-757-1001-1107-0", + "s-757-1001-2206-0": "s-757-1001-1206-0", + "s-757-1001-2109-0": "s-757-1001-1109-0", + "s-757-1001-2108-0": "s-757-1001-1108-0", + + // 2 BOSS + "nd-757-1002": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-757-1002-1105-0": [{ type: "text", sub_type: "message", message_RU: "Огненное дыхание", message: "Fire Breath" }], + "s-757-1002-1108-0": [{ type: "text", sub_type: "message", message_RU: "Огненные бомбы (спереди)", message: "Fire Bombs" }], + "s-757-1002-1109-0": [{ type: "text", sub_type: "message", message_RU: "Плавание + Задняя", message: "Swim + Back Attack" }], + "s-757-1002-1206-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок + Случайная атака", message: "Jump + Random Target" }], + "s-757-1002-1204-0": [{ type: "text", sub_type: "message", message_RU: "Большое АоЕ", message: "Large AoE", delay: 3000 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 6, 630, 3000, 4000] } + ], + "s-757-1002-1107-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка", message: "Spin" }], + "s-757-1002-1106-1": [{ type: "text", sub_type: "message", message_RU: "АоЕ + Пламя", message: "AoE + Side Flames", delay: 3000 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 550, 3000, 4000] } + ], + "s-757-1002-1112-0": [{ type: "text", sub_type: "message", message_RU: "Огненные шары (таргет)", message: "Target Fireball" }], + "s-757-1002-2105-0": "s-757-1002-1105-0", + "s-757-1002-2108-0": "s-757-1002-1108-0", + "s-757-1002-2109-0": "s-757-1002-1109-0", + "s-757-1002-2206-0": "s-757-1002-1206-0", + "s-757-1002-2204-0": "s-757-1002-1204-0", + "s-757-1002-2107-0": "s-757-1002-1107-0", + "s-757-1002-2106-1": "s-757-1002-1106-1", + "s-757-1002-2112-0": "s-757-1002-1112-0", + + // 3 BOSS + "nd-757-1003": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-757-1003-1105-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ", message: "AoE" }], + "s-757-1003-1203-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка", message: "Spin Cut Attack" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 400, 100, 4000] } + ], + "s-757-1003-1110-0": [{ type: "text", sub_type: "message", message_RU: "Яд (круг)", message: "Poison (Circle)" }], + "s-757-1003-2105-0": "s-757-1003-1105-0", + "s-757-1003-2203-0": "s-757-1003-1203-0", + "s-757-1003-2110-0": "s-757-1003-1110-0", + + // 4 BOSS + "nd-757-1004": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-757-1004-1105-0": [{ type: "text", sub_type: "message", message_RU: "Передняя атака", message: "Frontal Hit" }], + "s-757-1004-1106-0": [{ type: "text", sub_type: "message", message_RU: "Случайный выстрел", message: "Random Shot" }], + "s-757-1004-1107-0": [{ type: "text", sub_type: "message", message_RU: "Случайный кнут", message: "Random Whip" }], + "s-757-1004-1108-0": [{ type: "text", sub_type: "message", message_RU: "Безопасные круги", message: "Earth Line" }], + "s-757-1004-1111-0": [{ type: "text", sub_type: "message", message_RU: "Линия земли", message: "Stomp Combo" }], + "s-757-1004-3108-0": [{ type: "text", sub_type: "message", message_RU: "Эвейд", message: "Dodge" }], + "s-757-1004-3105-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ атака", message: "AoE Attack" }], + "s-757-1004-3106-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ бублик", message: "Donut AoE" }], + "s-757-1004-3103-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ удар", message: "AoE Stomp" }], + "s-757-1004-4201-0": [{ type: "text", sub_type: "message", message_RU: "Лава", message: "Lava" }], + "qb-757-405-457016": [{ type: "text", sub_type: "message", message_RU: "ЩИТ", message: "SHIELD" }], + "s-757-1004-2105-0": "s-757-1004-1105-0", + "s-757-1004-2106-0": "s-757-1004-1106-0", + "s-757-1004-2107-0": "s-757-1004-1107-0", + "s-757-1004-2108-0": "s-757-1004-1108-0", + "s-757-1004-2111-0": "s-757-1004-1111-0" + }; +}; \ No newline at end of file diff --git a/guides/9759.js b/guides/9759.js index 68158ef7..0d16bb52 100644 --- a/guides/9759.js +++ b/guides/9759.js @@ -1,27 +1,105 @@ - -//made by michengs +// Forsaken Island (Hard) +// +// made by ITunk -let player, entity, library, effect; +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + return { + // 1 BOSS + "s-759-1001-1104-0": [{ type: "text", sub_type: "message", message: "Jump (Stun)", message_RU: "Прыжок (стан)" }], + "s-759-1001-2104-0": [{ type: "text", sub_type: "message", message: "Jump (Stun)", message_RU: "Прыжок (стан)" }], + "s-759-1001-1106-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-759-1001-2106-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-759-1001-3107-0": [ + { type: "text", sub_type: "message", message: "Front (Dodge)", message_RU: "Конус (эвейд)" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 10, 1000, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 350, 1000, 0, 1500] } + ], + "s-759-1001-3101-0": [ + { type: "text", sub_type: "message", message: "Out -> In", message_RU: "От него -> К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 270, 0, 2000] } + ], + "s-759-1001-3106-0": [ + { type: "text", sub_type: "message", message: "In -> Out", message_RU: "К нему -> От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 245, 0, 2000] } + ], + // 2 BOSS + "s-759-1002-3101-0": [ + { type: "text", sub_type: "message", message: "Push (Dodge)", message_RU: "Откид (эвейд)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-759-1002-3102-0": [{ type: "text", sub_type: "message", message: "Circles x5 (Dodge)", message_RU: "Круги х5 (эвейд)" }], + "s-759-1002-3103-0": [{ type: "text", sub_type: "message", message: "Circles x5 (Dodge)", message_RU: "Круги х5 (эвейд)" }], + "s-759-1002-3105-0": [{ type: "text", sub_type: "message", message: "Circle (Dodge)", message_RU: "Круг (эвейд)" }], + "s-759-1002-3104-0": [{ type: "text", sub_type: "message", message: "AOE (Go to ghost)", message_RU: "АОЕ (К призраку)" }], + "s-759-1002-3107-0": [{ type: "text", sub_type: "message", message: "Puddle (Dodge)", message_RU: "Лужа (эвейд)" }], + "s-759-1002-3108-0": [{ type: "text", sub_type: "message", message: "Puddle (Dodge)", message_RU: "Лужа (эвейд)" }], -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, + // 3 BOSS + "s-759-1003-2110-0": [ + { type: "text", sub_type: "message", message: "Clover", message_RU: "Клевер" }, + { type: "spawn", func: "circle", args: [false, 553, 45, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 135, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 225, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 315, 180, 12, 230, 0, 3000] } + ], + "s-759-1003-1110-0": [ + { type: "text", sub_type: "message", message: "Clover", message_RU: "Клевер" }, + { type: "spawn", func: "circle", args: [false, 553, 45, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 135, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 225, 180, 12, 230, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 315, 180, 12, 230, 0, 3000] } + ], -"s-759-1000-104-0": [{"type": "text","sub_type": "message","message": "Jump","message_TW": "跳"}], -"s-759-1000-106-0": [{"type": "text","sub_type": "message","message": "Spin","message_TW": "旋转攻击"}], + "s-759-1003-3108-0": [{ type: "text", sub_type: "message", message: "Debuff x2", message_RU: "Дебаф х2" }], + "s-759-1003-3109-0": [{ type: "text", sub_type: "message", message: "Carpet", message_RU: "Ковер" }], + "s-759-1003-3105-0": [{ type: "text", sub_type: "message", message: "Circles (Dodge)", message_RU: "Круги (эвейд)" }], + "s-759-1003-3106-0": [{ type: "text", sub_type: "message", message: "Circles (Dodge)", message_RU: "Круги (эвейд)" }], + "s-759-3000-1102-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Притяжка" }], -"s-759-2000-101-0": [{"type": "text","sub_type": "message","message": "Push","message_TW": "推"}], -"s-759-2000-104-0": [{"type": "text","sub_type": "message","message": "BIG AOE","message_TW": "全屏攻击"}], -"s-759-2000-107-0": [{"type": "text","sub_type": "message","message": "Dodge","message_TW": "闪避"}], + // Mini-bosses + // 1 BOSS + "s-759-1004-1104-0": [{ type: "text", sub_type: "message", message: "Jump (Stun)", message_RU: "Прыжок (стан) " }], + "s-759-1004-2104-0": [{ type: "text", sub_type: "message", message: "Jump (Stun)", message_RU: "Прыжок (стан)" }], + "s-759-1004-3107-0": [ + { type: "text", sub_type: "message", message: "Front (Dodge)", message_RU: "Конус (эвейд)" }, + { type: "spawn", func: "vector", args: [553, 90, 80, 10, 1000, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 350, 1000, 0, 1500] } + ], + "s-759-1004-1106-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-759-1004-2106-0": [ + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-759-1004-3101-0": [ + { type: "text", sub_type: "message", message: "Out", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 270, 0, 2000] } + ], + "s-759-1004-3106-0": [ + { type: "text", sub_type: "message", message: "In", message_RU: "К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 245, 0, 2000] } + ], - -"s-759-3000-101-0": [{"type": "text","sub_type": "message","message": "Explo","message_TW": "爆炸"}], -"s-759-3000-102-0": [{"type": "text","sub_type": "message","message": "Pull","message_TW": "拉"}], -"s-759-3000-105-0": [{"type": "text","sub_type": "message","message": "Dodge","message_TW": "闪避"}], -"s-759-3000-110-0": [{"type": "text","sub_type": "message","message": "GET OUT","message_TW": "出"}] - + // 2 BOSS + "s-759-1005-3101-0": [ + { type: "text", sub_type: "message", message: "Push (Dodge)", message_RU: "Откид (эвейд)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-759-1005-3105-0": [{ type: "text", sub_type: "message", message: "Circle (Dodge)", message_RU: "Круг (эвейд)" }], + "s-759-1005-3107-0": [{ type: "text", sub_type: "message", message: "Puddle (Dodge)", message_RU: "Лужа (эвейд)" }], + "s-759-1005-3108-0": [{ type: "text", sub_type: "message", message: "Puddle (Dodge)", message_RU: "Лужа (эвейд)" }], + "s-759-1005-3104-0": [{ type: "text", sub_type: "message", message: "AOE (Go to ghost)", message_RU: "АОЕ (К призраку)" }] + }; }; \ No newline at end of file diff --git a/guides/9768.js b/guides/9768.js new file mode 100644 index 00000000..659e93d5 --- /dev/null +++ b/guides/9768.js @@ -0,0 +1,221 @@ +// Shadow Sanguinary +// +// made by HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + + let thirdboss_print_combo = true; + let thirdboss_print_bait = true; + let thirdboss_combo_count = 0; + let thirdboss_combo_last_128 = null; + let thirdboss_combo_last_129 = null; + + function secondboss_floor_event(one, two) { + if (one && two) { + handlers.event([ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "marker", args: [false, one * 45 - 22, 500, 0, 5000, true, null] }, + { type: "spawn", func: "vector", args: [553, 0, 0, one * 45 - 45, 750, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, one * 45, 750, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 330, 0, 7000] }, + { type: "spawn", func: "marker", args: [false, two * 45 - 22, 300, 8000, 5000, true, null] }, + { type: "spawn", func: "vector", args: [553, 0, 0, two * 45 - 45, 750, 8000, 5000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, two * 45, 750, 8000, 5000] } + ]); + } + } + + return { + // 1 BOSS + "nd-768-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-768-1000-102-0": [{ type: "text", sub_type: "message", message: "Turn Attack", message_RU: "Разворот" }], + "s-768-1000-106-0": [{ type: "text", sub_type: "message", message: "Three Combo", message_RU: "Тройная комба" }], + "s-768-1000-107-0": [{ type: "text", sub_type: "message", message: "Front Combo", message_RU: "Передняя комба" }], + "s-768-1000-301-0": [{ type: "text", sub_type: "message", message: "Wave Front", message_RU: "Волна вперед" }], + "s-768-1000-304-0": [{ type: "text", sub_type: "message", message: "Strike (Target)", message_RU: "Выстрел (таргет)" }], + "s-768-1000-304-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 700 }], + "s-768-1000-305-0": [{ type: "text", sub_type: "message", message: "8 explosions", message_RU: "Серия взрывов" }], + "s-768-1000-306-0": [{ type: "text", sub_type: "message", message: "Stones", message_RU: "Пилоны" }], // 306 -> 307 + + // 2 BOSS + "nd-768-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-768-2000-101-0": [{ type: "text", sub_type: "message", message: "Fireball", message_RU: "Огненный шар" }], + "s-768-2000-102-0": [{ type: "text", sub_type: "message", message: "Drain", message_RU: "Разряд" }], + "s-768-2000-103-0": [{ type: "text", sub_type: "message", message: "Explosion", message_RU: "Взрыв" }], + "s-768-2000-104-0": [{ type: "text", sub_type: "message", message: "Dark Frame", message_RU: "Удар вперед" }], + "s-768-2000-110-0": [{ type: "text", sub_type: "message", message: "Front Attack", message_RU: "Передняя" }], + "s-768-2000-111-0": [{ type: "text", sub_type: "message", message: "360", message_RU: "Крутилка" }], // 114 -> 111 + "s-768-2000-112-0": [{ type: "text", sub_type: "message", message: "Back Attack", message_RU: "Задняя" }], + "s-768-2000-117-0": [{ type: "text", sub_type: "message", message: "Laser (Target)", message_RU: "Лазер (таргет)" }], + "s-768-2000-117-2": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 600 }], + "s-768-2000-118-0": [{ type: "text", sub_type: "message", message: "Laser", message_RU: "Лазер" }], + "s-768-2000-307-0": [{ type: "text", sub_type: "message", message: "Donut", message_RU: "Бублик" }], + "s-768-2000-501-0": [{ type: "text", sub_type: "message", message: "Charging", message_RU: "Зарядка" }], + "s-768-2000-301-0": [{ type: "func", func: secondboss_floor_event, args: [4, 7] }], + "s-768-2000-302-0": [{ type: "func", func: secondboss_floor_event, args: [2, 6] }], + "s-768-2000-303-0": [{ type: "func", func: secondboss_floor_event, args: [7, 3] }], + "s-768-2000-304-0": [{ type: "func", func: secondboss_floor_event, args: [0, 0] }], // 1-4-2-3-5 + "s-768-2000-305-0": [{ type: "func", func: secondboss_floor_event, args: [0, 0] }], // 4-2-5-1-3 + "s-768-2000-306-0": [{ type: "func", func: secondboss_floor_event, args: [0, 0] }], // 5-1-4-3-2 + "s-768-2000-310-0": [{ type: "func", func: secondboss_floor_event, args: [4, 7] }], + "s-768-2000-311-0": [{ type: "func", func: secondboss_floor_event, args: [2, 6] }], + "s-768-2000-312-0": [{ type: "func", func: secondboss_floor_event, args: [7, 3] }], + + // 3 BOSS + "nd-768-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + // + "s-768-3000-101-0": [ + { type: "event", check_func: () => thirdboss_print_combo, args: [ + { type: "text", sub_type: "message", message: "Combo soon", message_RU: "Скоро комба" }, + { type: "func", func: () => thirdboss_print_combo = false }, + { type: "func", func: () => thirdboss_print_combo = true, delay: 12000 } + ] } + ], + "s-768-3000-102-0": "s-768-3000-101-0", + // + "s-768-3000-128-0": [ // 128 -> 106/130 + { type: "text", sub_type: "message", message: "Back/Left", message_RU: "Задний/Откид влево", check_func: () => thirdboss_combo_last_128 === null }, + { type: "text", sub_type: "message", message: "Back", message_RU: "Задний", check_func: () => thirdboss_combo_last_128 === 130 }, + { type: "text", sub_type: "message", message: "Left", message_RU: "Откид влево", check_func: () => thirdboss_combo_last_128 === 106 } + ], + "s-768-3000-129-0": [ // 129 -> 108/131 + { type: "text", sub_type: "message", message: "Front/Right", message_RU: "Передний/Откид вправо", check_func: () => thirdboss_combo_last_129 === null }, + { type: "text", sub_type: "message", message: "Front", message_RU: "Передний", check_func: () => thirdboss_combo_last_129 === 131 }, + { type: "text", sub_type: "message", message: "Right", message_RU: "Откид вправо", check_func: () => thirdboss_combo_last_129 === 108 } + ], + "s-768-3000-130-0": [ // 128 -> 130 + { type: "text", sub_type: "message", message: "Left", message_RU: "Откид влево", check_func: () => thirdboss_combo_last_128 === null }, + { type: "func", func: () => { + thirdboss_combo_count++; + thirdboss_combo_last_128 = 130; + } } + ], + "s-768-3000-105-0": [ // 130 -> 105 + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] } + ], + "s-768-3000-106-0": [ // 128 -> 106 + { type: "text", sub_type: "message", message: "Back", message_RU: "Задний", check_func: () => thirdboss_combo_last_128 === null }, + { type: "spawn", func: "circle", args: [false, 553, 180, 340, 12, 270, 0, 2600] }, + { type: "func", func: () => { + thirdboss_combo_count++; + thirdboss_combo_last_128 = 106; + } } + ], + "s-768-3000-131-0": [ // 129 -> 131 + { type: "text", sub_type: "message", message: "Right", message_RU: "Откид вправо", check_func: () => thirdboss_combo_last_129 === null }, + { type: "func", func: () => { + thirdboss_combo_count++; + thirdboss_combo_last_129 = 131; + } } + ], + "s-768-3000-107-0": [ // 131 -> 107 + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] } + ], + "s-768-3000-108-0": [ // 129 -> 108 + { type: "text", sub_type: "message", message: "Front", message_RU: "Передний", check_func: () => thirdboss_combo_last_129 === null }, + { type: "func", func: () => { + thirdboss_combo_count++; + thirdboss_combo_last_129 = 108; + } } + ], + "s-768-3000-109-0": "s-768-3000-106-0", + // + "s-768-3000-110-0": [{ type: "text", sub_type: "message", message: "Back Move", message_RU: "Рывок назад" }], + "s-768-3000-111-0": [{ type: "text", sub_type: "message", message: "360 attack", message_RU: "Круговая" }], + "s-768-3000-114-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Притяжка" }], // 114 -> 111 + "s-768-3000-115-0": [{ type: "text", sub_type: "message", message: "Circles", message_RU: "Круги" }], // 202/205 -> 115 + "s-768-3000-115-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 150 }], + "s-768-3000-117-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], // 503 -> 117 + "s-768-3000-134-0": [ // qb 468052 -> 134 + { type: "text", sub_type: "message", message: "Inner + AoE", message_RU: "Ближний + АоЕ" }, + { type: "text", sub_type: "message", message: "Get Debuff", message_RU: "Взять стак", class_position: "heal", delay: 2000 }, + { type: "spawn", func: "circle", args: [true, 553, 0, 75, 14, 175, 0, 1500] } + ], + "s-768-3000-134-1": [ + { type: "spawn", func: "circle", args: [true, 553, 0, 80, 8, 390, 0, 2000] } + ], + "s-768-3000-136-0": [{ type: "text", sub_type: "message", message: "Donut", message_RU: "Бублик" }], // 135 -> 136 + "s-768-3000-202-0": [{ type: "text", sub_type: "message", message: "Target Throw", message_RU: "Бросок цели" }], // 503 -> 201 -> 202 + "s-768-3000-205-0": [{ type: "text", sub_type: "message", message: "Target Throw", message_RU: "Бросок цели" }], // 503 -> 117 -> 203 -> 204 -> 205 + "s-768-3000-206-0": [{ type: "text", sub_type: "message", message: "Pike (Target)", message_RU: "Копье (таргет)" }], // 206 -> 207 + "s-768-3000-302-0": [ + { type: "text", sub_type: "message", message: "Bait (Target)", message_RU: "Байт (таргет)" }, + { type: "func", func: () => { + thirdboss_combo_count = 0; + thirdboss_combo_last_128 = null; + thirdboss_combo_last_129 = null; + } } + ], + "s-768-3000-302-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1600 }], + "s-768-3000-501-0": [ + { type: "text", sub_type: "message", message: "Cage", message_RU: "Клетка" } + ], + "s-768-3000-502-0": [ + { type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 80, 8, 390, 0, 3000] } + ], + "s-768-3000-503-0": [{ type: "text", sub_type: "message", message: "Target Lockon", message_RU: "Захват цели" }], // qb 468050 -> 503 + "s-768-3000-504-0": [{ type: "text", sub_type: "message", message: "Mobs Summon", message_RU: "Призыв мобов" }], + // "s-768-3000-508-0": [{ type: "text", sub_type: "message", message: "Buff" }], + "dm-0-0-9768013": [ + { type: "text", sub_type: "notification", message: "Ready to Shield", message_RU: "Готовность ломать щит", speech: false }, + { type: "text", sub_type: "alert", message: "Ready to Shield", message_RU: "Готовность ломать щит" } + ], + // + "give_bait": [ + { type: "event", check_func: () => thirdboss_print_bait, args: [ + { type: "text", sub_type: "message", message: "Give Bait", message_RU: "Дать байт", class_position: "heal" }, + { type: "func", func: () => thirdboss_print_bait = false }, + { type: "func", func: () => thirdboss_print_bait = true, delay: 6000 } + ] } + ], + "give_bait_combo": [ + { type: "event", check_func: () => thirdboss_combo_count >= 3, args: [ + { type: "text", sub_type: "message", message: "Give Bait", message_RU: "Дать байт", class_position: "heal" }, + { type: "func", func: () => { + thirdboss_combo_count = 0; + thirdboss_combo_last_128 = null; + thirdboss_combo_last_129 = null; + } } + ] } + ], + "e-768-3000-101": "give_bait", + "e-768-3000-102": "give_bait", + "e-768-3000-105": "give_bait_combo", // left + "e-768-3000-106": "give_bait_combo", // back + "e-768-3000-107": "give_bait_combo", // right + "e-768-3000-108": "give_bait_combo", // front + "e-768-3000-111": "give_bait", // 360 attack + "e-768-3000-114": "give_bait", // pull + "e-768-3000-115": "give_bait", // circles + "e-768-3000-117": "give_bait", // jump + "e-768-3000-202": "give_bait", // target throw + "e-768-3000-205": "give_bait", // target throw + "e-768-3000-207": "give_bait", // pike + "s-768-3000-122-2": "give_bait", // core pattern 1 + "s-768-3000-123-2": "give_bait", // core pattern 2 + "s-768-3000-124-2": "give_bait", // core pattern 3 + "s-768-3000-127-2": "give_bait", // core pattern 4 + "e-768-3000-136": "give_bait", // donut + "s-768-3000-506-1": "give_bait" // dissipation + }; +}; \ No newline at end of file diff --git a/guides/9770.js b/guides/9770.js new file mode 100644 index 00000000..690dd6b0 --- /dev/null +++ b/guides/9770.js @@ -0,0 +1,139 @@ +// Ruinous Manor +// +// made by Emilia-s2 / HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + let firstboss_debuff = null; + let thirdboss_left_hand = false; + + return { + // 1 BOSS + "nd-770-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "die": [{ type: "func", func: () => { firstboss_debuff = null; } }], + "ae-0-0-97000057": [{ type: "func", func: () => firstboss_debuff = 1 }], // AoE (red) + "ae-0-0-97000058": [{ type: "func", func: () => firstboss_debuff = 2 }], // AoE (blue) + "am-770-1000-97000057": [{ type: "func", func: () => firstboss_debuff = 1 }], // Red + "am-770-1000-97000058": [{ type: "func", func: () => firstboss_debuff = 2 }], // Blue + "s-770-1000-1306-0": [ // red inside + { type: "text", sub_type: "message", message: "OUT", message_RU: "ОТ НЕГО", check_func: () => firstboss_debuff === 1 }, + { type: "text", sub_type: "message", message: "IN", message_RU: "К НЕМУ", check_func: () => firstboss_debuff === 2 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 400, 0, 4000] } + ], + "s-770-1000-1307-0": [ // blue inside + { type: "text", sub_type: "message", message: "IN", message_RU: "К НЕМУ", check_func: () => firstboss_debuff === 1 }, + { type: "text", sub_type: "message", message: "OUT", message_RU: "ОТ НЕГО", check_func: () => firstboss_debuff === 2 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 400, 0, 4000] } + ], + "s-770-1000-1206-0": [{ type: "text", sub_type: "message", message: "Jump Back", message_RU: "Прыжок назад" }], + "s-770-1000-2206-0": "s-770-1000-1206-0", + "s-770-1000-1106-0": [{ type: "text", sub_type: "message", message: "Stun Frontal (Dodge)", message_RU: "Передний стан" }], + "s-770-1000-2106-0": "s-770-1000-1106-0", + "s-770-1000-1107-0": [{ type: "text", sub_type: "message", message: "Front Push", message_RU: "Передний удар" }, + { type: "spawn", func: "semicircle", args: [320, 404, 553, 0, 0, 7, 405, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 0, 10, 406, 400, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 0, 10, -406, 400, 0, 3500] } + ], + "s-770-1000-2107-0": "s-770-1000-1107-0", + "s-770-1000-1117-0": [{ type: "text", sub_type: "message", message: "Crush Front", message_RU: "Удары" }], + "s-770-1000-2117-0": "s-770-1000-1117-0", + + // 2 BOSS + "nd-770-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-770-2000-1103-0": [{ type: "text", sub_type: "message", message: "Frontal Attack", message_RU: "Передняя атака" }], + "s-770-2000-2103-0": "s-770-2000-1103-0", + "s-770-2000-1105-0": [{ type: "text", sub_type: "message", message: "Random Target", message_RU: "Таргет" }], + "s-770-2000-2105-0": "s-770-2000-1105-0", + "s-770-2000-1106-0": [{ type: "text", sub_type: "message", message: "Stun (Dodge)", message_RU: "Стан (эвейд)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 40, 13, 180, 0, 2000] } + ], + "s-770-2000-2106-0": "s-770-2000-1106-0", + "s-770-2000-1111-0": [{ type: "text", sub_type: "message", message: "Many Hits (Target)", message_RU: "Множество ударов (таргет)" }], + "s-770-2000-2111-0": "s-770-2000-1111-0", + + // 3 BOSS + "nd-770-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-770-3000-1102-0": [ + { type: "text", sub_type: "message", message: "Left Hand", message_RU: "Левая рука" }, + { type: "func", func: () => thirdboss_left_hand = true }, + { type: "func", func: () => thirdboss_left_hand = false, delay: 2000 } + ], + "s-770-3000-2102-0": "s-770-3000-1102-0", + "s-770-3000-1101-0": [ + { type: "text", sub_type: "message", message: "Right Hand", message_RU: "Правая рука", check_func: () => !thirdboss_left_hand }, + { type: "text", sub_type: "message", message: "Right Hand | Tail Slam", message_RU: "Правая рука | Хвост", check_func: () => thirdboss_left_hand }, + { type: "func", func: () => thirdboss_left_hand = false } + ], + "s-770-3000-2101-0": "s-770-3000-1101-0", + "s-770-3000-1103-0": [ + { type: "text", sub_type: "message", message: "Tail Slam", message_RU: "Хвост" }, + { type: "spawn", func: "vector", args: [553, 283, 127, 180, 500, 0, 1400] }, + { type: "spawn", func: "vector", args: [553, 77, 127, 180, 500, 0, 1400] }, + { type: "spawn", func: "vector", args: [553, 165, 488, 270, 200, 0, 1400] }, + { type: "func", func: () => thirdboss_left_hand = false } + ], + "s-770-3000-2103-0": "s-770-3000-1103-0", + "s-770-3000-1301-0": [{ type: "text", sub_type: "message", message: "Circles", message_RU: "Круги" }], + "s-770-3000-2301-0": "s-770-3000-1301-0", + "s-770-3000-1106-0": [{ type: "text", sub_type: "message", message: "Front Swipe", message_RU: "Передний удар" }], + "s-770-3000-2106-0": "s-770-3000-1106-0", + "s-770-3000-1110-0": [ + { type: "text", sub_type: "message", message: "Tail AOE (jump in front)", message_RU: "Хвост АОЕ (прыгать вперед)" }, + { type: "spawn", func: "semicircle", args: [26, 340, 553, 0, 0, 7, 630, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 4, 40, 338, 600, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, -4, 40, -338, 600, 0, 3000] } + ], + "s-770-3000-2110-0": "s-770-3000-1110-0", + "s-770-3000-1304-0": [{ type: "text", sub_type: "message", message: "Get Ready!", message_RU: "Готовность!" }], + "s-770-3000-1303-0": "s-770-3000-1304-0", + "s-770-3000-1113-0": [ + { type: "text", sub_type: "message", message: "Out", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 300, 0, 2000] } + ], + "s-770-3000-1114-0": [ + { type: "text", sub_type: "message", message: "In", message_RU: "К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 300, 0, 2000] } + ], + "s-770-3000-1116-0": [ + { type: "text", sub_type: "message", message: "In", message_RU: "К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 300, 0, 2000] } + ], + "s-770-3000-1117-0": [ + { type: "text", sub_type: "message", message: "Out", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 300, 0, 2000] } + ], + "s-770-3000-2113-0": "s-770-3000-1113-0", + "s-770-3000-2114-0": "s-770-3000-1114-0", + "s-770-3000-2116-0": "s-770-3000-1116-0", + "s-770-3000-2117-0": "s-770-3000-1117-0", + "s-770-3000-1108-0": [ + { type: "text", sub_type: "message", message: "Tail", message_RU: "Удар хвостом" }, + { type: "spawn", func: "circle", args: [false, 553, -7, 280, 20, 155, 0, 2000] } + ], + "s-770-3000-2108-0": "s-770-3000-1108-0", + "s-770-3000-1120-0": [ + { type: "text", sub_type: "message", message: "Shooting Skulls (Triple)", message_RU: "Лазеры (тройные)" }, + { type: "spawn", func: "vector", args: [912, 90, 260, 0, 1300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 1300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 270, 250, 0, 1300, 0, 2000] } + + ], + "s-770-3000-2120-0": "s-770-3000-1120-0", + "s-770-3000-1121-0": [ + { type: "text", sub_type: "message", message: "Shooting Skulls (Doble)", message_RU: "Лазеры (двойные)" }, + { type: "spawn", func: "vector", args: [912, 90, 130, 0, 1300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 270, 130, 0, 1300, 0, 2000] } + ], + "s-770-3000-2121-0": "s-770-3000-1121-0" + }; +}; \ No newline at end of file diff --git a/guides/9780.js b/guides/9780.js new file mode 100644 index 00000000..5f59a0a4 --- /dev/null +++ b/guides/9780.js @@ -0,0 +1,81 @@ +// Velik's Hold (5-Person) +// +// made by HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + + return { + // 1 boss + "nd-780-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-780-1000-102-0": [{ type: "text", sub_type: "message", message: "Stun (Tank)", message_RU: "Стан (танк)" }], + "s-780-1000-103-0": [{ type: "text", sub_type: "message", message: "Frontal Hits", message_RU: "Передние удары" }], + "s-780-1000-104-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }], + "s-780-1000-109-0": [{ type: "text", sub_type: "message", message: "Push Left", message_RU: "Откид влево" }], + "s-780-1000-110-0": [{ type: "text", sub_type: "message", message: "Push Right", message_RU: "Откид вправо" }], + "s-780-1000-112-0": [{ type: "text", sub_type: "message", message: "Jump Forward", message_RU: "Прыжок вперед" }], + "s-780-1000-113-0": [{ type: "text", sub_type: "message", message: "Jump Back", message_RU: "Прыжок назад" }], + "s-780-1000-114-0": [{ type: "text", sub_type: "message", message: "Back Attack", message_RU: "Полоса назад" }], + "s-780-1000-115-0": [{ type: "text", sub_type: "message", message: "Wave Front", message_RU: "Волна вперед" }], + "s-780-1000-115-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-780-1000-202-0": [{ type: "text", sub_type: "message", message: "Jump (Stun)", message_RU: "Прыжок (стан)" }], + "s-780-1000-108-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 2800 }], + "s-780-1000-302-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }], + "s-780-1000-302-1": [{ type: "spawn", func: "vector", args: [912, 0, 0, 0, 1600, 0, 2000] }], + "s-780-1001-302-0": [{ type: "spawn", func: "vector", args: [912, 0, 0, 0, 1600, 0, 4000] }], + + // 2 boss + "nd-780-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-780-2000-105-0": [{ type: "text", sub_type: "message", message: "Heavy Front Attack", message_RU: "Мощный удар вперед" }], + "s-780-2000-106-0": [{ type: "text", sub_type: "message", message: "Flame Ray (Target)", message_RU: "Полоса (таргет)" }], + "s-780-2000-106-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 500 }], + "s-780-2000-107-0": [{ type: "text", sub_type: "message", message: "Whip", message_RU: "Кнут" }], + "s-780-2000-107-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 }], + "s-780-2000-108-0": [{ type: "text", sub_type: "message", message: "Front Attack (Stun)", message_RU: "Удар вперед (стан)" }], + "s-780-2000-301-0": [{ type: "text", sub_type: "message", message: "Jump (Target)", message_RU: "Прыжок (таргет)" }], + "s-780-2000-301-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 }], + "s-780-2000-302-0": [{ type: "text", sub_type: "message", message: "AOE (Stand behind a stone)", message_RU: "АОЕ (встать за камень)" }], + "s-780-2000-303-0": [{ type: "text", sub_type: "message", message: "Circles", message_RU: "Круги" }], + "s-780-2000-304-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-780-2000-304-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 }], + "s-780-2001-326-0": [{ type: "spawn", func: "marker", args: [false, 180, 250, 0, 6000, true, null] }], // stone marker + + // 3 boss + "nd-780-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-780-3000-104-0": [{ type: "text", sub_type: "message", message: "Front Attack", message_RU: "Удар вперед" }], + "s-780-3000-105-0": [{ type: "text", sub_type: "message", message: "Push Front", message_RU: "Откид вперед" }], + "s-780-3000-109-0": [{ type: "text", sub_type: "message", message: "Double Front Attack", message_RU: "Двойной удар вперед" }], + "s-780-3000-110-0": [{ type: "text", sub_type: "message", message: "Wave Front", message_RU: "Волна вперед" }], + "s-780-3000-111-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Кувырок" }], + "s-780-3000-112-0": [{ type: "text", sub_type: "message", message: "Target (Front | Back)", message_RU: "Таргет (Передняя | Задняя)" }], + "s-780-3000-112-2": [{ type: "text", sub_type: "message", message: "Front | Back", message_RU: "Передняя | Задняя" }], + "s-780-3000-113-0": [{ type: "text", sub_type: "message", message: "Pushback", message_RU: "Откид назад" }], + "s-780-3000-114-0": "s-780-3000-113-0", + "s-780-3000-115-0": [{ type: "text", sub_type: "message", message: "Charging", message_RU: "Зарядка" }], + "s-780-3000-301-0": [{ type: "text", sub_type: "message", message: "Get Out | Get In", message_RU: "От него | К нему" }], + "s-780-3000-302-0": [{ type: "text", sub_type: "message", message: "Get In", message_RU: "К нему" }], + "s-780-3000-304-0": [{ type: "text", sub_type: "message", message: "Shot (Target)", message_RU: "Выстрел (таргет)" }], + "s-780-3000-304-3": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-780-3000-306-0": [ + { type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 4500 } + ], + "s-780-3000-307-0": "s-780-3000-306-0", + "s-780-3000-308-0": [ + { type: "text", sub_type: "message", message: "AOE (Flying)", message_RU: "АОЕ (подлет)" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 4500 } + ], + "s-780-3000-309-0": [ + { type: "text", sub_type: "message", message: "Jump (Pushback)", message_RU: "Прыжок (откид)" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 2200 } + ] + }; +}; \ No newline at end of file diff --git a/guides/9781.js b/guides/9781.js index f59fb8cd..2c3b8eb5 100644 --- a/guides/9781.js +++ b/guides/9781.js @@ -1,317 +1,405 @@ -// vs -//made by michengs +// Velik's Sanctuary +// +// made by michengs / HSDN -let notice_guide = true; -let player, entity, library, effect; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; -handlers['text']({ -"sub_type": "notification", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); -} -notice_guide = false; + let thirdboss_fifty = false; -} - -// Helper Functions - -function single_stage_callout(message, handlers, event, entity) { - //if (entity.stage == 0) { - handlers['text']({ - "sub_type": "message", - "message": message, - }); - // - - } - -// 拉坎 - - - - -// 进出 -// 召唤安全范围 -let rings_inout_seventhfloor = []; -for (let angle = -Math.PI; angle <= Math.PI; angle += 2 * Math.PI / 40) { - rings_inout_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 6000, - "distance": 250, - "offset": angle - }); -} - -// Lasers Flowers and Signs - -let lasers_markers_seventhfloor = []; -let inverted_lasers_markers_seventhfloor = []; -let dlw_object = []; -const sign_offsets_seventhfloor = [-0.32, -0.94, -1.57, -2.2, -2.83, 2.83, 2.2, 1.57, 0.94, 0.32]; - -for (let offset of sign_offsets_seventhfloor) { - const event = { - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 4000, - "distance": 450, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": offset + function secondboss_floor_event(one, two) { + if (one && two) { + handlers.event([ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "marker", args: [false, one * 45 + 68, 500, 0, 5000, true, null] }, + { type: "spawn", func: "vector", args: [553, 0, 0, one * 45 + 45, 750, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, one * 45 + 90, 750, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 330, 0, 6000] }, + { type: "spawn", func: "marker", args: [false, two * 45 + 68, 300, 7000, 5000, true, null] }, + { type: "spawn", func: "vector", args: [553, 0, 0, two * 45 + 45, 750, 7000, 5000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, two * 45 + 90, 750, 7000, 5000] } + ]); + } } - lasers_markers_seventhfloor.push(event); - inverted_lasers_markers_seventhfloor.push(event); -} - -for (let distance = 175; distance <= 425; distance += 25) { - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 0 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 1.25 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 2.5 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": -2.5 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": -1.25 - }); - - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 0.62 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 1.87 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 3.12 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": -1.88 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": -0.63 - }); - - -} - - - -const SPAWN_CIRCLES = true; -const stepone = 2 * Math.PI / 40;//40 -const steptwo = 2 * Math.PI / 60;//72 flowers in total -//内圈 -let SPAWNING_FIRST_CIRCLE_FLOWERS = []; -let SPAWNING_SECOND_CIRCLE_FLOWERS = []; -let SPAWNING_THIRD_CIRCLE_FLOWERS = []; -//外圈 - -for(let angle = -Math.PI; angle <= Math.PI; angle += steptwo) { - if(!SPAWN_CIRCLES) continue; - SPAWNING_FIRST_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 548, - "sub_delay": 6000, - "distance": 300, - "offset": angle - }); - - SPAWNING_SECOND_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 548, - "sub_delay": 6000, - "distance": 250, - "offset": angle - }); - SPAWNING_THIRD_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 548, - "sub_delay": 6000, - "distance": 200, - "offset": angle - }); - - - - - -} - -for(let angle = -Math.PI; angle <= Math.PI; angle += stepone) { - if(!SPAWN_CIRCLES) continue; - - SPAWNING_THIRD_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 548, - "sub_delay": 6000, - "distance": 350, - "offset": angle - }); - -} - -for (let distance = 350; distance <= 600; distance += 25) { - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": 0 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": 0, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": 0.7853 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": 0.7853, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": 1.5707 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": 1.5707, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": 2.3561 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": 2.3561, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": 3.1415 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": 3.1415, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": -0.7853 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": -0.7853, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": -1.5707 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": -1.5707, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": -2.3561 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350 , "offset": -2.3561, "ownerName": "杜利温", "message": "秒杀"}); -} - -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - // "h-781-1000-100": [{"type": "func","func": guid_voice}], - "s-781-1000-2401": [{"type": "text","sub_type": "message","message": "right","message_TW": "右劈"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -2.3, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -1, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -2.3},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -1}], - "s-781-1000-2402": [{"type": "text","sub_type": "message","message": "left","message_TW": "左劈"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 2.3, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 1, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 2.3},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 1}], - "s-781-1000-2304-0": [{"type": "text","sub_type": "message","message_TW": "飞天"}].concat(SPAWNING_FIRST_CIRCLE_FLOWERS), - "s-781-1000-2303-0": [{"type": "text","sub_type": "message","message_TW": "旋转攻击"}], - "s-781-1000-2113-0": [{"type": "text","sub_type": "message","message": "Front + AoEs","message_TW": "前劈"}], - "s-781-1000-2308-0": [{"type": "text","sub_type": "message","message": "out","message_TW": "出"}], - "s-781-1000-2309-0": [{"type": "text","sub_type": "message","message": "in","message_TW": "进"}], - "s-781-1000-1401": [{"type": "text","sub_type": "message","message": "right","message_TW": "右劈"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -2.3, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -1, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -2.3},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -1}], - "s-781-1000-1402": [{"type": "text","sub_type": "message","message": "left","message_TW": "左劈"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 2.3, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 1, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 2.3},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 1}], - "s-781-1000-1304-0": [{"type": "text","sub_type": "message","message_TW": "飞天"}].concat(SPAWNING_FIRST_CIRCLE_FLOWERS), - "s-781-1000-1303-0": [{"type": "text","sub_type": "message","message_TW": "旋转攻击"}], - "s-781-1000-1113-0": [{"type": "text","sub_type": "message","message": "Front + AoEs","message_TW": "前劈"}], - "s-781-1000-1308-0": [{"type": "text","sub_type": "message","message": "out","message_TW": "出"}], - "s-781-1000-1309-0": [{"type": "text","sub_type": "message","message": "in","message_TW": "进"}], - "qb-781-1000-78103": [{"type": "text","sub_type": "message","message_TW": "点名炸石柱"}], - "qb-781-1000-78102": [{"type": "text","sub_type": "message","message_TW": "快跑远秒杀"}], - "qb-781-1000-78106": [{"type": "text","sub_type": "message","message_TW": "集体炸石柱"}], - - // 2王杜立温 - - // Cage Mechanic - // - "s-781-2000-1503-0": [{"type": "text","sub_type": "message","message_TW": "坦快跑远"}], - "s-781-2000-1106-0": [{"type": "text","sub_type": "message","message": "back","message_TW": "后砸"}], - "s-781-2000-1108-0": [{"type": "text","sub_type": "message","message": "front","message_TW": "前砸"}], - "s-781-2000-1111-0": [{"type": "text","sub_type": "message","message": "360","message_TW": "360度攻击 "}], - "s-781-2000-1302-0": [{"type": "text","sub_type": "message","message_TW": "点名"}], - "s-781-2000-1121-0": [{"type": "text","sub_type": "message","message_TW": "召唤小怪快打"}], - "s-781-2000-1501-0": [{"type": "text","sub_type": "message","message_TW": "封场鉴定开始"},{"type": "text","sub_type": "message","delay": 1000,"message": "3"} ,{"type": "text","sub_type": "message","delay": 2000,"message": "2"} ,{"type": "text","sub_type": "message","delay": 3000,"message": "1"}], - "s-781-2000-1112-0": [{"type": "func","func": single_stage_callout.bind(null, "STAB + KNOCKUP")}], - "s-781-2000-1130-0": [{"type": "text","sub_type": "message","message": "left","message_TW": "左劈"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 2.3, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 1, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 2.3}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 1}], - "s-781-2000-1131-0": [{"type": "text","sub_type": "message","message": "right","message_TW": "右劈"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -2.3, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -1, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -2.3}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -1}], - "s-781-2000-1134-0": [{"type": "func","func": single_stage_callout.bind(null, "吃注视")}], - "s-781-2000-1502-0": [{"type": "func","func": single_stage_callout.bind(null, "鉴定准备")}], -//愤怒 - "s-781-2000-2503-0": [{"type": "text","sub_type": "message","message_TW": "坦快跑远"}], - "s-781-2000-2106-0": [{"type": "text","sub_type": "message","message": "back","message_TW": "后砸"}], - "s-781-2000-2108-0": [{"type": "text","sub_type": "message","message": "front","message_TW": "前砸"}], - "s-781-2000-2111-0": [{"type": "text","sub_type": "message","message": "360","message_TW": "360度攻击 "}], - "s-781-2000-2121-0": [{"type": "text","sub_type": "message","message_TW": "召唤小怪快打"}], - "s-781-2000-2501-0": [{"type": "text","sub_type": "message","message_TW": "封场鉴定开始"},{"type": "text","sub_type": "message","delay": 1000,"message": "3"} ,{"type": "text","sub_type": "message","delay": 2000,"message": "2"} ,{"type": "text","sub_type": "message","delay": 3000,"message": "1"}], - "s-781-2000-2112-0": [{"type": "func","func": single_stage_callout.bind(null, "STAB + KNOCKUP")}], - "s-781-2000-2130-0": [{"type": "text","sub_type": "message","message": "left","message_TW": "左劈"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 2.3, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 1, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 2.3}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 1}], - "s-781-2000-2131-0": [{"type": "text","sub_type": "message","message": "right","message_TW": "右劈"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -2.3, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -1, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -2.3}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -1}], - "s-781-2000-2134-0": [{"type": "func","func": single_stage_callout.bind(null, "吃注视")}], - "s-781-2000-2502-0": [{"type": "func","func": single_stage_callout.bind(null, "鉴定准备")}], - "s-781-2000-4000-0": [{"type": "text","sub_type": "alert","message_TW": "鉴定!!!!"}].concat(dlw_object), - "dm-0-0-9781022": [{"type": "text","sub_type": "alert","message_TW": "鉴定"}], - "dm-0-0-9781023": [{"type": "text","sub_type": "message","message_TW": "全场鉴定"}], - -//9781022 - - "dm-0-0-9781046": [{"type": "text","sub_type": "alert","message": "First: (注视) 最近"},{"type": "text","sub_type": "message","message": "(Debuffs) Closest","message_TW": "First: (注视) 最近"}], - "dm-0-0-9781047": [{"type": "text","sub_type": "alert","message": "First: (闪电) 闪开"},{"type": "text","sub_type": "message","message": "(Circles) Spread","message_TW": "First: (闪电) 闪开"}], - "dm-0-0-9781048": [{"type": "text","sub_type": "alert","message": "First: (炸弹) 集中 + 解状态"},{"type": "text","sub_type": "message","message": "(Bombs) Gather + cleanse","message_TW": "First: (炸弹) 集中 + 解状态"}], - - - -//----拉砍 + function thirdboss_message_event(skillid) { + switch (skillid) { + // Lakan has noticed you. + case 1043: + if (!thirdboss_fifty) { + handlers.text({ + sub_type: "notification", + message: "Debuffs > Circles > Bombs", + message_RU: "ДКБ" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Debuffs > Bombs > Circles", + message_RU: "ДБК" + }); + } + break; + // Lakan is trying to take you on one at a time. + case 1044: + if (!thirdboss_fifty) { + handlers.text({ + sub_type: "notification", + message: "Circles > Bombs > Debuffs", + message_RU: "КБД" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Circles > Debuffs > Bombs", + message_RU: "КДБ" + }); + } + break; + // Lakan intends to kill all of you at once. + case 1045: + if (!thirdboss_fifty) { + handlers.text({ + sub_type: "notification", + message: "Bombs > Debuffs > Circles", + message_RU: "БДК" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Bombs > Circles > Debuffs", + message_RU: "БКД" + }); + } + break; + } + } - "s-781-3000-1404-0": [{"type": "text","sub_type": "message","message": "(Debuffs) Closest","message_TW": "注视 (最近)"}].concat(lasers_markers_seventhfloor), - "s-781-3000-1405-0": [{"type": "text","sub_type": "message","message": "(Debuffs) Farthest","message_TW": "注视 (最远)"}].concat(inverted_lasers_markers_seventhfloor),// - "s-781-3000-1301-0": [{"type": "text","sub_type": "message","message": "(Bombs) Gather + cleanse","message_TW": "炸弹集中 + 解状态"},].concat(lasers_markers_seventhfloor), - "s-781-3000-1302-0": [{"type": "text","sub_type": "message","message": "(Bombs) Gather + no cleanse","message_TW": "炸弹集中 + 不 解状态"},].concat(inverted_lasers_markers_seventhfloor),// - "s-781-3000-3103-0": [{"type": "text","sub_type": "message","message": "(Circles) Spread","message_TW": "闪电分散"},].concat(lasers_markers_seventhfloor), - "s-781-3000-3105-0": [{"type": "text","sub_type": "message","message": "(Circles) Gather","message_TW": "闪电集中"},].concat(inverted_lasers_markers_seventhfloor),// - "s-781-3000-1116-0": [{"type": "text","sub_type": "message","message": "Circle","message_TW": "內外炸"}], - "s-781-3000-2116-0": [{"type": "text","sub_type": "message","message": "Circle","message_TW": "內外炸"}], // - "s-781-3000-1701-0": [{"type": "text","sub_type": "message","message": "back + front","message_TW": "后踢 + 前戳"}], - "s-781-3000-1113-0": [{"type": "text","sub_type": "message","message_TW": "点名"}], - "s-781-3000-1151-0": [{"type": "text","sub_type": "message","message": "attention stun","message_TW": "注意击晕"}], - "s-781-3000-2151-0": [{"type": "text","sub_type": "message","message": "attention stun","message_TW": "注意击晕"}], - "s-781-3000-2113-0": [{"type": "text","sub_type": "message","message_TW": "点名"}], - "s-781-3000-1152-0": [{"type": "text","sub_type": "message","message": "Stun + Back","message_TW": "击晕 + 后踢 "}], - "s-781-3000-2152-0": [{"type": "text","sub_type": "message","message": "Stun + Back","message_TW": "击晕 + 后踢 "}], // - "s-781-3000-2138-0": rings_inout_seventhfloor,// 召唤安全范围250 // - "s-781-3000-1138-0": rings_inout_seventhfloor,// 召唤安全范围250 - "s-781-3000-1144-0": [{"type": "text","sub_type": "message","message": "out","message_TW": "出 "}], - "s-781-3000-1145-0": [{"type": "text","sub_type": "message","message": "in","message_TW": "进"}], - "s-781-3000-1240-0": [{"type": "text","sub_type": "message","message": "Donuts","message_TW": "甜甜圈"}].concat(SPAWNING_THIRD_CIRCLE_FLOWERS), - "s-781-3000-1401-0": [{"type": "text","sub_type": "message","message": "Plague/Regress","message_TW": "驱散"}], - "s-781-3000-1402-0": [{"type": "text","sub_type": "message","message": "Sleep","message_TW": "赶紧睡拉坎"}] + return { + // 1 BOSS + "nd-781-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-781-1000-1111-0": [{ type: "text", sub_type: "message", message: "Back 360", message_RU: "Задняя 360" }], + "s-781-1000-1401-0": [ + { type: "text", sub_type: "message", message: "Right", message_RU: "Откид вправо" }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 300, 100, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 230, 100, 0, 2000, true, null] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] } + ], + "s-781-1000-1402-0": [ + { type: "text", sub_type: "message", message: "Left", message_RU: "Откид влево" }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 60, 100, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 130, 100, 0, 2000, true, null] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] } + ], + "s-781-1000-1301-0": [ + { type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ" }, + { type: "text", sub_type: "message", message: "Dodge! (Go to the safe)", message_RU: "Эвейд! (отойти в сейф зону)", delay: 1000 } + ], + "s-781-1000-1303-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }], + "s-781-1000-1304-0": [ + { type: "text", sub_type: "message", message: "Flying", message_RU: "Взлет" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 6000] } + ], + "s-781-1000-1308-0": [{ type: "text", sub_type: "message", message: "OUT", message_RU: "Наружу" }], + "s-781-1000-1309-0": [{ type: "text", sub_type: "message", message: "IN", message_RU: "Внутрь" }], + "s-781-1000-1112-0": [{ type: "text", sub_type: "message", message_RU: "Рывок назад", message: "Back Move" }], + "s-781-1000-1113-0": [{ type: "text", sub_type: "message", message: "Front + AoEs", message_RU: "Передняя + AOE" }], + "s-781-1000-1114-0": [ + { type: "text", sub_type: "message", message_RU: "Таргет", message: "Target Attack" }, + { type: "spawn", func: "vector", args: [553, 90, 150, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 90, 75, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 270, 75, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 270, 150, 0, 1300, 0, 2500] } + ], + "s-781-1000-1115-0": [{ type: "text", sub_type: "message", delay: 3200, message_RU: "Эвейд", message: "Dodge" }], // dodge circle + "s-781-1000-1117-0": [{ type: "text", sub_type: "message", delay: 5200, message_RU: "Эвейд", message: "Dodge" }], // dodge circles + "s-781-1000-2111-0": "s-781-1000-1111-0", + "s-781-1000-2112-0": "s-781-1000-1112-0", + "s-781-1000-2113-0": "s-781-1000-1113-0", + "s-781-1000-2114-0": "s-781-1000-1114-0", + "s-781-1000-2115-0": "s-781-1000-1115-0", + "s-781-1000-2117-0": "s-781-1000-1117-0", + "qb-781-1000-98103": [{ type: "text", sub_type: "message", message: "Lead circle to the stone", message_RU: "Отвести круг к пилону" }], + "qb-781-1000-78107": [{ type: "text", sub_type: "message", message: "Lead circles to the stone", message_RU: "Отвести круги к пилону" }], + // 2 BOSS + "nd-781-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + // Cage Mechanic + "s-781-2000-1501-0": [ + { type: "text", sub_type: "message", message: "Identification", message_RU: "Идентификация" }, + { type: "text", sub_type: "message", delay: 1000, message: "3" }, + { type: "text", sub_type: "message", delay: 2000, message: "2" }, + { type: "text", sub_type: "message", delay: 3000, message: "1" } + ], + "s-781-2000-1138-0": [ // T1 + { type: "event", delay: 6500, args: [ + { type: "text", sub_type: "notification", message: "Out > In > Side > Side", message_RU: "Наружу > Внутрь > В сторону > В сторону" }, + // x6 normal + in circle + { type: "spawn", func: "marker", args: [false, 15, 270, 0, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 270, 0, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 270, 0, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 270, 0, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 0, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 270, 0, 3000, true, null] }, + // out circle + { type: "spawn", func: "marker", args: [false, 15, 170, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 170, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 170, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 170, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 170, 3000, 1500, true, null] }, + // x6 reverse + { type: "spawn", func: "marker", args: [false, 45, 170, 4500, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 105, 170, 4500, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 4500, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 225, 170, 4500, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 285, 170, 4500, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 4500, 1000, true, null] }, + // x4 + { type: "spawn", func: "marker", args: [false, 75, 170, 5500, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 5500, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 5500, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 5500, 2000, true, null] } + ] } + ], + "s-781-2000-1139-0": [ // T2 + { type: "event", delay: 7500, args: [ + { type: "text", sub_type: "notification", message: "Side > In > Out > Side", message_RU: "В сторону > Внутрь > Наружу > В сторону" }, + // x6 reverse + { type: "spawn", func: "marker", args: [false, 45, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 105, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 225, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 285, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 0, 1500, true, null] }, + // x6 normal + { type: "spawn", func: "marker", args: [false, 15, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 270, 1500, 1500, true, null] }, + // out circle + { type: "spawn", func: "marker", args: [false, 15, 170, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 170, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 170, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 170, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 170, 3000, 1500, true, null] }, + // in circle + { type: "spawn", func: "marker", args: [false, 15, 270, 4500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 270, 4500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 270, 4500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 270, 4500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 4500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 270, 4500, 1500, true, null] }, + // x4 + { type: "spawn", func: "marker", args: [false, 75, 270, 6000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 6000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 6000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 6000, 1500, true, null] } + ] } + ], + "s-781-2000-1140-0": [ // T1 + { type: "event", delay: 6500, args: [ + { type: "text", sub_type: "notification", message: "Out > In > Side > Side", message_RU: "Наружу > Внутрь > В сторону > В сторону" }, + // in circle + { type: "spawn", func: "marker", args: [false, 45, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 105, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 225, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 285, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 0, 1500, true, null] }, + // x6 reverse + { type: "spawn", func: "marker", args: [false, 45, 170, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 105, 170, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 225, 170, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 285, 170, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 1500, 1500, true, null] }, + // x6 normal + out circle + { type: "spawn", func: "marker", args: [false, 15, 170, 3000, 2500, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 170, 3000, 2500, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 170, 3000, 2500, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 170, 3000, 2500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 3000, 2500, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 170, 3000, 2500, true, null] }, + // x4 + { type: "spawn", func: "marker", args: [false, 75, 170, 5500, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 5500, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 5500, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 5500, 2000, true, null] } + ] } + ], + "s-781-2000-1141-0": [ // T2 + { type: "event", delay: 7500, args: [ + { type: "text", sub_type: "notification", message: "Out > Side > Side > In", message_RU: "Наружу > В сторону > В сторону > Внутрь" }, + // x6 normal + { type: "spawn", func: "marker", args: [false, 15, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 270, 0, 1500, true, null] }, + // x6 reverse + { type: "spawn", func: "marker", args: [false, 45, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 105, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 225, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 285, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 1500, 1500, true, null] }, + // in circle + { type: "spawn", func: "marker", args: [false, 75, 270, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 3000, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 3000, 1500, true, null] }, + // out circle + x4 + { type: "spawn", func: "marker", args: [false, 75, 170, 4500, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 4500, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 4500, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 4500, 3000, true, null] } + ] } + ], + // + "s-781-2000-1106-0": [ + { type: "text", sub_type: "message", message: "Back", message_RU: "Задний" }, + { type: "spawn", func: "circle", args: [false, 553, 180, 340, 14, 270, 0, 2600] } + ], + "s-781-2000-1108-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Передний" }], + "s-781-2000-1110-0": [{ type: "text", sub_type: "message", message: "Back Move", message_RU: "Рыыок назад" }], + "s-781-2000-1111-0": [{ type: "text", sub_type: "message", message: "360 attack", message_RU: "Круговая" }], + "s-781-2000-1114-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Притяжка" }], + "s-781-2000-1115-0": [{ type: "text", sub_type: "message", message: "Circles", message_RU: "Круги" }], + "s-781-2000-1115-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 150 }], + "s-781-2000-1117-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-781-2000-1130-0": [ + { type: "text", sub_type: "message", message: "Left", message_RU: "Откид влево" }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 60, 100, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 130, 100, 0, 2000, true, null] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] } + ], + "s-781-2000-1131-0": [ + { type: "text", sub_type: "message", message: "Right", message_RU: "Откид вправо" }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 300, 100, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 230, 100, 0, 2000, true, null] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] } + ], + "s-781-2000-1134-0": [ + { type: "text", sub_type: "message", message: "Inner + AoE", message_RU: "Ближний + АоЕ" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 75, 14, 175, 0, 1500] } + ], + "s-781-2000-1134-1": [ + { type: "spawn", func: "circle", args: [true, 553, 0, 80, 8, 390, 0, 2000] } + ], + "s-781-2000-1136-0": [{ type: "text", sub_type: "message", message: "Donut", message_RU: "Бублик" }], + "s-781-2000-1202-0": [{ type: "text", sub_type: "message", message: "Target Throw", message_RU: "Бросок цели" }], + "s-781-2000-1205-0": [{ type: "text", sub_type: "message", message: "Target Throw", message_RU: "Бросок цели" }], + "s-781-2000-1206-0": [{ type: "text", sub_type: "message", message: "Pike (Target)", message_RU: "Копье (таргет)" }], + "s-781-2000-1302-0": [{ type: "text", sub_type: "message", message: "Bait (Target)", message_RU: "Байт (таргет)" }], + "s-781-2000-1302-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1600 }], + "s-781-2000-1502-0": [ + { type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 80, 8, 390, 0, 3000] } + ], + "s-781-2000-1503-0": [{ type: "text", sub_type: "message", message: "Target Lockon", message_RU: "Захват цели" }], + "s-781-2000-1504-0": [{ type: "text", sub_type: "message", message: "Mobs Summon", message_RU: "Призыв мобов" }], + // + "s-781-2000-2106-0": "s-781-2000-1106-0", + "s-781-2000-2108-0": "s-781-2000-1108-0", + "s-781-2000-2110-0": "s-781-2000-1110-0", + "s-781-2000-2111-0": "s-781-2000-1111-0", + "s-781-2000-2114-0": "s-781-2000-1114-0", + "s-781-2000-2115-0": "s-781-2000-1115-0", + "s-781-2000-2115-1": "s-781-2000-1115-1", + "s-781-2000-2117-0": "s-781-2000-1117-0", + "s-781-2000-2130-0": "s-781-2000-1130-0", + "s-781-2000-2131-0": "s-781-2000-1131-0", + "s-781-2000-2134-0": "s-781-2000-1134-0", + "s-781-2000-2134-1": "s-781-2000-1134-1", + "s-781-2000-2136-0": "s-781-2000-1136-0", + // Pizza Mechanic + "s-781-927-1301-0": [{ type: "func", func: secondboss_floor_event, args: [4, 7] }], + "s-781-927-1302-0": [{ type: "func", func: secondboss_floor_event, args: [2, 6] }], + "s-781-927-1303-0": [{ type: "func", func: secondboss_floor_event, args: [7, 3] }], + "s-781-927-1307-0": [{ type: "func", func: secondboss_floor_event, args: [1, 6] }], + "s-781-927-1308-0": [{ type: "func", func: secondboss_floor_event, args: [3, 6] }], + "s-781-927-1309-0": [{ type: "func", func: secondboss_floor_event, args: [6, 3] }], + "s-781-927-1310-0": [{ type: "func", func: secondboss_floor_event, args: [4, 7] }], + "s-781-927-1311-0": [{ type: "func", func: secondboss_floor_event, args: [2, 6] }], + "s-781-927-1312-0": [{ type: "func", func: secondboss_floor_event, args: [7, 3] }], + "s-781-927-1313-0": [{ type: "func", func: secondboss_floor_event, args: [1, 6] }], + "s-781-927-1314-0": [{ type: "func", func: secondboss_floor_event, args: [3, 6] }], + "s-781-927-1315-0": [{ type: "func", func: secondboss_floor_event, args: [6, 3] }], + // + "qb-781-4000-9781046": [{ type: "text", sub_type: "notification", message: "First: (Debuffs) Closest", message_RU: "[ДКБ] Первая: дебафф (ближние)" }], // Thank you... for this release... + "qb-781-4000-9781047": [{ type: "text", sub_type: "notification", message: "First: (Circles) Spread", message_RU: "[КБД] Первая: круги (отдельно)" }], // Beware the... red lightning... + "qb-781-4000-9781048": [{ type: "text", sub_type: "notification", message: "First: (Bombs) Gather + Cleanse", message_RU: "[БДК] Первая: бомбы (вместе + клинс)" }], // Beware the mark... of Lakan... + // 3 BOSS + "nd-781-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-781-3000-99": [{ type: "func", func: () => thirdboss_fifty = false }], + "h-781-3000-50": [{ type: "func", func: () => thirdboss_fifty = true }], + "dm-0-0-9781043": [{ type: "func", func: thirdboss_message_event, args: [1043] }], // Lakan has noticed you. + "dm-0-0-9781044": [{ type: "func", func: thirdboss_message_event, args: [1044] }], // Lakan is trying to take you on one at a time. + "dm-0-0-9781045": [{ type: "func", func: thirdboss_message_event, args: [1045] }], // Lakan intends to kill all of you at once. + "s-781-3000-1404-0": [{ type: "text", sub_type: "message", message: "(Debuffs) Closest", message_RU: "Дебафф (ближние)" }], + "s-781-3000-1405-0": [{ type: "text", sub_type: "message", message: "(Debuffs) Farthest", message_RU: "Дебафф (дальние)" }], + "s-781-3000-1301-0": [{ type: "text", sub_type: "message", message: "(Bombs) Gather + Cleanse", message_RU: "Бомбы (вместе!) + клинс" }], + "s-781-3000-1302-0": [{ type: "text", sub_type: "message", message: "(Bombs) Gather + No cleanse", message_RU: "Бомбы (вместе!) + без клинса" }], + "s-781-3000-3103-0": [{ type: "text", sub_type: "message", message: "(Circles) Spread", message_RU: "Круги (отдельно!)" }], + "s-781-3000-3105-0": [{ type: "text", sub_type: "message", message: "(Circles) Gather", message_RU: "Круги (вместе!)" }], + "s-781-3000-1136-0": [{ type: "text", sub_type: "message", message: "Claw", message_RU: "Когти" }], + "s-781-3000-1136-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 }], + "s-781-3000-1144-0": [{ type: "text", sub_type: "message", message: "OUT", message_RU: "Наружу" }], + "s-781-3000-1145-0": [{ type: "text", sub_type: "message", message: "IN", message_RU: "Внутрь" }], + "s-781-3000-1240-0": [ + { type: "text", sub_type: "message", message: "Donuts", message_RU: "Бублики" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 350, 0, 6000] } + ], + "s-781-3000-1401-0": [ + { type: "text", sub_type: "message", message: "Plague/Regress", message_RU: "Регресс!!" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 15, 175, 1000, 7000] } + ], + "s-781-3000-1402-0": [{ type: "text", sub_type: "message", message: "Sleep", message_RU: "Слип!!" }], + "s-781-3000-1701-0": [{ type: "text", sub_type: "message", message: "Back + Front", message_RU: "Назад + Вперед" }], + // + "s-781-3000-1113-0": [{ type: "text", sub_type: "message", message: "Bait", message_RU: "Байт" }], + "s-781-3000-1151-0": [{ type: "text", sub_type: "message", message: "Attention Stun", message_RU: "Стан" }], + "s-781-3000-1152-0": [{ type: "text", sub_type: "message", message: "Stun + Back", message_RU: "Стан + Откид назад" }], + "s-781-3000-1152-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1900 }], + "s-781-3000-1138-0": [{ type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 250, 0, 6000] }], + "s-781-3000-2113-0": "s-781-3000-1113-0", + "s-781-3000-2151-0": "s-781-3000-1151-0", + "s-781-3000-2152-0": "s-781-3000-1152-0", + "s-781-3000-2152-1": "s-781-3000-1152-1", + "s-781-3000-2138-0": "s-781-3000-1138-0", + "s-781-3000-2136-0": "s-781-3000-1136-0", + "s-781-3000-2136-1": "s-781-3000-1136-1" + }; }; \ No newline at end of file diff --git a/guides/9782.js b/guides/9782.js index fe23b22f..1497cf40 100644 --- a/guides/9782.js +++ b/guides/9782.js @@ -1,250 +1,230 @@ -// -//made by michengs -let rad = 600; -let print = true; -let notice_guide = true; -let player, entity, library, effect; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); +// Grotto of Lost Souls +// +// made by michengs / HSDN / Calvary -handlers['text']({ -"sub_type": "notification", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); -} -notice_guide = false; +module.exports = (dispatch, handlers, guide, lang) => { -} - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } -// 召喚光柱 ,告示牌提示( 角度 距离 时间) -function SpawnThing( degrees, radius, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "SAFE SPOT", - "message": "SAFE" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} - //构建直线(提示标志 角度 最远距离 时间) -function Spawnitem1(item,degrees, maxRadius, times, handlers, event, entity) { - let angle = degrees * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, entity); - } -} - + let color = 0; + let debuff = 0; + let print_wave = true; - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay,times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -// 召喚告示牌提示( 角度 距离 时间) + const is_mt = dispatch._mod.connection.metadata.serverList[dispatch._mod.serverId].name.includes("MT"); -function start_3boss40(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message_TW": "30%-------------------------" -}); -} -print = false; -setTimeout(() => print = true, 10000); -} + return { + // 1 BOSS + "nd-782-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-782-1000-106-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Heavy", message_RU: "Тяжелый удар" }], + "s-782-1000-107-0": [ + { type: "text", class_position: "dps", sub_type: "message", message: "Pushback", message_RU: "Откид назад" }, + { type: "text", class_position: "heal", sub_type: "message", message: "Pushback (Kaia)", message_RU: "Откид назад (кайа)" }, + { type: "spawn", func: "vector", args: [553, 90, 30, 140, 600, 1000, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 30, -140, 600, 1000, 2000] } + ], + "s-782-1000-108-0": [ + { type: "text", sub_type: "message", message: "Bait Front (Flying)", message_RU: "Байт вперед (подлет)" } + ], + "s-782-1000-108-1": [ + { type: "spawn", func: "vector", args: [553, 90, 140, 5, 620, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 270, 140, 355, 620, 0, 1500] } + ], + "s-782-1000-109-0": [{ type: "text", sub_type: "message", message: "Rocks (Small)", message_RU: "Камни (малые)" }], + "s-782-1000-110-0": [{ type: "text", sub_type: "message", message: "Rocks (Large)", message_RU: "Камни (большие)" }], + "s-782-1000-111-0": [ + { type: "text", sub_type: "message", message: "Stun (Dodge)", message_RU: "Стан (эвейд)", delay: 1500 }, + { type: "spawn", func: "circle", args: [true, 553, 180, 50, null, 350, 1500, 2000] } + ], + "s-782-1000-113-0": [{ type: "text", sub_type: "message", message: "Thorns (Bleed)", message_RU: "Колючки (кровоток)" }], + "s-782-1000-116-0": [ + { type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 2000 } + ], + "s-782-1000-301-0": [ + { type: "text", sub_type: "message", message: "Flower Stuns", message_RU: "Оглушающие цветы" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 2000 } + ], + "s-782-1000-307-0": [{ type: "text", sub_type: "message", message: "Cage (Don't move)", message_RU: "Клетка (не двигаться)" }], + // Flowers mech + "ab-782-1003-78200161": [ + { type: "text", sub_type: "message", message: "Green", message_RU: "Зеленый" }, + { type: "func", func: () => color = 1 } + ], + "ab-782-1003-78200162": [ + { type: "text", sub_type: "message", message: "Violet", message_RU: "Фиолетовый" }, + { type: "func", func: () => color = 2 } + ], + "ae-0-0-78200148": [{ type: "func", func: () => debuff = 1 }], // green + "ae-0-0-78200149": [{ type: "func", func: () => debuff = 2 }], // violet + "s-782-1000-201-0": [{ type: "text", sub_type: "alert", message: "Change Debuff", message_RU: "Сменить дебаф", check_func: () => debuff !== 0 && color !== debuff, delay: 5000 }], + "s-782-1000-309-0": [ + { type: "text", sub_type: "message", message: "One Flower", message_RU: "Один цветок" }, + { type: "text", sub_type: "alert", message: "Dodge the flower!", message_RU: "Заэвейдить цветок!", check_func: () => color === debuff, delay: 1500 } + ], + "s-782-1000-310-0": [ + { type: "text", sub_type: "message", message: "Two Flowers", message_RU: "Два цветка" }, + { type: "text", sub_type: "alert", message: "Dodge ONE flower!", message_RU: "Заэвейдить один цветок!", check_func: () => color !== debuff, delay: 1500 } + ], + "s-782-1000-312-0": [ + { type: "text", sub_type: "message", message: "Break Golden Flower", message_RU: "Разбить золотой цветок" }, + { type: "text", sub_type: "alert", message: "Dodge the Flower!", message_RU: "Заэвейдить цветок!", check_func: () => color === debuff, delay: 1500 } + ], + "s-782-1000-308-0": [ + { type: "func", func: () => color = 0 }, + { type: "func", func: () => debuff = 0 } + ], - //构建特殊直线(提示标志 角度 最远距离 时间) -function Spawnitem11(item,degrees, maxRadius, times, handlers, event, entity) { - let shield = entity['loc'].clone(); - shield.w = entity['loc'].w; - let X = Math.pow((-95703 - shield.x), 2), - Y = Math.pow((144980 - shield.y), 2), - C = Math.pow(X+Y, 0.5); - - if (C < 500) return; - let angle = degrees * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, entity); - } -} + // 2 BOSS + "nd-782-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-782-2000-105-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Кувырок" }], + "s-782-2000-108-0": [{ type: "text", sub_type: "message", message: "Dodge. Shot Forward", message_RU: "Эвейд. Выстрел вперед", delay: 500 }], + "s-782-2000-109-0": [{ type: "text", sub_type: "message", message: "Wave Forward", message_RU: "Волна вперед" }], + "s-782-2000-112-0": [{ type: "text", sub_type: "message", message: "Kick Forward", message_RU: "Удар вперед" }], + "s-782-2000-113-0": [ + { type: "text", sub_type: "message", message: "Stun (AoE)", message_RU: "Стан (АоЕ)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 310, 0, 3000] } + ], + "s-782-2000-114-0": [ + { type: "text", sub_type: "message", message: "Get In", message_RU: "К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 260, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 600, 0, 5000] } + ], + "s-782-2000-116-0": [ + { type: "text", sub_type: "message", message: "Front | Back", message_RU: "Передняя | Задняя" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 270, 500, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 180, 0, 90, 500, 0, 5000] } + ], + "s-782-2000-117-0": "s-782-2000-116-0", + "s-782-2000-301-0": [ + { type: "text", sub_type: "message", message: "Get Out | Dodge", message_RU: "От него | Эвейд" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 3700 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 260, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 650, 0, 3000] } + ], + "s-782-2000-302-0": [ + { type: "text", sub_type: "message", message: "Get In | Dodge", message_RU: "К нему | Эвейд" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 3700 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 260, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 650, 0, 3000] } + ], + "s-782-2000-307-0": [{ type: "text", sub_type: "message", message: "Target", message_RU: "Таргет" }], + "s-782-2000-307-2": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], -// 召喚特殊告示牌提示( 角度 距离 时间) -function SpawnThingob( degrees, radius, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - let shield = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - shield.w = entity['loc'].w; - - - let X = Math.pow((-95703 - shield.x), 2), - Y = Math.pow((144980 - shield.y), 2), - C = Math.pow(X+Y, 0.5); - - if (C < 500) return; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "位置", - "message": "位置" - }, {loc: shield_loc}); - -} - -module.exports = { - - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - //"h-782-1000-100": [{"type": "func","func": guid_voice}], - - - - "h-782-3000-30": [{"type": "func","func": start_3boss40}], - "s-782-3022-101-0": [{"type": "func","func": Spawnitem11.bind(null,912,0,420,8000)}, - {"type": "func","func": SpawnThingob.bind(null,0,105,8000)}, - {"type": "func","func": SpawnThingob.bind(null,0,210,8000)}, - {"type": "func","func": SpawnThingob.bind(null,0,315,8000)}, - {"type": "func","func": SpawnThingob.bind(null,0,420,8000)} ], - - //一王 - - - "s-782-1000-106-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "Heavy","message_TW": "重击" }], - "s-782-1000-107-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "Pushback","message_TW": "后喷击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "Pushback","message_TW": "后喷击退" }], - "s-782-1000-108-0": [{"type": "text","class_position":"dps","sub_type": "message","message_TW": "点名击飞" }, - {"type": "text","class_position":"heal","sub_type": "message","message_TW": "点名击飞" }], - "s-782-1000-109-0": [{"type": "text","sub_type": "message","message": "Rocks (Small)","message_TW": "滚石" }], - "s-782-1000-110-0": [{"type": "text","sub_type": "message","message": "Rocks (Large)","message_TW": "滚石" }], - "s-782-1000-301-0": [{"type": "text","sub_type": "message","message": "Flower stuns","message_TW": "食人花眩晕" }], - "s-782-1000-307-0": [{"type": "text","class_position":"dps","sub_type": "message","message_TW": "笼子禁锢" }, - {"type": "text","class_position":"heal","sub_type": "message","message_TW": "笼子禁锢" }], - "s-782-1000-309-0": [{"type": "text","sub_type": "message","message": "1 flower","message_TW": "1朵花-鉴定!!" }], - "s-782-1000-310-0": [{"type": "text","sub_type": "message","message": "2 flower","message_TW": "2朵花-鉴定!!" }], - "s-782-1000-116-0": [{"type": "text","sub_type": "message","message": "Big AoE attack!!","message_TW": "全屏攻击!!" }], - "s-782-1000-312-0": [{"type": "text","sub_type": "message","message": "Golden flower!!","message_TW": "金色花!!" }], - //二王 - - "s-782-2000-105-0": [{"type": "text","sub_type": "message","message": "Spin","message_TW": "翻滚" }], - "s-782-2000-113-0": [{"type": "text","sub_type": "message","message": "Stun inc","message_TW": "双手眩晕" }], - "s-782-2000-114-0": [{"type": "text","sub_type": "message","message": "Get IN","message_TW": "三连地板靠近" }, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,260,0,3000)}], - "s-782-2000-116-0": [{"type": "text","sub_type": "message","message": "Front then Back","message_TW": "前砸 后砸" }, - {"type": "func","func": Spawnitem1.bind(null,912,90,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,270,500,5000)}], - "s-782-2000-301-0": [{"type": "text","sub_type": "message","message": "↓ Get OUT + dodge","message_TW": "捶地远离 旋转击退"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,260,0,3000)}], - "s-782-2000-302-0": [{"type": "text","sub_type": "message","message": "↑ Get IN + dodge","message_TW": "旋转靠近 捶地击飞" }, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,260,0,3000)}], - -//三王 - - - "s-782-3000-118-0": [{"type": "text","sub_type": "message","message": "Front triple","message_TW": "三连击左-右-喷" }], - "s-782-3000-143-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←←","message_TW": "左后" }], - "s-782-3000-145-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←←","message_TW": "左后" }], - "s-782-3000-146-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←← (pulses)","message_TW": "左后扩散" }, - {"type": "func","func": SpawnThing.bind(null,215,370,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,6,800,2500,8000)}], - "s-782-3000-154-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←← (pulses)","message_TW": "左后扩散" }, - {"type": "func","func": SpawnThing.bind(null,215,370,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,6,800,2500,8000)}], - "s-782-3000-144-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→","message_TW": "右后" }], - "s-782-3000-147-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→","message_TW": "右后" }], - "s-782-3000-148-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→ (pulses)","message_TW": "右后扩散" }, - {"type": "func","func": SpawnThing.bind(null,155,388,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,6,800,2500,8000)}], - "s-782-3000-155-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→ (pulses)","message_TW": "右后扩散" }, - {"type": "func","func": SpawnThing.bind(null,155,388,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,6,800,2500,8000)}], - "s-782-3000-161-0": [{"type": "text","sub_type": "message","message": "Back then Front","message_TW": "后砸 前砸" }], - "s-782-3000-162-0": [{"type": "text","sub_type": "message","message": "Back then Front","message_TW": "后砸 前砸" }], - "s-782-3000-213-0": [{"type": "text","sub_type": "message","message": "Tail","message_TW": "尾巴" }], - "s-782-3000-215-0": [{"type": "text","sub_type": "message","message": "Tail!!","message_TW": "尾巴!!" }], - "s-782-3000-139-0": [{"type": "text","sub_type": "message","message": "Left safe","message_TW": "打右边" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,270,200,8000)} ], - "s-782-3000-150-0": [{"type": "text","sub_type": "message","message": "Left safe","message_TW": "打右边" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,270,200,8000)}], - "s-782-3000-141-0": [{"type": "text","sub_type": "message","message": "Right safe","message_TW": "打左边" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,90,200,8000)}], - "s-782-3000-152-0": [{"type": "text","sub_type": "message","message": "Right safe","message_TW": "打左边" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,90,200,8000)}], - "s-782-3000-300-0": [{"type": "text","sub_type": "message","message": "Dodge!! (Awakening 1","message_TW": "一次觉醒 推人" }], - "s-782-3000-399-0": [{"type": "text","sub_type": "message","message": "Dodge!! (Awakening 2)","message_TW": "二次觉醒 推人" }], - "s-782-3000-360-0": [{"type": "text","sub_type": "message","message": "Explosion!!","message_TW": "爆炸爆炸" }] + // 3 BOSS + "nd-782-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-782-3000-99": [{ type: "func", func: () => print_wave = true }], + "h-782-3000-80": [{ type: "text", sub_type: "message", message: "80%", message_RU: "80%", check_func: () => !is_mt }], + "h-782-3000-70": [{ type: "text", sub_type: "message", message: "70%", message_RU: "70%", check_func: () => is_mt }], + "s-782-3000-109-0": [{ type: "text", sub_type: "message", message: "Front Throw (Target)", message_RU: "Удар вперед (таргет)" }], + "s-782-3000-134-0": [{ type: "text", sub_type: "message", message: "Front Throw (Target)", message_RU: "Удар вперед (таргет)" }], + "s-782-3000-118-0": [{ type: "text", sub_type: "message", message: "Front Triple", message_RU: "Передняя комба" }], + "s-782-3000-143-0": [ + { type: "text", sub_type: "message", message: "Left Rear", message_RU: "Слева сзади" }, + { type: "spawn", func: "circle", args: [true, 553, 200, 330, null, 280, 0, 3000] } + ], + "s-782-3000-145-0": "s-782-3000-143-0", + "s-782-3000-144-0": [ + { type: "text", sub_type: "message", message: "Right Rear", message_RU: "Справа сзади" }, + { type: "spawn", func: "circle", args: [true, 553, 160, 330, null, 280, 0, 3000] } + ], + "s-782-3000-147-0": "s-782-3000-144-0", + "s-782-3000-146-0": [ + { type: "text", sub_type: "message", message: "Pulses Left", message_RU: "Бублики слева" }, + { type: "spawn", func: "circle", args: [true, 553, 200, 350, null, 280, 500, 2000] }, + { type: "spawn", func: "marker", args: [false, 215, 370, is_mt ? 3200 : 5300, 3000, true, null] }, // 1 + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 15, 160, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 12, 320, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 10, 480, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 8, 640, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 6, 800, 2000, 6000] } + ], + "s-782-3000-154-0": [ + { type: "text", sub_type: "message", message: "Pulses Left", message_RU: "Бублики слева" }, + { type: "spawn", func: "circle", args: [true, 553, 200, 350, null, 280, 500, 2000] }, + { type: "spawn", func: "marker", args: [false, 215, 370, is_mt ? 3200 : 4200, 4000, true, null] }, // 2 + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 15, 160, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 12, 320, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 10, 480, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 8, 640, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 6, 800, 2000, 6000] } + ], + "s-782-3000-148-0": [ + { type: "text", sub_type: "message", message: "Pulses Right", message_RU: "Бублики справа" }, + { type: "spawn", func: "circle", args: [true, 553, 160, 350, null, 280, 500, 2000] }, + { type: "spawn", func: "marker", args: [false, 155, 388, is_mt ? 3200 : 5300, 3000, true, null] }, // 1 + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 15, 160, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 12, 320, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 10, 480, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 8, 640, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 6, 800, 2000, 6000] } + ], + "s-782-3000-155-0": [ + { type: "text", sub_type: "message", message: "Pulses Right", message_RU: "Бублики справа" }, + { type: "spawn", func: "circle", args: [true, 553, 160, 350, null, 280, 500, 2000] }, + { type: "spawn", func: "marker", args: [false, 155, 388, is_mt ? 3200 : 4200, 4000, true, null] }, // 2 + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 15, 160, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 12, 320, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 10, 480, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 8, 640, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 6, 800, 2000, 6000] } + ], + "s-782-3000-161-0": [ + { type: "text", sub_type: "message", message: "Front | Back", message_RU: "Вперед | Назад" }, + { type: "spawn", func: "circle", args: [true, 553, 180, 310, null, 290, 3000, 2500] } + ], + "s-782-3000-162-0": [ + { type: "text", sub_type: "message", message: "Front | Back", message_RU: "Вперед | Назад" }, + { type: "spawn", func: "circle", args: [true, 553, 180, 310, null, 290, 3000, 2500] } + ], + "s-782-3000-213-0": [{ type: "text", sub_type: "message", message: "Tail", message_RU: "Хвост" }], + "s-782-3000-215-0": [{ type: "text", sub_type: "message", message: "Tail (Combo)", message_RU: "Хвост (комба)" }], + "s-782-3000-139-0": [ + { type: "text", sub_type: "message", message: "Wave + Wing (Left Safe)", message_RU: "Волна (лево сейф)", check_func: () => print_wave }, + { type: "despawn_all", tag: "wave" }, + { type: "spawn", func: "vector", args: [912, 90, 0, 0, 600, 100, 3000], tag: "wave" }, + { type: "spawn", func: "vector", args: [912, 270, 0, 180, 600, 100, 3000], tag: "wave" }, + { type: "spawn", func: "marker", args: [false, 270, 200, 100, 4000, true, null], tag: "wave" }, + { type: "func", func: () => print_wave = false }, + { type: "func", func: () => print_wave = true, delay: 8000 } + ], + "s-782-3000-139-1": "s-782-3000-139-0", + "s-782-3000-139-2": "s-782-3000-139-0", + "s-782-3000-150-0": "s-782-3000-139-0", // + "s-782-3000-150-1": "s-782-3000-139-0", + "s-782-3000-150-2": "s-782-3000-139-0", + "s-782-3000-141-0": [ + { type: "text", sub_type: "message", message: "Wave + Wing (Right Safe)", message_RU: "Волна (право сейф)", check_func: () => print_wave }, + { type: "despawn_all", tag: "wave" }, + { type: "spawn", func: "vector", args: [912, 90, 0, 0, 600, 100, 3000], tag: "wave" }, + { type: "spawn", func: "vector", args: [912, 270, 0, 180, 600, 100, 3000], tag: "wave" }, + { type: "spawn", func: "marker", args: [false, 90, 200, 100, 4000, true, null], tag: "wave" }, + { type: "func", func: () => print_wave = false }, + { type: "func", func: () => print_wave = true, delay: 8000 } + ], + "s-782-3000-141-1": "s-782-3000-141-0", + "s-782-3000-141-2": "s-782-3000-141-0", + "s-782-3000-152-0": "s-782-3000-141-0", // + "s-782-3000-152-1": "s-782-3000-141-0", + "s-782-3000-152-2": "s-782-3000-141-0", + "s-782-3000-300-0": [ + { type: "text", sub_type: "message", message: "3" }, + { type: "text", sub_type: "message", delay: 400, message: "2" }, + { type: "text", sub_type: "message", delay: 800, message: "1" }, + { type: "text", sub_type: "message", delay: 1200, message: "Dodge! (Awakening 1)", message_RU: "Эвейд! (Пробуждение 1)" } + ], // <80% + "s-782-3000-360-0": [{ type: "text", sub_type: "message", message: "Dodge! (Explosion)", message_RU: "Эвейд! (взрыв)" }], + "s-782-3000-351-0": [ + { type: "text", sub_type: "message", message: "Stones", message_RU: "Камни" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 2000 }, + { type: "text", sub_type: "message", message: "Line up to the plate", message_RU: "Выстроиться к плите", delay: 4000 }, + { type: "text", sub_type: "message", message: "Kaia!", message_RU: "Кайа!", delay: 9500 } + ] + }; }; \ No newline at end of file diff --git a/guides/9783.js b/guides/9783.js index 64c7efe0..e9e02470 100644 --- a/guides/9783.js +++ b/guides/9783.js @@ -1,205 +1,187 @@ -//DRC -//made by michengs +// Dark Reach Citadel +// +// made by ITunk / HSDN / FrostSigil -let notice_guide = true; -let player, entity, library, effect; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message": "获取更多信息 proxy频道输入:補助 help" -}); +module.exports = (dispatch, handlers, guide, lang) => { + let firstboss_prepare_stun = false; + let secondboss_show_book_notify = true; + let secondboss_game_id_for_book = null; + let secondboss_red_book_loc = null; + let secondboss_blue_book_loc = null; + let secondboss_green_book_loc = null; -handlers['text']({ -"sub_type": "notification", -"delay": 2000, -"message": "获取更多信息 proxy频道输入:補助 help" -}); -} -notice_guide = false; + function closest(nums, num) { + return nums.reduce((prev, curr) => (Math.abs(curr - num) < Math.abs(prev - num) ? curr : prev)); + } -} -const SPAWN_CIRCLES = true; -const steptwo = 2 * Math.PI / 30;//20 flowers in total -//内圈 -let SPAWNING_FIRST_CIRCLE_FLOWERS = []; -let SPAWNING_SECOND_CIRCLE_FLOWERS = []; -let SPAWNING_THIRD_CIRCLE_FLOWERS = []; -//外圈 + dispatch.hook("S_NPC_LOCATION", "*", e => { + if (!secondboss_show_book_notify || e.gameId !== secondboss_game_id_for_book) return; -for(let angle = -Math.PI; angle <= Math.PI; angle += steptwo) { - if(!SPAWN_CIRCLES) continue; - SPAWNING_FIRST_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": 680, - "offset": angle - }); - - SPAWNING_THIRD_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 6000, - "distance": 225, - "offset": angle - }); - -} - - -let SPAWNING_right_FLOWERS = []; //303 -let SPAWNING_left_FLOWERS = []; //306 -for (let distance = 50; distance <= 250; distance += 50) { - SPAWNING_right_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": 1.57 - }, -{ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": -1.57 - }, - -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": -1.39 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": -1.39 - - } , - -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": 1.745 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": 1.745 - - }); - - SPAWNING_left_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": 1.57 - }, -{ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": -1.57 - }, -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": 1.39 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": 1.39 - } , -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": -1.745 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": -1.745 - }); -} + const books = [ + e.loc.angleTo(secondboss_red_book_loc), // Red book + e.loc.angleTo(secondboss_blue_book_loc), // Blue book + e.loc.angleTo(secondboss_green_book_loc) // Green book + ]; - + const book = books.indexOf(closest(books, e.w)); -module.exports = { + switch (book) { + case 0: // Red -> Blue + handlers.alias({ id: "ab-783-2000-78300222" }); + break; + case 1: // Blue -> Green + handlers.alias({ id: "ab-783-2000-78300223" }); + break; + case 2: // Green -> Red + handlers.alias({ id: "ab-783-2000-78300224" }); + break; + } - //"h-783-1000-100": [{"type": "text","sub_type": "message", "message": "地毯眩晕" }].concat(SPAWNING_left_FLOWERS), -// "h-783-1000-100": [{"type": "func","func": guid_voice}], - - - - "s-783-1000-108-0": [{"type": "text","sub_type": "message","message": "back stun","message_TW": "后跳眩晕" }], - "s-783-1000-109-0": [{"type": "text","sub_type": "message","message": "Knockback","message_TW": "后扫击退" }], - "s-783-1000-119-0": [{"type": "text","sub_type": "message","message": "energy","message_TW": "蓄力捶地" }], - "s-783-1000-127-0": [{"type": "text","sub_type": "message","message": "thunder","message_TW": "雷电!!" }], - "dm-0-0-9783103": [{"type": "text","sub_type": "message","message": "100","message_TW": "100能量鉴定!!" }], - "dm-0-0-9783103": [{"type": "text","sub_type": "message","message": "100","message_TW": "100能量鉴定!!" }], - //二王 - "s-783-2000-110-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_TW": "前砸闪避" }], - "s-783-2000-111-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "right back","message_TW": "右后踢击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "right back","message_TW": "右后踢击退" }], - "s-783-2000-115-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "left back","message_TW": "左后踢击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "left back","message_TW": "左后踢击退" }], - "s-783-2000-119-0": [{"type": "text","sub_type": "message","message": "jump stun","message_TW": "跳跃眩晕" }], - "s-783-2000-120-0": [{"type": "text","sub_type": "message","message": "front + back","message_TW": "前拳+后踢击退" }], - "s-783-2000-316-0": [{"type": "text","sub_type": "message","message": "Flame Blast","message_TW": "火焰爆炸" }], - "s-783-2000-317-0": [{"type": "text","sub_type": "message","message": "water wave","message_TW": "水波击飞" }], - "s-783-2000-318-0": [{"type": "text","sub_type": "message","message": "stun","message_TW": "地毯眩晕" }].concat(SPAWNING_FIRST_CIRCLE_FLOWERS), - - - - //三王 - "s-783-3000-106-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_TW": "前推击退" }], - "s-783-3000-109-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "stun","message_TW": "前插眩晕" }], - "s-783-3000-112-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "Knockback","message_TW": "后扫击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "Knockback","message_TW": "后扫击退" }], - "s-783-3000-301-0": [{"type": "text","sub_type": "message","message": "diaup","message_TW": "地刺击飞" }], - - "s-783-3000-303-0": [{"type": "text","sub_type": "message","message": "right","message_TW": "右" }].concat(SPAWNING_right_FLOWERS), - "s-783-3000-306-0": [{"type": "text","sub_type": "message","message": "left","message_TW": "左" }].concat(SPAWNING_left_FLOWERS), - "s-783-3000-309-0": [{"type": "text","sub_type": "message","message": "Debuffs","message_TW": "注视!!" }], - "s-783-3000-315-0": [{"type": "text","sub_type": "message","message": "suck blood","message_TW": "恐惧吸血" }] + secondboss_show_book_notify = false; + secondboss_game_id_for_book = null; + }); + return { + // 1 BOSS + "nd-783-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-783-1008": [{ type: "text", sub_type: "message", message: "Take Balls", message_RU: "Взять сферы" }], + "s-783-1000-101-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Кувырок (стан)", check_func: () => firstboss_prepare_stun }], + "s-783-1000-102-0": [ + { type: "func", func: () => firstboss_prepare_stun = true }, + { type: "func", func: () => firstboss_prepare_stun = false, delay: 2700 } + ], + "s-783-1000-104-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-783-1000-109-0": [{ type: "text", sub_type: "message", message: "Push Back", message_RU: "Откид назад" }], + "s-783-1000-119-0": [{ type: "text", sub_type: "message", message: "Dodge (Heavy Attack)", message_RU: "Эвейд (тяжелый удар)", delay: 300 }], + "s-783-1000-127-0": [{ type: "text", sub_type: "message", message: "Many Attack", message_RU: "Серия ударов" }], + "s-783-1000-128-0": [{ type: "text", sub_type: "message", message: "Lazer", message_RU: "Луч" }], + "s-783-1000-130-0": "s-783-1000-128-0", + "s-783-1000-301-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1900 }], + "s-783-1000-304-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Стяжка" }], + "s-783-1000-305-0": [{ type: "text", sub_type: "message", message: "Triple Laser (Together)", message_RU: "Тройной лазер (собраться)" }], + // 2 BOSS + "nd-783-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-783-2001": [ // Red book + { type: "func", func: ent => secondboss_red_book_loc = ent.loc }, + { type: "func", func: () => secondboss_show_book_notify = true } + ], + "ns-783-2002": [ // Blue book + { type: "func", func: ent => secondboss_blue_book_loc = ent.loc }, + { type: "func", func: () => secondboss_show_book_notify = true } + ], + "ns-783-2003": [ // Green book + { type: "func", func: ent => secondboss_green_book_loc = ent.loc }, + { type: "func", func: () => secondboss_show_book_notify = true } + ], + "ab-783-2000-78300222": [ // Red + { type: "event", check_func: () => secondboss_show_book_notify, args: [ + { type: "text", sub_type: "message", message: "Take Blue Book", message_RU: "Взять синюю книгу" }, + { type: "text", sub_type: "notification", message: "Take [c=#7777ff]Blue[/c] Book", message_RU: "Взять [c=#7777ff]синюю[/c] книгу", speech: false }, + { type: "func", func: () => secondboss_show_book_notify = false } + ] } + ], + "ab-783-2000-78300223": [ // Blue + { type: "event", check_func: () => secondboss_show_book_notify, args: [ + { type: "text", sub_type: "message", message: "Take Green Book", message_RU: "Взять зеленую книгу" }, + { type: "text", sub_type: "notification", message: "Take [c=#77ff77]Green[/c] Book", message_RU: "Взять [c=#77ff77]зеленую[/c] книгу", speech: false }, + { type: "func", func: () => secondboss_show_book_notify = false } + ] } + ], + "ab-783-2000-78300224": [ // Green + { type: "event", check_func: () => secondboss_show_book_notify, args: [ + { type: "text", sub_type: "message", message: "Take Red Book", message_RU: "Взять красную книгу" }, + { type: "text", sub_type: "notification", message: "Take [c=#ff7777]Red[/c] Book", message_RU: "Взять [c=#ff7777]красную[/c] книгу", speech: false }, + { type: "func", func: () => secondboss_show_book_notify = false } + ] } + ], + "s-783-2000-105-0": [{ type: "text", sub_type: "message", message: "Whip (Dodge)", message_RU: "Хлыст (эвейд)" }], + "s-783-2000-110-0": [{ type: "text", sub_type: "message", message: "Front Attack (Dodge)", message_RU: "Удар вперед (эвейд)" }], + "s-783-2000-112-0": [{ type: "text", sub_type: "message", message: "Push Back (Right)", message_RU: "Откид назад правой" }], + "s-783-2000-114-0": [{ type: "text", sub_type: "message", message: "Ground Hit (Dodge)", message_RU: "Удар в землю (эвейд)" }], + "s-783-2000-115-0": [{ type: "text", sub_type: "message", message: "Push Back (Left)", message_RU: "Откид назад левой" }], + "s-783-2000-119-0": [{ type: "text", sub_type: "message", message: "Jump (Dodge)", message_RU: "Прыжок (эвейд)" }], + "s-783-2000-120-0": [{ type: "text", sub_type: "message", message: "Front Attack | Push Back", message_RU: "Удар вперед | Откид назад" }], + "s-783-2000-206-0": [{ type: "func", func: ent => secondboss_game_id_for_book = ent.gameId }], // prepare to take the book + "s-783-2000-316-0": [{ type: "text", sub_type: "message", message: "Fire AOE", message_RU: "Огненное АОЕ" }], + "s-783-2000-306-0": [ + { type: "text", sub_type: "message", message: "Dodge | Out", message_RU: "Эвейд | От него" }, + { type: "spawn", func: "circle", args: [true, 553, 0, -50, null, 375, 0, 5000] } + ], + "s-783-2000-317-0": [{ type: "text", sub_type: "message", message: "Water AOE", message_RU: "Водяное АОЕ" }], + "s-783-2000-318-0": [ + { type: "text", sub_type: "message", message: "Dodge (Get out)", message_RU: "Эвейд (отбежать)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, -50, null, 700, 0, 7000] } + ], + "s-783-2000-324-0": [{ type: "text", sub_type: "message", message: "Dodge (Pull)", message_RU: "Эвейд (притяжка)", delay: 2400 }], + // 3 BOSS + "nd-783-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-783-3000-106-0": [{ type: "text", sub_type: "message", message: "Push (Tank)", message_RU: "Откид (танк)" }], + "s-783-3000-110-0": [{ type: "text", sub_type: "message", message: "Throw Front (Stun)", message_RU: "Удар вперед (стан)" }], + "s-783-3000-113-0": [{ type: "text", sub_type: "message", message: "Push Back", message_RU: "Откид назад" }], + "s-783-3000-114-0": [{ type: "text", sub_type: "message", message: "Bait (Target)", message_RU: "Байт (таргет)" }], + "s-783-3000-116-0": [ // 116 - 117 - 118 + { type: "text", sub_type: "message", message: "Throw Back (Stun)", message_RU: "Удар назад (стан)" }, + { type: "spawn", func: "circle", args: [true, 553, 205, 410, null, 220, 0, 2000] } + ], + "s-783-3000-119-0": [ // 119 - 120 - 121 + { type: "text", sub_type: "message", message: "Throw Back (Stun)", message_RU: "Удар назад (стан)" }, + { type: "spawn", func: "circle", args: [true, 553, 155, 410, null, 220, 0, 2000] } + ], + "s-783-3000-122-0": [ // 122 - 123 - 124 + { type: "text", sub_type: "message", message: "Throw (Target)", message_RU: "Удар (таргет)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 550, null, 180, 0, 2000] } + ], + "s-783-3000-123-0": [ + { type: "spawn", func: "vector", args: [553, 90, 80, 0, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 0, 500, 0, 2000] } + ], + "s-783-3000-124-0": [{ type: "text", sub_type: "message", message: "AoE (Dodge)", message_RU: "АоЕ (эвейд)" }], + "s-783-3000-125-0": [{ type: "text", sub_type: "message", message: "Hit | Frontal Stun", message_RU: "Удар | Передний стан" }], + "s-783-3000-126-0": [ + { type: "text", sub_type: "message", message: "Frontal Stun", message_RU: "Передний стан" }, + { type: "spawn", func: "vector", args: [553, 60, 220, 20, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 300, 220, 340, 500, 0, 2000] } + ], + "s-783-3000-127-0": [ + { type: "text", sub_type: "message", message: "Back Hit", message_RU: "Удар назад" }, + { type: "spawn", func: "circle", args: [true, 553, 180, 350, null, 380, 0, 2000] } + ], + "s-783-3000-129-0": [{ type: "text", sub_type: "message", message: "Somersault | Back Hit", message_RU: "Кувырок | Удар назад" }], + "s-783-3000-130-0": [ + { type: "text", sub_type: "message", message: "Back Hit (Bleed)", message_RU: "Удар назад (кровоток)" }, + { type: "spawn", func: "circle", args: [true, 553, 180, 340, null, 250, 0, 2000] } + ], + "s-783-3000-142-0": [{ type: "text", sub_type: "message", message: "Frontal Combo", message_RU: "Передняя комба" }], + "s-783-3000-301-0": [ + { type: "text", sub_type: "message", message: "Thorns (Target)", message_RU: "Шипы х5" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 2200 } + ], + "s-783-3000-303-0": [ + { type: "text", sub_type: "message", message: "Right Safe", message_RU: "Право сейф" }, + { type: "spawn", func: "marker", args: [false, 120, 250, 0, 4000, true, null] }, + { type: "spawn", func: "marker", args: [false, 300, 250, 0, 4000, true, null] } + ], + "s-783-3000-306-0": [ + { type: "text", sub_type: "message", message: "Left Safe", message_RU: "Лево сейф" }, + { type: "spawn", func: "marker", args: [false, 240, 250, 0, 4000, true, null] }, + { type: "spawn", func: "marker", args: [false, 60, 250, 0, 4000, true, null] } + ], + "s-783-3000-309-0": [{ type: "text", sub_type: "message", message: "Debuff!!!", message_RU: "Дебафф!!!" }], + "s-783-3000-315-0": [ + { type: "text", sub_type: "message", message: "Dodge | Out", message_RU: "Эвейд | От него" }, + { type: "spawn", func: "circle", args: [false, 553, 180, 0, null, 400, 0, 6000] } + ], + "s-783-3003-411-0": [{ type: "spawn", func: "vector", args: [912, 0, 0, 0, 1600, 0, 3000] }] + }; }; \ No newline at end of file diff --git a/guides/9794.js b/guides/9794.js new file mode 100644 index 00000000..fb22086f --- /dev/null +++ b/guides/9794.js @@ -0,0 +1,101 @@ +// Thaumetal Refinery +// +// made by ITunk / Vampic + +module.exports = (dispatch, handlers, guide, lang) => { + const { entity } = dispatch.require.library; + + let blue_vaccine_loc = null; + let red_vaccine_loc = null; + const road_from_gameIds = new Set(); + + function spawn_road(loc) { + road_from_gameIds.forEach(road_from_gameId => { + const road_from_ent = entity.mobs[road_from_gameId]; + if (road_from_ent && loc) { + const angle = (road_from_ent.pos.angleTo(loc) - road_from_ent.pos.w) * 180 / Math.PI; + const distance = road_from_ent.pos.dist2D(loc); + handlers.event([ + { type: "spawn", func: "vector", args: [553, -90 + angle, 50, angle, distance, 0, 10000] }, + { type: "spawn", func: "vector", args: [553, 90 + angle, 50, angle, distance, 0, 10000] } + ], { loc: road_from_ent.pos }); + } + }); + } + + dispatch.hook("S_ABNORMALITY_BEGIN", dispatch._mod.majorPatchVersion >= 107 ? 5 : 4, event => { + if (event.id === 7941030) { + if (dispatch._mod.game.me.is(event.target)) { + handlers.text({ sub_type: "message", message: "Put banana to the tree", message_RU: "Положить банан к дереву" }); + } + } + }); + + return { + // 1 BOSS + "nd-794-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-794-1000-103-0": [ + { type: "text", sub_type: "message", message: "AOE Stun (Dodge)", message_RU: "АОЕ стан (эвейд)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 125, null, 250, 0, 2000] } + ], + "s-794-1000-107-0": [ + { type: "text", sub_type: "message", message: "Jump (Dodge)", message_RU: "Прыжок (эвейд)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, null, 250, 2500, 2500] } + ], + "s-794-1000-115-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 }], + "s-794-1000-119-0": [{ type: "text", sub_type: "message", message: "Pushback", message_RU: "Откид назад" }], + "s-794-1000-315-0": [{ type: "text", sub_type: "message", message: "In", message_RU: "К нему" }], + "ae-0-0-7941002": [{ type: "text", sub_type: "message", message: "Eye (boss to banana)", message_RU: "Глазик (подвести босса к банану)" }], + "qb-794-1000-994008": [{ type: "text", sub_type: "message", message: "Push (Kaia)", message_RU: "Откид (кайа)" }], + + // 2 BOSS + "s-794-2000-111-0": [{ type: "text", sub_type: "message", message: "Bait (2 stones)", message_RU: "Байт (2 камня)" }], + "s-794-2000-112-0": [{ type: "text", sub_type: "message", message: "Bait (3 stones)", message_RU: "Байт (3 камня)" }], + "s-794-2000-106-0": [{ type: "text", sub_type: "message", message: "Bait (Rock)", message_RU: "Байт (глыба)" }], + "s-794-2000-307-0": [{ type: "text", sub_type: "message", message: "Stones", message_RU: "Камни" }], + "ae-0-0-7942006": [{ type: "text", sub_type: "message", message: "Stone on you", message_RU: "Камень на тебе", delay: 1000 }], + "s-794-2000-117-0": [{ type: "text", sub_type: "message", message: "Inward Wave", message_RU: "Волна к нему", delay: 1000 }], + "s-794-2000-118-0": [{ type: "text", sub_type: "message", message: "Outward Wave", message_RU: "Волна от него" }], + "s-794-2000-114-0": [{ type: "text", sub_type: "message", message: "Together", message_RU: "Собраться" }], + "s-794-2000-110-0": [{ type: "text", sub_type: "message", message: "Hit in dd", message_RU: "Удар в дд" }], + + // 3 BOSS + "nd-794-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-794-3002": [{ type: "func", func: ent => road_from_gameIds.add(ent.gameId) }], // Колба с мобом + "nd-794-3002": [{ type: "func", func: ent => road_from_gameIds.delete(ent.gameId), delay: 5000 }], + "ns-794-3004": [{ type: "func", func: ent => blue_vaccine_loc = ent.pos }], // Синий + "ns-794-3005": [{ type: "func", func: ent => red_vaccine_loc = ent.pos }], // Красный + "s-794-3000-103-0": [{ type: "text", sub_type: "message", message: "Pushback", message_RU: "Откид назад" }], + "s-794-3000-107-0": [ + { type: "spawn", func: "vector", args: [553, 0, 0, 90, 500, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, -90, 500, 0, 3000] }, + { type: "text", sub_type: "message", message: "Front (Dodge)", message_RU: "Удар вперед (эвейд)" } + ], + "s-794-3000-108-0": [ + { type: "spawn", func: "vector", args: [553, 0, 0, 90, 500, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, -90, 500, 0, 3000] }, + { type: "text", sub_type: "message", message: "Back (Dodge)", message_RU: "Удар назад (эвейд)" } + ], + "s-794-3000-104-0": [{ type: "text", sub_type: "message", message: "Bait", message_RU: "Байт" }], + "s-794-3000-111-0": [{ type: "text", sub_type: "message", message: "Out Safe", message_RU: "Снаружи сейв" }], + "s-794-3000-112-0": [{ type: "text", sub_type: "message", message: "In Safe", message_RU: "Внутри сейв" }], + "s-794-3000-113-0": [{ type: "text", sub_type: "message", message: "Donut (In)", message_RU: "Бублик (к нему)" }], + "s-794-3000-114-0": [{ type: "text", sub_type: "message", message: "Donut (Out)", message_RU: "Бублик (между)" }], + "s-794-3000-122-0": [{ type: "text", sub_type: "message", message: "Gather!", message_RU: "Собраться!" }], + "s-794-3000-125-0": [{ type: "text", sub_type: "message", message: "Bait (Puddle)", message_RU: "Байт (лужа)" }], + "s-794-3000-315-0": [ + { type: "text", sub_type: "message", message: "Remove puddles from paths", message_RU: "Отвести лужи от дорожек" }, + { type: "func", func: () => spawn_road(blue_vaccine_loc) } + ], + "s-794-3000-316-0": [ + { type: "text", sub_type: "message", message: "Remove puddles from paths", message_RU: "Отвести лужи от дорожек" }, + { type: "func", func: () => spawn_road(red_vaccine_loc) } + ] + }; +}; \ No newline at end of file diff --git a/guides/9916.js b/guides/9916.js index 27411096..450959a4 100644 --- a/guides/9916.js +++ b/guides/9916.js @@ -1,48 +1,251 @@ - -//made by michengs +// Sky Cruiser Endeavor (Hard) +// +// made by michengs / HSDN / Emilia-s2 -let player, entity, library, effect; +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + let back_print = false; + let back_time = 0; + let end_back_time = 0; + let is_one_back = false; + let counter = 0; + let counter1_date = null; + let prev_back_attack = 0; + let prev_date = 0; -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - - - - }, + function boss_backattack_event() { + end_back_time = new Date() - back_time; + if (!back_print) { + back_print = true; + is_one_back = end_back_time > 0 && end_back_time < 1500; + if (is_one_back) { + handlers.text({ + sub_type: "message", + message_RU: "360", + message: "360", + }); + } + } + dispatch.setTimeout(() => back_print = false, 3500); + } + function boss_backattack_event_new(curr, ent) { + let start = new Date(); + let tmp = prev_date; + prev_date = start; + let time_diff = start - tmp; - "s-454-1000-1106-0": [{"type": "text","sub_type": "message","message": 'Headbut! (Slow)',"message_TW": "1" }], - "s-454-1000-2106-0": [{"type": "text","sub_type": "message","message": 'Headbut! (Fast)',"message_TW": "12" }], - "s-454-1000-2102-0": [{"type": "text","sub_type": "message","message": 'Iframe/Block!',"message_TW": "3" }], - - - - "s-454-1001-1102-0": [{"type": "text","sub_type": "message","message": 'Spin! (Slow)',"message_TW": "1" }], - "s-454-1001-2102-0": [{"type": "text","sub_type": "message","message": 'Spin! (Fast)',"message_TW": "12" }], - "s-454-1001-1106-0": [{"type": "text","sub_type": "message","message": 'Frontal Slam! (Slow)',"message_TW": "2" }], - "s-454-1001-2106-0": [{"type": "text","sub_type": "message","message": 'Frontal Slam! (Fast)',"message_TW": "22" }], - "s-454-1001-1107-0": [{"type": "text","sub_type": "message","message": 'Barrage! (Slow)',"message_TW": "3" }], - "s-454-1001-2107-0": [{"type": "text","sub_type": "message","message": 'Barrage! (Fast)',"message_TW": "32" }], - "s-454-1001-1301-0": [{"type": "text","sub_type": "message","message": 'Push Back!',"message_TW": "3" }], - "s-454-1001-1303-0": [{"type": "text","sub_type": "message","message": 'PYLON LASER!',"message_TW": "4" }], - "s-454-1001-1304-0": [{"type": "text","sub_type": "message","message": 'SECONDARY LASER!',"message_TW": "5" }], - "s-454-1001-1305-0": [{"type": "text","sub_type": "message","message": 'AoE Explosions!',"message_TW": "6" }], + let prev = prev_back_attack; + prev_back_attack = curr; + let back_combo_time_diff = 5000; + if (counter1_date != null) { + back_combo_time_diff = start - counter1_date; + } - "s-454-1002-1111-0": [{"type": "text","sub_type": "message","message": 'Back Spin! (Slow)',"message_TW": "1" }], - "s-454-1002-2111-0": [{"type": "text","sub_type": "message","message": 'Back Spin! (Fast)',"message_TW": "12" }], - "s-454-1002-1301-0": [{"type": "text","sub_type": "message","message": 'Shout - Iframe',"message_TW": "2" }], - "s-454-1002-1302-0": [{"type": "text","sub_type": "message","message": 'Get Out!!!',"message_TW": "3" }], - "s-454-1002-1401-0": [{"type": "text","sub_type": "message","message": 'Right Swipe!',"message_TW": "4" }], - "s-454-1002-1402-0": [{"type": "text","sub_type": "message","message": 'Left Swipe!',"message_TW": "5" }], - "s-454-1002-2115-0": [{"type": "text","sub_type": "message","message": 'Circles, spread',"message_TW": "6" }] - - - + if (prev == 1106 && curr == 1103 && time_diff < 1000) { + handlers.text({ + sub_type: "message", + message_RU: "360", + message: "360" + }); + } else if (prev === 1103 && curr === 1105 && time_diff < 1000) { + counter = 1; + counter1_date = new Date(); + } else if (prev === 1105 && curr === 1106 && counter === 1 && time_diff < 1500 && back_combo_time_diff < 1500) { + counter = 2; + } else if (prev === 1106 && curr === 1108 && counter == 2 && time_diff < 1000 && back_combo_time_diff < 2000) { + handlers.text({ + sub_type: "message", + message_RU: "2x360", + message: "2x360" + }); + } else { + counter = 0; + counter1_date = null; + } + } + + function reset_backevent() { + back_print = false; + back_time = 0; + end_back_time = 0; + is_one_back = false; + counter = 0; + counter1_date = null; + prev_back_attack = 0; + prev_date = 0; + } + + return { + // Mini BOSS 1 + "qb-916-91660-916045": [{ type: "text", sub_type: "message", message_RU: "Случайный выстрел", message: "Random Shot" }], + "s-916-91660-1304-0": [ + { type: "spawn", func: "vector", args: [912, 370, 50, 8, 1900, 0, 3000] }, + { type: "spawn", func: "vector", args: [912, 360, 50, 0, 1900, 0, 3000] }, + { type: "spawn", func: "vector", args: [912, 350, 50, -8, 1900, 0, 3000] } + ], + "s-916-91660-1304-1": [ + { type: "spawn", func: "vector", args: [912, 370, 50, 8, 1900, 0, 3000] }, + { type: "spawn", func: "vector", args: [912, 360, 50, 0, 1900, 0, 3000] }, + { type: "spawn", func: "vector", args: [912, 350, 50, -8, 1900, 0, 3000] } + ], + "s-916-91650-1102-0": [{ type: "text", sub_type: "message", message_RU: "Стан АоЕ", message: "AoE Stun" }], + "s-916-91650-1104-0": [{ type: "text", sub_type: "message", message_RU: "Случайная цель (стан)", message: "Random Target (Stun)" }, + { type: "spawn", func: "semicircle", args: [-33, 38, 912, 0, 0, 8, 550, 0, 3500] }, //1 + { type: "spawn", func: "semicircle", args: [-30, 35, 912, 0, 0, 8, 500, 0, 3500] }, //1 + { type: "spawn", func: "semicircle", args: [59, 116, 912, -22, 210, 8, 480, 0, 3500] }, //2 + { type: "spawn", func: "semicircle", args: [65, 120, 912, -17, 210, 8, 410, 0, 3500] }, //2 + { type: "spawn", func: "semicircle", args: [-110, -55, 912, 30, 200, 8, 500, 0, 3500] }, //3 + { type: "spawn", func: "semicircle", args: [-110, -55, 912, 30, 200, 8, 450, 0, 3500] }//3 + ], + "s-916-91650-1105-0": [{ type: "text", sub_type: "message", message_RU: "Прыжок + Удар головой (таргет)", message: "Jump + Headbutt on Target" }], + "s-916-91650-1106-0": [{ type: "text", sub_type: "message", message_RU: "Удар головой (таргет)", message: "Headbutt (Target)" }], + "s-916-91650-2102-0": "s-916-91650-1102-0", + "s-916-91650-2104-0": "s-916-91650-1104-0", + "s-916-91650-2105-0": "s-916-91650-1105-0", + "s-916-91650-2106-0": "s-916-91650-1106-0", + + // Mini BOSS 2 + "ns-916-91606": [ + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 57046, y: 129715, z: 2370, w: -1.08 }, ownerName: "AIM LASER", message: "LASER" }, //1 + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 57046, y: 129715, z: 2370, w: -1.08 } }, //1 + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 58360, y: 129712, z: 2370, w: -2.09 }, ownerName: "AIM LASER", message: "LASER" }, //2 + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 58360, y: 129712, z: 2370, w: -2.09 } }, //2 + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 58361, y: 126912, z: 2370, w: 2.00 }, ownerName: "AIM LASER", message: "LASER" }, //3 + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 58361, y: 126912, z: 2370, w: 2.00 } }, //3 + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 57048, y: 126914, z: 2370, w: 1.06 }, ownerName: "AIM LASER", message: "LASER" }, //4 + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 57048, y: 126914, z: 2370, w: 1.06 } }, //4 + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 59088, y: 127837, z: 2370, w: 2.76 }, ownerName: "AIM LASER", message: "LASER" }, //4 esquerda atras + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 59088, y: 127837, z: 2370, w: 2.76 } }, //4 esquerda atras + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 56343, y: 127836, z: 2370, w: 0.39 }, ownerName: "AIM LASER", message: "LASER" }, //4 direita atras + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 56343, y: 127836, z: 2370, w: 0.39 } }, //4 direita atras + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 56339, y: 128908, z: 2370, w: -0.38 }, ownerName: "AIM LASER", message: "LASER" }, //4 direita frente + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 56339, y: 128908, z: 2370, w: -0.38 } }, //4 direita frente + { type: "spawn", sub_type: "build_object", id: 1, sub_delay: 99999999, pos: { x: 59087, y: 128907, z: 2370, w: -2.75 }, ownerName: "AIM LASER", message: "LASER" }, //4 esquerda frente + { type: "spawn", sub_type: "item", id: 88704, sub_delay: 99999999, pos: { x: 59087, y: 128907, z: 2370, w: -2.75 } }//4 esquerda frente + ], + "s-916-91606-1304-0": [{ type: "text", sub_type: "message", message_RU: "ЛАЗЕР", message: "Random Laser " }, + { type: "text", sub_type: "notification", message_RU: "Скоро лазер...", message: "Random Laser soon...", delay: 55000 } + ], + "s-916-91606-1102-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка", message: "Spin" }, + { type: "spawn", func: "circle", args: [false, 553, 0, -15, 15, 280, 0, 2500] } + ], + "s-916-91606-1106-0": [{ type: "text", sub_type: "message", message_RU: "Передняя комба (таргет)", message: "Frontal Combo (Target)" }, + { type: "spawn", func: "circle", args: [false, 553, -30, 200, 18, 160, 0, 2000] }, + { type: "spawn", func: "circle", args: [false, 553, -10, 230, 15, 210, 2000, 2000] }, + { type: "spawn", func: "circle", args: [false, 413, 50, 50, 15, 160, 2000, 2000] } + ], + "s-916-91606-1107-0": [{ type: "text", sub_type: "message", message_RU: "Несколько ударов (таргет)", message: "Many Hits (Target)" }], + "s-916-91606-1302-0": [{ type: "text", sub_type: "message", message_RU: "Лазер (ЗАЩИТА)", message: "Laser (PROTECT)" }, + { type: "spawn", func: "vector", args: [912, 360, 50, 0, 900, 0, 4000] } + ], + "s-916-91606-1304-1": [{ type: "text", sub_type: "message", message_RU: "Эвейд", message: "Dodge", delay: 150 }], + "s-916-91606-1305-0": [{ type: "text", sub_type: "message", message_RU: "АоЕ", message: "AoEs" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 210, 22, 140, 0, 3000] }, //1 front + { type: "spawn", func: "circle", args: [false, 553, 0, -230, 22, 140, 0, 3000] }, //2 back + { type: "spawn", func: "circle", args: [false, 553, 90, -230, 22, 140, 0, 2000] }, //3 left + { type: "spawn", func: "circle", args: [false, 553, 270, -230, 22, 140, 0, 2000] }, //4 right + { type: "spawn", func: "circle", args: [false, 553, 315, 360, 14, 220, 1000, 3000] }, //1 front left big + { type: "spawn", func: "circle", args: [false, 553, 135, 360, 14, 220, 1000, 3000] }, //2 back right big + { type: "spawn", func: "circle", args: [false, 553, 45, 360, 14, 220, 1000, 2000] }, //3 front right big + { type: "spawn", func: "circle", args: [false, 553, 225, 360, 14, 220, 1000, 3000] }//4 back left big + ], + "s-916-91606-2102-0": "s-916-91606-1102-0", + "s-916-91606-2106-0": "s-916-91606-1106-0", + "s-916-91606-2107-0": "s-916-91606-1107-0", + "s-916-91606-2105-0": "s-916-91606-1105-0", + "qb-916-91606-916027": [{ type: "text", sub_type: "message", message_RU: "Таргет (откид)", message: "Target (Push)" }], + "s-916-91606-1301-0": [ + { type: "spawn", func: "semicircle", args: [338, 385, 553, 0, 0, 5, 600, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 459, 60, 20, 550, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 251, 55, -21, 550, 0, 2000] } + ], + "qb-916-91606-916007": [{ type: "text", sub_type: "message", message_RU: "(ВМЕСТЕ)", message: "GATHER" }], + + // Boss 3 + "nd-916-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + {type: "func", func: reset_backevent} + ], + "h-916-1000-94": [{ type: "text", sub_type: "message", message: "94%" }], + "h-916-1000-49": [{ type: "text", sub_type: "message", message: "49%" }], + "s-916-1000-1112-0": [{ type: "text", sub_type: "message", message_RU: "Рывок назад", message: "Back Move" }], + "s-916-1000-1102-0": [{ type: "func", func: () => back_time = new Date() }], + "s-916-1000-1101-0": [{ type: "func", func: boss_backattack_event }], + "s-916-1000-1106-0": [{ type: "func", func: boss_backattack_event_new, args: [1106] }], + "s-916-1000-1105-0": [{ type: "func", func: boss_backattack_event_new, args: [1105] }], + "s-916-1000-1103-0": [{ type: "func", func: boss_backattack_event_new, args: [1103] }], + "s-916-1000-1108-0": [{ type: "func", func: boss_backattack_event_new, args: [1108] }], + "s-916-1000-1114-0": [ + { type: "text", sub_type: "message", message_RU: "Таргет", message: "Target Attack" }, + { type: "spawn", func: "vector", args: [553, 90, 150, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 90, 75, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 270, 75, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 270, 150, 0, 1300, 0, 2500] } + ], + "s-916-1000-1115-0": [ + { type: "text", sub_type: "message", message: "3" }, + { type: "text", sub_type: "message", delay: 1000, message: "2" }, + { type: "text", sub_type: "message", delay: 2000, message: "1" }, + { type: "text", sub_type: "message", delay: 3200, message_RU: "Эвейд", message: "Dodge" } + ], + "s-916-1000-1117-0": [{ type: "text", sub_type: "message", message_RU: "Удар вперед", message: "Front" }], + "s-916-1000-1118-0": [ + { type: "text", sub_type: "message", message_RU: "Передний разрез | Эвейд", message: "Frontal Cut | Dodge" }, + { type: "spawn", func: "semicircle", args: [0, 60, 553, 0, 0, 15, 60, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 55, 553, 0, 0, 15, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 45, 553, 0, 0, 10, 250, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [0, 45, 553, 0, 0, 10, 340, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [300, 360, 553, 0, 0, 15, 60, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [305, 360, 553, 0, 0, 15, 160, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [310, 360, 553, 0, 0, 10, 250, 0, 2000] }, + { type: "spawn", func: "semicircle", args: [315, 360, 553, 0, 0, 10, 340, 0, 2000] } + ], + "s-916-1000-1302-0": [ + { type: "text", sub_type: "message", message_RU: "АоЕ", message: "AOE" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 500, 100, 6000] } + ], + "s-916-1000-2101-0": "s-916-1000-1101-0", + "s-916-1000-2102-0": "s-916-1000-1102-0", + "s-916-1000-2103-0": "s-916-1000-1103-0", + "s-916-1000-2105-0": "s-916-1000-1105-0", + "s-916-1000-2106-0": "s-916-1000-1106-0", + "s-916-1000-2108-0": "s-916-1000-1108-0", + "s-916-1000-2112-0": "s-916-1000-1112-0", + "s-916-1000-1303-0": [{ type: "text", sub_type: "message", message_RU: "Крутилка", message: "Spin Attack" }], + "s-916-1000-1801-0": [{ type: "text", sub_type: "message", message_RU: "Стан", message: "Incoming Stun" }], + "s-916-1000-1401-0": [{ type: "text", sub_type: "message", message_RU: "Правый", message: "Right" }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1500] } + ], + "s-916-1000-1402-0": [{ type: "text", sub_type: "message", message_RU: "Левый", message: "Left" }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 180, 1100, 100, 1500] }, + { type: "spawn", func: "vector", args: [553, 358, 0, 0, 1100, 100, 1500] } + ], + "s-916-1000-1301-0": [{ type: "text", sub_type: "message", message_RU: "вопль", message: "Scream" }], + "s-916-1000-1311-0": [{ type: "text", sub_type: "message", message_RU: "Внутренний", message: "Inner" }], + "s-916-1000-1308-0": [{ type: "text", sub_type: "message", message_RU: "Внутренний", message: "Inner" }], + "s-916-1000-2114-0": "s-916-1000-1114-0", + "s-916-1000-2115-0": "s-916-1000-1115-0", + "s-916-1000-2117-0": "s-916-1000-1117-0", + "s-916-1000-2118-0": "s-916-1000-1118-0", + "s-916-1000-2401-0": "s-916-1000-1401-0", + "s-916-1000-2402-0": "s-916-1000-1402-0" + }; }; \ No newline at end of file diff --git a/guides/9920.js b/guides/9920.js index 4eb84941..b1e80815 100644 --- a/guides/9920.js +++ b/guides/9920.js @@ -1,534 +1,209 @@ -const SPAWN_CIRCLES = true; - -// AAHM -//made by Yuyuko - -let counter = 0;//后砸计数 count for back attacks -let timer;//后砸统计重置时间 reset time -let print = true;//二王HP提示开关 secondboss Health - -let SPAWNING_FIRST_CIRCLE_FLOWERS = []; -let SPAWNING_SECOND_CIRCLE_FLOWERS = []; - -const TIMER_DELAY = 600; -const ITEM_SPAWNED_ON_SWIPE_ID = 6;//576:trees 556:grass -const ITEM_SPAWNED_ON_SWIPE_SUB_DELAY = 2500; -const ITEM_SPAWNED_ON_SWIPE_DISTANCE = 150; - -const stepone = 2 * Math.PI / 40;//40 flowers in total if u think the flower is too many ,u can change the num to smaller. -const steptwo = 2 * Math.PI / 72;//72 flowers in total - -//内圈 -//inner flower circle - -for(let angle = -Math.PI; angle <= Math.PI; angle += stepone) { -if(!SPAWN_CIRCLES) continue; -SPAWNING_FIRST_CIRCLE_FLOWERS.push({ -"type": "spawn", -"id": 548, -"sub_delay": 6000, -"distance": 143, -"offset": angle -}); - -SPAWNING_SECOND_CIRCLE_FLOWERS.push({ -"type": "spawn", -"id": 548, -"sub_delay": 6000, -"distance": 157, -"offset": angle -}); -} -//外圈 -//outer flower circle - -for(let angle = -Math.PI; angle <= Math.PI; angle += steptwo) { -if(!SPAWN_CIRCLES) continue; -SPAWNING_FIRST_CIRCLE_FLOWERS.push({ -"type": "spawn", -"id": 548, -"sub_delay": 6000, -"distance": 293, -"offset": angle -}); - -SPAWNING_SECOND_CIRCLE_FLOWERS.push({ -"type": "spawn", -"id": 548, -"sub_delay": 6000, -"distance": 307, -"offset": angle -}); -} - - -//剑舞前戳+逆时针旋转+右手扇形攻击+外到内甜甜圈 -//heart thrust+anticlockwise spin+right swipe+AOEs from out to in - -SPAWNING_FIRST_CIRCLE_FLOWERS.push({"type": "text","class_position":"tank","sub_type": "message","message": "right→>out to in","message_TW": "右→ + 从外到内"}); -SPAWNING_FIRST_CIRCLE_FLOWERS.push({"type": "text","class_position":"dps","sub_type": "message","message": "left←>out to in","message_TW": "左← + 从外到内"}); -SPAWNING_FIRST_CIRCLE_FLOWERS.push({"type": "text","class_position":"heal","sub_type": "message","message": "left←>out to in","message_TW": "左← + 从外到内"}); -SPAWNING_FIRST_CIRCLE_FLOWERS.push({"type": "spawn","id": ITEM_SPAWNED_ON_SWIPE_ID,"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY,"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE,"offset": -1}); -SPAWNING_FIRST_CIRCLE_FLOWERS.push({"type": "spawn","id": ITEM_SPAWNED_ON_SWIPE_ID,"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY,"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE,"offset": -2.3}); - -//剑舞前戳+顺时针旋转+左手扇形攻击+内到外甜甜圈 -//heart thrust+clockwise spin+left swipe+AOEs from in to out - -SPAWNING_SECOND_CIRCLE_FLOWERS.push({"type": "text","class_position":"tank","sub_type": "message","message": "left←>in to out","message_TW": "左← + 从内到外"}); -SPAWNING_SECOND_CIRCLE_FLOWERS.push({"type": "text","class_position":"dps","sub_type": "message","message": "right→>in to out","message_TW": "右→ + 从内到外"}); -SPAWNING_SECOND_CIRCLE_FLOWERS.push({"type": "text","class_position":"heal","sub_type": "message","message": "right→>in to out","message_TW": "右→ + 从内到外"}); -SPAWNING_SECOND_CIRCLE_FLOWERS.push({"type": "spawn","id": ITEM_SPAWNED_ON_SWIPE_ID,"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY,"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE,"offset": 1}); -SPAWNING_SECOND_CIRCLE_FLOWERS.push({"type": "spawn","id": ITEM_SPAWNED_ON_SWIPE_ID,"sub_delay": ITEM_SPAWNED_ON_SWIPE_SUB_DELAY,"distance": ITEM_SPAWNED_ON_SWIPE_DISTANCE,"offset": 2.3}); - -//一王击飞躲避提示延迟推送 -//Ghergof: Knock up mech, AKA 'Your flesh will be deleted' callout - -const EVENT_DELAY_FIRST_BOSS_HM = [ -{ -"type": "text", -"sub_type": "message", -"delay": TIMER_DELAY, -"message": "Dodge!", -"message_TW": "注意躲避" -}, -]; - - - -//二王血量显示 -//secondboss Health tips - -function start_boss() { -print = true; -} -function print_fifty(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "50%", -"message_TW": "50%" -}); -} -print = false; -} -function print_twenty(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "20%", -"message_TW": "20%" -}); -} -print = false; -} - -//三王后砸前置计数 -//thirdboss: counter of back attacks -function back_attack_HM(handlers) { -clearTimeout(timer); -counter++; -if(counter >= 2) { -handlers['text']({ -"sub_type": "message", -"message": "Back attack", -"message_TW": "后砸" -}); -} -timer = setTimeout(()=>{ -counter = 0; -}, 3000); -} - -//三王色鉴,针对色盲玩家的特别帮助 -//thirdboss: color marks in cage -/* ------------------------------------------- */ -let colour_to_use = null; -const COLOURS_OFFSETS = { -"red": 0, -"yellow": 2.5, -"blue": -2.5, -}; - -function set_clockwise(clockwise, handlers, _, third_boss_entity) { -setTimeout(()=> { -// Get the colour rotation -const colour_rotation = clockwise ? ["red", "yellow", "blue"] : ["blue", "yellow", "red"]; - -// Loop thru the three cage rotations -for(let i = 0; i < 3; i++) { -let current_colour = colour_rotation[(colour_rotation.indexOf(colour_to_use) + i) % 3]; - -handlers['spawn']({ -"sub_type": "item", -"id": 369, -"delay": i * 2600, -"sub_delay": (i + 1) * 3000, -"distance": 150, -"offset": COLOURS_OFFSETS[current_colour] -}, third_boss_entity); -handlers['spawn']({ -"sub_type": "build_object", -"id": 1, -"ownerName": "yuyuko", -"message": "safe", -"delay": i * 2600, -"sub_delay": (i + 1) * 3000, -"distance": 150, -"offset": COLOURS_OFFSETS[current_colour] -}, third_boss_entity); -} - -// clear out clockwise -setTimeout(()=> { -clockwise = null; -}, 12000); -}, 1000); -} - -function change_colour(colour) { -colour_to_use = colour; -} -/* ------------------------------------------- */ - - -module.exports = { - -//一王 不愤怒 -//firstboss, not enraged - -//后跳+内外圈,安全区域:站里面+站外面 -//Backstep+donuts, stay in, get out - -"s-920-1000-1117-0": [{"type": "text","sub_type": "message","message": "stay in↑ + get out↓","message_TW": "站里面↑+站外面↓"}], - -//原地抬腿+内外圈,安全区域:站外面+站里面 -//Stomp+donuts, get out, stay in - -"s-920-1000-1116-0": [{"type": "text","sub_type": "message","message": "get out↓ + stay in↑","message_TW": "站外面↓+站里面↑"}], - -//剑戳地2下+后方挥盾 -//ground thrust 2x+shield swing - -"s-920-1000-1109-0": [{"type": "text","sub_type": "message","message": "back attack","message_TW": "后方攻击"}], - -//三圈顺序:全+外+内 站里面站外面 -//Massive In-Out Big AoE+Outer AoE+Inner AoE - -"s-920-1000-1130-0": [{"type": "text","sub_type": "message","message": "full>outer>inner","message_TW": "伤害顺序:全>外>内"}], - - -//一王愤怒 -//firstboss, enraged - -//后跳+内外圈,安全区域:站里面+站外面 -//Backstep+donuts, stay in, get out - -"s-920-1000-2117-0": [{"type": "text","sub_type": "message","message": "stay in↑ + get out↓","message_TW": "站里面↑+站外面↓"}], - -//原地抬腿+内外圈,安全区域:站外面+站里面 -//Stomp+donuts, get out, stay in - -"s-920-1000-2116-0": [{"type": "text","sub_type": "message","message": "get out↓ + stay in↑","message_TW": "站外面↓+站里面↑"}], - -//剑戳地2下+后方挥盾 -//ground thrust 2x+shield swing - -"s-920-1000-2109-0": [{"type": "text","sub_type": "message","message": "back attack","message_TW": "后方攻击"}], - -//愤怒时 三圈顺序:全+内+外 -//enraged Massive In-Out Big AoE+Inner AoE+Outer AoE - -"s-920-1000-2130-0": [{"type": "text","sub_type": "message","message": "full>inner>outer","message_TW": "伤害顺序:全>内>外"}], - -//一王特殊技能 -//firstboss special attack - -//击飞攻击 -//knockup attack - -"s-920-1000-1300-0": EVENT_DELAY_FIRST_BOSS_HM, - -//二王 不愤怒 -//secondboss, not enraged - -//点名转身划刀 -//target one player then turn aroud with swing - -"s-920-2000-1108-0": [{"type": "text","sub_type": "message","message": "Target swing","message_TW": "点名划刀攻击"}], - -//点名转身划刀,左手边伤害 -//target one player then turn aroud with left swing - -"s-920-2000-1113-0": [{"type": "text","sub_type": "message","message": "right hand swing","message_TW": "左手伤害"}], - -//点名转身划刀,右手边伤害 -//target one player then turn aroud with right swing - -"s-920-2000-1114-0": [{"type": "text","sub_type": "message","message": "left hand swing","message_TW": "右手伤害"}], - -//转圈攻击(1106) -//Spin attack - -"s-920-2000-1106-0": [{"type": "text","sub_type": "message","message": "Spin attack","message_TW": "转圈攻击"}], - -//后方攻击(1105) -//Back attack - -"s-920-2000-1105-0": [{"type": "text","sub_type": "message","message": "Back attack","message_TW": "后方攻击"}], - -//点名大跳晕人 -//Random aggro stun - -"s-920-2000-1104-0": [{"type": "text","sub_type": "message","message": "Random jump","message_TW": "点名大跳"}], - - -//眩晕攻击 -//Stun attack - -"s-920-2000-1110-0": [{"type": "text","sub_type": "message","message": "Stun attack","message_TW": "眩晕攻击"}], - -//BOSS右手边划刀,安全区域:坦右,打左 -//right hand side swing, tank goes to right, dps goes to left - -"s-920-2000-1112-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "left←","message_TW": "左←"}], - -//BOSS左手边划刀,安全区域:坦左,打右 -//left hand side swing, tank goes to left, dps goes to right - -"s-920-2000-1111-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "right→","message_TW": "右→"}], - -//二王 愤怒 -//secondboss,enraged - -//转圈攻击(1106) -//Spin attack - -"s-920-2000-2106-0": [{"type": "text","sub_type": "message","message": "Spin attack","message_TW": "转圈攻击"}], - -//愤怒后方攻击(2105) -//enraged back attack - -"s-920-2000-2105-0": [{"type": "text","sub_type": "message","message": "back attack","message_TW": "后方攻击"}], - -//点名大跳晕人 -//Random aggro stun - -"s-920-2000-2104-0": [{"type": "text","sub_type": "message","message": "Random jump","message_TW": "点名大跳"}], - -//BOSS右手边划刀,安全区域:坦右,打左 -//right hand side swing, tank goes to right, dps goes to left - -"s-920-2000-2112-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "left←","message_TW": "左←"}], - -//BOSS左手边划刀,安全区域:坦左,打右 -//left hand side swing, tank goes to left, dps goes to right - -"s-920-2000-2111-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "left←","message_TW": "左←"}, -{"type": "text","class_position":"dps","sub_type": "message","message": "right→","message_TW": "右→"}, -{"type": "text","class_position":"heal","sub_type": "message","message": "right→","message_TW": "右→"}], - -//眩晕攻击 -//Stun attack - -"s-920-2000-2110-0": [{"type": "text","sub_type": "message","message": "Stun attack","message_TW": "眩晕攻击"}], - -//点名转身划刀 -//target one player then turn aroud with swing - -"s-920-2000-2108-0": [{"type": "text","sub_type": "message","message": "Target swing","message_TW": "点名划刀攻击"}], - -//点名转身划刀,左手边伤害 -//target one player then turn aroud with left swing - -"s-920-2000-2113-0": [{"type": "text","sub_type": "message","message": "right hand swing","message_TW": "左手伤害"}], - -//点名转身划刀,右手边伤害 -//target one player then turn aroud with right swing - -"s-920-2000-2114-0": [{"type": "text","sub_type": "message","message": "left hand swing","message_TW": "右手伤害"}], - - -//二王特殊技能 -//secondboss, special attacks - -//红色鉴定,安全区域:15M外 -//Red, stay 15m away - -"s-920-2000-3119-0": [{"type": "text","sub_type": "message","message": "red: get out↓","message_TW": "红色:外↓"}], - -//蓝色鉴定,安全区域:15M内(3220) -//Blue, stay near within 15m - -"s-920-2000-3220-0": [{"type": "text","sub_type": "message","message": "blue: stay in↑","message_TW": "蓝色:内↑"}], - -//眩晕圈(3116)+外圈伤害(3118) -//stun+donut - -"s-920-2000-3116-0": [{"type": "text","sub_type": "message","message": "dodge + stay in↑","message_TW": "躲避+内↑"}], - -//点名喷长条毒(3107) -//random aggro poison(3107) - - -//二王HP血量检测 -//secondboss Health tips - -//BOSS血量低于50%后,左右划刀变成双面 -//50% - -"h-920-2000-99": [{"type": "func","func": start_boss}], -"h-920-2000-50": [{"type": "func","func": print_fifty}], - -//BOSS血量20%后,会有概率出现连续鉴定 -//20% - -"h-920-2000-21": [{"type": "func","func": start_boss}], -"h-920-2000-20": [ {"type": "func","func": print_twenty}], - -//三王 不愤怒 -//thirdboss, unenraged - -//进场的推人红圈 -//pushback when engaging - -"s-920-3000-1315-0": [{"type": "text","sub_type": "message","message": "Pushback","message_TW": "开场推人"}], - -//点名大跳晕人(1107) -//random aggro stun - -"s-920-3000-1107-0": [{"type": "text","sub_type": "message","message": "Random jump","message_TW": "点名大跳"}], - -//点名出剑刃风暴(1204) -//random target energy beam -"s-920-3000-1204-0": [{"type": "text","sub_type": "message","message": "energy beam","message_TW": "点名剑气"}], - -//剑舞前戳+逆时针旋转+右手扇形攻击+外到内甜甜圈 注:坦右边安全,打左边安全请自行更改 -//heart thrust+anticlockwise spin+right swipe+AOEs from out to in - -"s-920-3000-1109-0": SPAWNING_FIRST_CIRCLE_FLOWERS, - -//剑舞前戳+顺时针旋转+左手扇形攻击+内到外甜甜圈 注:坦左边安全,打右边安全请自行更改 -//heart thrust+clockwise spin+left swipe+AOEs from in to out - -"s-920-3000-1111-0": SPAWNING_SECOND_CIRCLE_FLOWERS, - -//前后砸 -//front, back slam - -"s-920-3000-1113-0": [{"type": "text","sub_type": "message","message": "front, back slam","message_TW": "前后砸"}], - -//旋转攻击 -//spinning attack - -"s-920-3000-1115-0": [{"type": "text","sub_type": "message","message": "spinning attack","message_TW": "旋转攻击"}], - -//2连斜上挥(1104)后接的后砸(1119) -//golf swing x2 + back slam - -"s-920-3000-1104-0": [{"type": "func","func": back_attack_HM}], - -//后闪+旋转or前后砸 -//teleport back+ spin or front, back slam - -"s-920-3000-1202-0": [{"type": "text","sub_type": "message","message": "spin or front,back slam","message_TW": "旋转or前后砸"}], - -//蓝球+镭射 -//target energy beam(almost tank ?_?) - -"s-920-3000-1120-0": [{"type": "text","sub_type": "message","message": "energy beam","message_TW": "剑气攻击"}], - -//三王 愤怒 -//thirdboss, enraged - -//点名出剑刃风暴,手里握篮球挥篮球(1204),剑刃风暴(1121) -//random aggro, holding blue orb, energy beam - -"s-920-3000-2204-0": [{"type": "text","sub_type": "message","message": "enraged:energy beam","message_TW": "愤怒:点名剑气"}], - -//剑舞前戳+逆时针旋转+右手扇形攻击+外到内甜甜圈 注:坦右边安全,打左边安全请自行更改 -//heart thrust+anticlockwise spin+right swipe+AOEs from out to in - -"s-920-3000-2109-0": SPAWNING_FIRST_CIRCLE_FLOWERS, - -//剑舞前戳+顺时针旋转+左手扇形攻击+内到外甜甜圈 注:坦左边安全,打右边安全请自行更改 -//heart thrust+clockwise spin+left swipe+AOEs from in to out - -"s-920-3000-2111-0": SPAWNING_SECOND_CIRCLE_FLOWERS, - -//前后砸 -//front, back slam - -"s-920-3000-2113-0": [{"type": "text","sub_type": "message","message": "front, back slam","message_TW": "前后砸"}], - -//2连斜上挥(1104)后接的后砸(1119) -//golf swing x2 + back slam - -"s-920-3000-2104-0": [{"type": "func","func": back_attack_HM}], - -//旋转攻击 -//spinning attack - -"s-920-3000-2115-0": [{"type": "text","sub_type": "message","message": "spinning attack","message_TW": "旋转攻击"}], - -//点名大跳晕人(1107) -//random aggro stun - -"s-920-3000-2107-0": [{"type": "text","sub_type": "message","message": "Random jump","message_TW": "点名大跳"}], - -//后闪+旋转or前后砸 -//teleport back+ spin or front, back slam - -"s-920-3000-2202-0": [{"type": "text","sub_type": "message","message": "spin or front,back slam","message_TW": "旋转or前后砸"}], - -//蓝球+镭射 -//target energy beam(almost tank ?_?) - -"s-920-3000-2120-0": [{"type": "text","sub_type": "message","message": "energy beam","message_TW": "剑气攻击"}], - -//三王特殊技能 -//thirdboss, special attacks - -//召唤分身出点名剑气 -//clones, random aggro, energy beam - -"s-920-3000-1400-0": [{"type": "text","sub_type": "message","message": "beam","message_TW": "召咄分身:点名剑气"}], - -//召唤分身出旋转攻击 -//clones, random aggro, spin attack - -"s-920-3000-1401-0": [{"type": "text","sub_type": "message","message": "spin","message_TW": "召咄分身:旋转攻击"}], - -//三王色鉴颜色位置标识 -//color marks in cage -/* -------------------------------- */ -// 红色 red -"ae-0-0-9203037": [{"type": "text","sub_type": "message","message": "Red","message_TW": "红色"}, -{"type": "func","func": change_colour.bind(null, 'red')}], - -// 黄色 yellow -"ae-0-0-9203038": [{"type": "text","sub_type": "message","message": "Yellow","message_TW": "黄色"}, -{"type": "func","func": change_colour.bind(null, 'yellow')}], - - -// 蓝色 blue -"ae-0-0-9203039": [{"type": "text","sub_type": "message","message": "Blue","message_TW": "蓝色"}, -{"type": "func","func": change_colour.bind(null, 'blue')}], - -// 逆时针色鉴 -// anti-clockwise - -"s-920-3000-1317-0": [{"type": "func","func": set_clockwise.bind(null, false)}], - -// 顺时针色鉴 -// clockwise - -"s-920-3000-1318-0": [{"type": "func","func": set_clockwise.bind(null, true)}] - - /* -------------------------------- */ -}; +// Antaroth's Abyss (Hard) +// +// made by HSDN / Yuyuko / Owyn + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + let secondboss_mech_counter = 0; + let thirdboss_colour_to_use = null; + let thirdboss_counter = 0; + let thirdboss_timer = null; + + function secondboss_stacks_event() { + secondboss_mech_counter++; + + handlers.text({ sub_type: "notification", message: `${secondboss_mech_counter} stack`, message_RU: `Стак ${secondboss_mech_counter}`, speech: false }); + + if (secondboss_mech_counter >= 5) { + secondboss_mech_counter = 0; + } + } + + function thirdboss_backattack_event() { + dispatch.clearTimeout(thirdboss_timer); + thirdboss_counter++; + + if (thirdboss_counter >= 2) { + handlers.text({ sub_type: "message", message: "Back Stun", message_RU: "Задний" }); + } + + thirdboss_timer = dispatch.setTimeout(() => thirdboss_counter = 0, 3000); + } + + function thirdboss_cage_event(clockwise, ent) { + const colour_order = clockwise ? ["red", "yellow", "blue"] : ["blue", "yellow", "red"]; + const colour_offsets = { "red": 0, "yellow": 120, "blue": 240 }; + + const colour_messages = { + "red": { message: "Red", message_RU: "Красный" }, + "yellow": { message: "Yellow", message_RU: "Желтый" }, + "blue": { message: "Blue", message_RU: "Синий" } + }; + + if (thirdboss_colour_to_use) { + handlers.text({ + sub_type: "message", + message: colour_messages[thirdboss_colour_to_use].message, + message_RU: colour_messages[thirdboss_colour_to_use].message_RU + }); + } + + for (let i = 0; i < 3; i++) { + const current_colour = colour_order[(colour_order.indexOf(thirdboss_colour_to_use) + i) % 3]; + + handlers.spawn({ + func: "marker", + args: [false, colour_offsets[current_colour], 150, i * 2600, (i + 1) * 3000, true, null] + }, ent); + } + } + + return { + // 1 BOSS + "nd-920-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-920-1000-1117-0": [{ type: "text", sub_type: "message", message: "In > Out", message_RU: "К нему > От него" }], + "s-920-1000-1116-0": [{ type: "text", sub_type: "message", message: "Out > In", message_RU: "От него > К нему" }], + "s-920-1000-1109-0": [{ type: "text", sub_type: "message", message: "Back Attack", message_RU: "Откид назад" }], + "s-920-1000-1130-0": [{ type: "text", sub_type: "message", message: "Full > Outer > Inner", message_RU: "Общий > Внешний > Внутренний" }], + "s-920-1000-1220-0": [ + { type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ" }, + { type: "text", sub_type: "message", delay: 2900, message: "Dodge!", message_RU: "Эвейд!" } + ], + "s-920-1000-1300-0": [{ type: "text", sub_type: "message", delay: 600, message: "Dodge!", message_RU: "Эвейд!" }], + "s-920-1000-2117-0": "s-920-1000-1117-0", + "s-920-1000-2116-0": "s-920-1000-1116-0", + "s-920-1000-2109-0": "s-920-1000-1109-0", + "s-920-1000-2130-0": [{ type: "text", sub_type: "message", message: "Full > Inner > Outer", message_RU: "Общий > Внутренний > Внешний" }], + "s-920-1000-2220-0": "s-920-1000-1220-0", + "qb-920-1000-9201000": [{ type: "text", sub_type: "message", message: "Flying", message_RU: "Подлет" }], + + // 2 BOSS + "nd-920-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-920-2000-99": [{ type: "func", func: () => secondboss_mech_counter = 0 }], + "h-920-2000-50": [{ type: "text", sub_type: "message", message: "50%", message_RU: "50%" }], + "h-920-2000-20": [{ type: "text", sub_type: "message", message: "20%", message_RU: "20%" }], + "s-920-2000-1104-0": [{ type: "text", sub_type: "message", message: "Random Jump", message_RU: "Прыжок (стан)" }], + "s-920-2000-1105-0": [{ type: "text", sub_type: "message", message: "Back Attack", message_RU: "Удар назад" }], + "s-920-2000-1106-0": [ + { type: "text", sub_type: "message", message: "Spin Attack", message_RU: "Крутилка" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 320, 0, 3500] } + ], + "s-920-2000-1108-0": [{ type: "text", sub_type: "message", message: "Target Swing", message_RU: "Таргет" }], + "s-920-2000-1110-0": [ + { type: "text", sub_type: "message", message: "Stun Attack", message_RU: "Передний стан" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 175, 10, 260, 0, 5000] } + ], + "s-920-2000-1111-0": [ + { type: "text", sub_type: "message", message: "Left Slash", message_RU: "Левая полоса" }, + { type: "spawn", func: "vector", args: [553, 270, 200, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 200, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 20, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 6, 302, 270, 200, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 176, 502, 270, 200, 0, 2000] } + ], + "s-920-2000-1112-0": [ + { type: "text", sub_type: "message", message: "Right Slash", message_RU: "Правая полоса" }, + { type: "spawn", func: "vector", args: [553, 90, 200, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 90, 200, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 20, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 20, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 354, 302, 90, 200, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 184, 502, 90, 200, 0, 2000] } + ], + "s-920-2000-1113-0": "s-920-2000-1111-0", + "s-920-2000-1114-0": "s-920-2000-1112-0", + "s-920-2000-2104-0": "s-920-2000-1104-0", + "s-920-2000-2105-0": "s-920-2000-1105-0", + "s-920-2000-2106-0": "s-920-2000-1106-0", + "s-920-2000-2108-0": "s-920-2000-1108-0", + "s-920-2000-2110-0": "s-920-2000-1110-0", + "s-920-2000-2111-0": "s-920-2000-1111-0", + "s-920-2000-2112-0": "s-920-2000-1112-0", + "s-920-2000-2113-0": "s-920-2000-1111-0", + "s-920-2000-2114-0": "s-920-2000-1112-0", + "s-920-2000-3116-0": [{ type: "text", sub_type: "message", message: "Circles", message_RU: "Круги" }], + "s-920-2000-3119-0": [{ type: "text", sub_type: "message", message: "Red: Out safe", message_RU: "Красный: Наружу сейф" }], + "s-920-2000-3220-0": [{ type: "text", sub_type: "message", message: "Blue: In safe", message_RU: "Синий: Внутрь сейф" }], + // + "dm-0-0-9202000": [{ type: "func", func: secondboss_stacks_event }], + + // 3 BOSS + "nd-920-3000-0": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-920-3000-1104-0": [{ type: "func", func: thirdboss_backattack_event }], + "s-920-3000-1105-0": [{ type: "text", sub_type: "message", message: "Target Cage", message_RU: "Клетка (таргет)" }], + "s-920-3000-1119-0": [{ type: "spawn", func: "circle", args: [true, 553, 0, -325, 12, 325, 0, 2000] }], + "s-920-3000-1107-0": [{ type: "text", sub_type: "message", message: "Random Jump", message_RU: "Прыжок (стан)" }], + "s-920-3000-1107-1": [{ type: "spawn", func: "circle", args: [false, 553, 0, 85, 12, 250, 0, 2000] }], + "s-920-3000-1109-0": [ + { type: "text", sub_type: "message", message: "Left", message_RU: "Лево" }, + { type: "text", sub_type: "message", message: "Inward (In > Out)", message_RU: "Внутрь (к нему > от него)", delay: 1000 }, + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] }, + { type: "spawn", func: "marker", args: [false, 270, 300, 0, 1500, true, null] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 18, 157, 1500, 4000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 307, 1500, 4000] } + ], + "s-920-3000-1111-0": [ + { type: "text", sub_type: "message", message: "Right", message_RU: "Право" }, + { type: "text", sub_type: "message", message: "Outward (Out > In)", message_RU: "Наружу (от него > к нему)", delay: 1000 }, + { type: "spawn", func: "vector", args: [553, 0, 0, 180, 500, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 500, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] }, + { type: "spawn", func: "marker", args: [false, 90, 300, 0, 1500, true, null] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 18, 157, 1500, 4000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 0, 12, 307, 1500, 4000] } + ], + "s-920-3000-1113-0": [{ type: "text", sub_type: "message", message: "Front | Back Stun", message_RU: "Передний | Задний" }], + "s-920-3000-1115-0": [{ type: "text", sub_type: "message", message: "Spin Attack", message_RU: "Круговая" }], + "s-920-3000-1120-0": [{ type: "text", sub_type: "message", message: "Energy Beam (Slow)", message_RU: "Волна (медленно)" }], + "s-920-3000-1204-0": [{ type: "text", sub_type: "message", message: "Energy Beam (Fast)", message_RU: "Волна (быстро)" }], + // "s-920-3000-1202-0": [{ type: "text", sub_type: "message", message: "Spin or Front | Back Stun", message_RU: "Круговая или передний | Задний" }], + "s-920-3000-1206-0": [{ type: "text", sub_type: "message", message: "Orbs", message_RU: "Шары" }], + "s-920-3000-1309-0": [{ type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }], + "s-920-3000-1310-0": [{ type: "text", sub_type: "message", message: "Puddles", message_RU: "Лужи" }], + "s-920-3000-1311-0": "s-920-3000-1310-0", + "s-920-3000-1312-0": "s-920-3000-1310-0", + "s-920-3000-1313-0": "s-920-3000-1310-0", + "s-920-3000-1314-0": "s-920-3000-1310-0", + "s-920-3000-1315-0": [{ type: "text", sub_type: "message", message: "Pushback", message_RU: "Откид (кайа)" }], + "s-920-3000-1317-0": [{ type: "func", func: thirdboss_cage_event, args: [false], delay: 1000 }], + "s-920-3000-1318-0": [{ type: "func", func: thirdboss_cage_event, args: [true], delay: 1000 }], + "s-920-3000-1400-0": [{ type: "text", sub_type: "message", message: "Clones: Beam", message_RU: "Копии: волны" }], + "s-920-3000-1401-0": [{ type: "text", sub_type: "message", message: "Clones: Spin", message_RU: "Копии: круговые" }], + "s-920-3000-2104-0": "s-920-3000-1104-0", + "s-920-3000-2105-0": "s-920-3000-1105-0", + "s-920-3000-2119-0": "s-920-3000-1119-0", + "s-920-3000-2107-0": "s-920-3000-1107-0", + "s-920-3000-2107-1": "s-920-3000-1107-1", + "s-920-3000-2109-0": "s-920-3000-1109-0", + "s-920-3000-2111-0": "s-920-3000-1111-0", + "s-920-3000-2113-0": "s-920-3000-1113-0", + "s-920-3000-2115-0": "s-920-3000-1115-0", + "s-920-3000-2120-0": "s-920-3000-1120-0", + "s-920-3000-2204-0": "s-920-3000-1204-0", + "s-920-3000-2202-0": "s-920-3000-1202-0", + "s-920-3000-2206-0": "s-920-3000-1206-0", + "s-920-3000-1410-0": [{ type: "text", sub_type: "message", message: "Cage", message_RU: "Клетка" }], + "ae-0-0-9203037": [{ type: "func", func: () => thirdboss_colour_to_use = "red" }], + "ae-0-0-9203038": [{ type: "func", func: () => thirdboss_colour_to_use = "yellow" }], + "ae-0-0-9203039": [{ type: "func", func: () => thirdboss_colour_to_use = "blue" }] + }; +}; \ No newline at end of file diff --git a/guides/9935.js b/guides/9935.js index c11d9e89..74c8ae93 100644 --- a/guides/9935.js +++ b/guides/9935.js @@ -1,571 +1,400 @@ -// RK9 хард -//made by michengs +// RK-9 Kennel (Hard) +// +// made by michengs / HSDN -let notice_guide = true; -let player, entity, library, effect; - let firstskill = 0, - secondskill = 0, - MSG = null, - MSG1 = null, - MSG2 = null, - print = false, - tempskill = 0; - let firstskill1 = '?', - secondskill1 = '?', - tempskill1 = '?'; - let firstskill2 = '?', - secondskill2 = '?', - tempskill2 = '?'; -let notice = true; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 3000, -"message_RU": "Вход в зону машиностроения" +module.exports = (dispatch, handlers, guide, lang) => { + let orb_notice = true; + let msg_a = 3; + let msg_b = 3; + let mech_reverse = false; + let mech_notice = false; -}); + const mech_messages = { + 0: { message: "Out", message_RU: "От него" }, + 1: { message: "In", message_RU: "К нему" }, + 2: { message: "Wave", message_RU: "Волна" }, + 3: { message: "?", message_RU: "?" } + }; -handlers['text']({ -"sub_type": "notification", -"delay": 3000, -"message_RU": "Вход в зону машиностроения" -}); -} -notice_guide = false; + // Throwing orbs + function throwing_orb_event() { + if (orb_notice) { + orb_notice = false; -} - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } -// 召喚光柱 ,告示牌提示( 角度 距离 延迟时间 时间) -function SpawnThing( degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "SAFE SPOT", - "message": "SAFE" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} -// 召喚点 ,提示( 提示标志 角度 距离 延迟时间 时间) -function Spawnitem( item,degrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} + handlers.text({ + sub_type: "message", + message: "Throwing Orb", + message_RU: "Бомба" + }); - //构建直线(提示标志 偏移角度 偏移距离 角度 最远距离 时间) -function Spawnitem1(item,degree,distance,angles, maxRadius, times, handlers, event, entity) { - - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - let angle = angles * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - -function skilld_event(skillid, handlers, event, ent, dispatch) { - -if (skillid === 9935311 ) { - firstskill = tempskill; - secondskill = 0; - firstskill1 = tempskill1; - secondskill1 = '?'; - firstskill2 = tempskill2; - secondskill2 = '?'; - MSG = 'Next: ' + firstskill + ' + ' + secondskill - MSG1 = 'Next: ' + firstskill1 + secondskill1 - MSG2 = 'Next: ' + firstskill2 + secondskill2 -handlers['text']({ -"sub_type": "message", -"message_RU": MSG, -"message": MSG2 -}); -handlers['text']({ -"sub_type": "alert", -"message_RU": MSG1, -"message": MSG2 -}); -} else if (skillid === 9935312) { //REVERSE - secondskill = tempskill; - firstskill = 0; - secondskill1 = tempskill1; - firstskill1 = '?'; - secondskill2 = tempskill2; - firstskill2 = '?'; - MSG = 'Next: ' + firstskill + ' + ' + secondskill - MSG1 = 'Next: ' + firstskill1 + secondskill1 - MSG2 = 'Next: ' + firstskill2 + secondskill2 -handlers['text']({ -"sub_type": "message", -"message_RU": MSG, -"message": MSG2 -}); -handlers['text']({ -"sub_type": "alert", -"message_RU": MSG1, -"message": MSG2 -}); - } - -if (skillid === 9935302 ) { - firstskill = 'От'; - tempskill = 'От'; - firstskill1 = 'От'; - tempskill1 = 'От'; - firstskill2 = 'OUT'; - tempskill2 = 'OUT'; -handlers['text']({ -"sub_type": "alert", -"delay": 3000, -"message_RU": "От", -"message": "OUT" -}); - -} else if (skillid === 9935303) { // - firstskill = 'К'; - tempskill = 'К'; - firstskill1 = 'К'; - tempskill1 = 'К'; - firstskill2 = 'IN'; - tempskill2 = 'IN'; -handlers['text']({ -"sub_type": "alert", -"delay": 3000, -"message_RU": "К", -"message": "IN" -}); - -}else if (skillid === 9935304) { // - firstskill = 'Волны'; - tempskill = 'Волны'; - firstskill1 = 'Волны'; - tempskill1 = 'Волны'; - firstskill2 = 'Waves'; - tempskill2 = 'Waves'; -handlers['text']({ -"sub_type": "alert", -"delay": 3000, -"message_RU": "Волны", -"message": "Waves" -}); - + dispatch.setTimeout(() => orb_notice = true, 13000); } + } - if ( firstskill === 0 && skillid === 935301) { - firstskill = 'От'; - tempskill = 'От'; - firstskill1 = 'От'; - tempskill1 = 'От'; - firstskill2 = 'OUT'; - tempskill2 = 'OUT'; - MSG = firstskill + ' + ' + secondskill - MSG1 = firstskill1 + ' + ' + secondskill1 - MSG2 = firstskill2 + ' + ' + secondskill2 - handlers['text']({ -"sub_type": "message", -"message_RU": MSG, -"message": MSG2 -}); - secondskill = tempskill; - firstskill = 0; - secondskill1 = tempskill1; - firstskill1 = '?'; - secondskill2 = tempskill2; - firstskill2 = '?'; -handlers['text']({ -"sub_type": "alert", -"delay": 8000, -"message_RU": "От", -"message": "OUT" -}); -}else if ( firstskill === 0 && skillid === 935302) { - firstskill = 'К'; - tempskill = 'К'; - firstskill1 = 'К'; - tempskill1 = 'К'; - firstskill2 = 'IN'; - tempskill2 = 'IN'; - MSG = firstskill + ' + ' + secondskill - MSG1 = firstskill1 + ' + ' + secondskill1 - MSG2 = firstskill2 + ' + ' + secondskill2 - handlers['text']({ -"sub_type": "message", -"message_RU": MSG, -"message": MSG2 -}); - secondskill = tempskill; - firstskill = 0; - secondskill1 = tempskill1; - firstskill1 = '?'; - secondskill2 = tempskill2; - firstskill2 = '?'; -handlers['text']({ -"sub_type": "alert", -"delay": 8000, -"message_RU": "К", -"message": "IN" -}); + // Core mechanics + function thirdboss_mech_event(skillid) { + if ([9935302, 9935303, 9935304, 9935311, 9935312].includes(skillid)) { + switch (skillid) { + // DM + case 9935302: // Out + msg_a = 0; + print_mech(true, false); + break; -}else if ( firstskill === 0 && skillid === 935303) { - firstskill = 'Волны'; - tempskill = 'Волны'; - firstskill1 = 'Волны'; - tempskill1 = 'Волны'; - firstskill2 = 'Waves'; - tempskill2 = 'Waves'; - MSG = firstskill + ' + ' + secondskill - MSG1 = firstskill1 + ' + ' + secondskill1 - MSG2 = firstskill2 + ' + ' + secondskill2 - handlers['text']({ -"sub_type": "message", -"message_RU": MSG, -"message": MSG2 -}); - secondskill = tempskill; - firstskill = 0; - secondskill1 = tempskill1; - firstskill1 = '?'; - secondskill2 = tempskill2; - firstskill2 = '?'; -handlers['text']({ -"sub_type": "alert", -"delay": 8000, -"message_RU": "Волны", -"message": "Waves" -}); -} + case 9935303: // In + msg_a = 1; + print_mech(true, false); + break; - if ( secondskill === 0 && skillid === 935301) { - secondskill = 'От'; - tempskill = 'От'; - secondskill1 = 'От'; - tempskill1 = 'От'; - secondskill2 = 'OUT'; - tempskill2 = 'OUT'; - MSG = firstskill + ' + ' + secondskill - MSG1 = firstskill1 + ' + ' + secondskill1 - MSG2 = firstskill2 + ' + ' + secondskill2 - handlers['text']({ -"sub_type": "message", -"message_RU": MSG, -"message": MSG2 -}); - firstskill = tempskill; - secondskill = 0; - firstskill1 = tempskill1; - secondskill1 = '?'; - firstskill2 = tempskill2; - secondskill2 = '?'; -handlers['text']({ -"sub_type": "alert", -"delay": 8000, -"message_RU": "От", -"message": "OUT" -}); -}else if ( secondskill === 0 && skillid === 935302) { - secondskill = 'К'; - tempskill = 'К'; - secondskill1 = 'К'; - tempskill1 = 'К'; - secondskill2 = 'IN'; - tempskill2 = 'IN'; - MSG = firstskill + ' + ' + secondskill - MSG1 = firstskill1 + ' + ' + secondskill1 - MSG2 = firstskill2 + ' + ' + secondskill2 - handlers['text']({ -"sub_type": "message", -"message_RU": MSG, -"message": MSG2 -}); - firstskill = tempskill; - secondskill = 0; - firstskill1 = tempskill1; - secondskill1 = '?'; - firstskill2 = tempskill2; - secondskill2 = '?'; -handlers['text']({ -"sub_type": "alert", -"delay": 8000, -"message_RU": "К", -"message": "IN" -}); -}else if ( secondskill === 0 && skillid === 935303) { - secondskill = 'Волны'; - tempskill = 'Волны'; - secondskill1 = 'Волны'; - tempskill1 = 'Волны'; - secondskill2 = 'Waves'; - tempskill2 = 'Waves'; - MSG = firstskill + ' + ' + secondskill - MSG1 = firstskill1 + ' + ' + secondskill1 - MSG2 = firstskill2 + ' + ' + secondskill2 - handlers['text']({ -"sub_type": "message", -"message_RU": MSG, -"message": MSG2 -}); - firstskill = tempskill; - secondskill = 0; - firstskill1 = tempskill1; - secondskill1 = '?'; - firstskill2 = tempskill2; - secondskill2 = '?'; -handlers['text']({ -"sub_type": "alert", -"delay": 8000, -"message_RU": "Волны", -"message": "Waves" -}); -} - if (notice && skillid == 301 ) { - notice = false; -handlers['text']({"sub_type": "message","message": "throws","message_RU": "Бомба"}); - - setTimeout(() => notice = true, 13000); - } -} -function start_boss() { -print = true; -} -function print_seventy(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message": "70%", -"message_RU": "70%" -}); -} -print = false; -} -module.exports = { - - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, -// 召喚点 ,提示( 提示标志 角度 距离 延迟时间 时间) + case 9935304: // Wave + msg_a = 2; + print_mech(true, false); + break; + case 9935311: // STANDARD (1) + mech_reverse = false; + print_mech(true, true); + if (mech_notice) { + print_mech(false, false); + } + break; - // "h-935-1000-100": [{"type": "func","func": guid_voice}], + case 9935312: // REVERSE (0) + mech_reverse = true; + print_mech(true, true); + if (mech_notice) { + print_mech(false, false); + } + break; + } + } + // QB + // 0: Out 935301 + // 1: In 935302 + // 2: Wave 935303 + if (skillid >= 0 && skillid < 3) { + msg_b = skillid; + print_mech(false, false); + msg_a = msg_b; + msg_b = 3; + dispatch.setTimeout(() => { + print_mech(true, false); + }, 7000); - "s-935-1000-108-0": [{"type": "text","sub_type": "message","message": "OUT","message_RU": "От" }], - "s-935-1000-111-0": [{"type": "text","sub_type": "message","message": "BACK ATTACK","message_RU": "Удар назад" }], - "s-935-1000-112-0": [{"type": "text","sub_type": "message","message": "BACK ATTACK","message_RU": "Удар назад" }], - "s-935-1000-205-0": [{"type": "text","sub_type": "message","message": "wind","message_RU": "Ветер (кайя)!!!" }], - "s-935-1000-304-0": [{"type": "text","sub_type": "message","message": "OUT","message_RU": "От" }], - "s-935-1000-305-0": [{"type": "text","sub_type": "message","message": "IN","message_RU": "К" }], - "s-935-1000-306-0": [{"type": "text","sub_type": "message","message": "Incoming Summon","message_RU": "Бомбы !!!" }], - "s-935-1000-307-0": [{"type": "text","sub_type": "message","message": "PULL","message_RU": "Стяжка!!!" }], - - "s-935-1000-309-0": [ - {"type": "text","sub_type": "message","message": "Four missile launches were initiated","message_RU": "Запуск 4 ракет!!!" }, - {"type": "text","sub_type": "message","delay": 7000,"message": "5", "message_RU": "5"}, - {"type": "text","sub_type": "message","delay": 8000,"message": "4", "message_RU": "4"}, - {"type": "text","sub_type": "message","delay": 9000,"message": "3", "message_RU": "3"}, - {"type": "text","sub_type": "message","delay": 10000,"message": "2", "message_RU": "2"}, - {"type": "text","sub_type": "message","delay": 11000,"message": "1", "message_RU": "1"}, - {"type": "text","sub_type": "message","delay": 12000,"message": "JUMP", "message_RU": "快跳!"} -], - "s-935-1000-311-0": [{"type": "text","sub_type": "message","message": "Safe right front →↗","message_RU": "Верхний правый" }, - {"type": "func","func": SpawnThing.bind(null,67,120,100,12000)}],// - "s-935-1000-312-0": [{"type": "text","sub_type": "message","message": "Safe right back →↘","message_RU": "Справа внизу" }, - {"type": "func","func": SpawnThing.bind(null,112,120,100,12000)}], // - "s-935-1000-313-0": [{"type": "text","sub_type": "message","message": "Safe back left ↓↙","message_RU": "Сзади слева" }, - {"type": "func","func": SpawnThing.bind(null,202,120,100,12000)}],// - "s-935-1000-314-0": [{"type": "text","sub_type": "message","message": "Safe front left ↑↖","message_RU": "Передний левый" }, - {"type": "func","func": SpawnThing.bind(null,337,120,100,12000)}],// - "s-935-1000-315-0": [{"type": "text","sub_type": "message","message": "Safe front right ↑↗","message_RU": "Справа спереди" }, - {"type": "func","func": SpawnThing.bind(null,22,120,100,12000)}], // - "s-935-1000-316-0": [{"type": "text","sub_type": "message","message": "Safe back right ↓↘","message_RU": "Сзади справа" }, - {"type": "func","func": SpawnThing.bind(null,157,120,100,12000)}],// - "s-935-1000-317-0": [{"type": "text","sub_type": "message","message": "Safe left back ←↙","message_RU": "Левый нижний" }, - {"type": "func","func": SpawnThing.bind(null,247,120,100,12000)}],// - "s-935-1000-318-0": [{"type": "text","sub_type": "message","message": "Safe left front ←↖","message_RU": "Верхний левый" }, - {"type": "func","func": SpawnThing.bind(null,292,120,100,12000)}],// - "s-935-1000-319-0": [{"type": "text","sub_type": "message","message": "Safe front right ↑↗","message_RU": "Справа спереди" }, - {"type": "func","func": SpawnThing.bind(null,22,120,100,12000)}], // - "s-935-1000-320-0": [{"type": "text","sub_type": "message","message": "Safe back right ↓↘","message_RU": "Сзади справа" }, - {"type": "func","func": SpawnThing.bind(null,157,120,100,12000)}],// - "s-935-1000-321-0": [{"type": "text","sub_type": "message","message": "Safe back left ↓↙","message_RU": "Сзади слева" }, - {"type": "func","func": SpawnThing.bind(null,202,120,100,12000)}],// - "s-935-1000-322-0": [{"type": "text","sub_type": "message","message": "Safe left front ←↖","message_RU": "Верхний левый" }, - {"type": "func","func": SpawnThing.bind(null,292,120,100,12000)}], // - "s-935-1000-323-0": [{"type": "text","sub_type": "message","message": "Safe right front →↗","message_RU": "Верхний правый" }, - {"type": "func","func": SpawnThing.bind(null,67,120,100,12000)}], // - "s-935-1000-324-0": [{"type": "text","sub_type": "message","message": "Safe right back →↘","message_RU": "Справа внизу" }, - {"type": "func","func": SpawnThing.bind(null,112,120,100,12000)}],// - "s-935-1000-325-0": [{"type": "text","sub_type": "message","message": "Safe left back ←↙","message_RU": "Левый нижний" }, - {"type": "func","func": SpawnThing.bind(null,247,120,100,12000)}],// - "s-935-1000-326-0": [{"type": "text","sub_type": "message","message": "Safe front left ↑↖","message_RU": "Передний левый" }, - {"type": "func","func": SpawnThing.bind(null,337,120,100,12000)}],// + mech_notice = true; + dispatch.setTimeout(() => mech_notice = false, 3000); + } + } + function print_mech(next, code) { + let message = "", + message_RU = "", + sub_type = "message"; -//------------------------------------2王 + if (next) { + message += "Next: "; + message_RU += "Далее: "; + sub_type = "notification"; + } -"s-935-2000-102-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_RU": "Пила(Эвейд)"}], -"s-935-2000-105-0": [{"type": "text","sub_type": "message","message": "360","message_RU": "Крутилка (откид)"}, -{"type": "func","func": Spawnitem2.bind(null,912,0,0,15,250,100,4000)} -], -"s-935-2000-108-0": [{"type": "text","sub_type": "message","message": "back","message_RU": "Откид назад"}], -"s-935-2000-301-0": [{"type": "func","func": skilld_event.bind(null, 301)}], + if (mech_reverse) { + message += `${mech_messages[msg_b].message} + ${mech_messages[msg_a].message}`; + message_RU += `${mech_messages[msg_b].message_RU} + ${mech_messages[msg_a].message_RU}`; + } else { + message += `${mech_messages[msg_a].message} + ${mech_messages[msg_b].message}`; + message_RU += `${mech_messages[msg_a].message_RU} + ${mech_messages[msg_b].message_RU}`; + } -"s-935-2000-304-0": [{"type": "text","sub_type": "message","message": "OUT","message_RU": "От!!!"}], -"s-935-2000-305-0": [{"type": "text","sub_type": "message","message": "IN","message_RU": "К | От"}, -{"type": "func","func": Spawnitem2.bind(null,912,0,0,15,225,100,4000)} -], -"s-935-2000-308-0": [{"type": "text","sub_type": "message","message": "left←","message_RU": "Влево "}], -"s-935-2000-309-0": [{"type": "text","sub_type": "message","message": "right→","message_RU": "Вправо "}], + if (code) { + message += `, Code: ${mech_reverse ? "0" : "1"}`; + message_RU += `, Код: ${mech_reverse ? "0" : "1"}`; + } -"s-935-2007-201-0": [ - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,500,8000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,90,500,8000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,180,500,8000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,270,500,8000)}], - -"s-935-2007-306-0": [ - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,500,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,90,500,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,180,500,4000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,270,500,4000)}], -"s-935-2007-307-0": [ - {"type": "func","func": Spawnitem1.bind(null,553,0,0,0,500,12000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,90,500,12000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,180,500,12000)}, - {"type": "func","func": Spawnitem1.bind(null,553,0,0,270,500,12000)}], -//------------------------------------3王 - "h-935-3000-99": [{"type": "func","func": start_boss}], - "h-935-3000-70": [{"type": "func","func": print_seventy}], - "dm-0-0-9935311": [{"type": "func","func": skilld_event.bind(null, 9935311)}], - "dm-0-0-9935312": [{"type": "func","func": skilld_event.bind(null, 9935312)}], - "dm-0-0-9935302": [{"type": "func","func": skilld_event.bind(null, 9935302)}], - "dm-0-0-9935303": [{"type": "func","func": skilld_event.bind(null, 9935303)}], - "dm-0-0-9935304": [{"type": "func","func": skilld_event.bind(null, 9935304)}], - "qb-935-3000-935301": [{"type": "func","func": skilld_event.bind(null, 935301)}], - "qb-935-3000-935302": [{"type": "func","func": skilld_event.bind(null, 935302)}], - "qb-935-3000-935303": [{"type": "func","func": skilld_event.bind(null, 935303)}], -//s拳 -"s-935-3000-116-0": [{"type": "text","sub_type": "message","message": "RIGHT →↘","message_RU": "Справа"}, - {"type": "func","func": Spawnitem.bind(null,6,170,200,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,6,350,200,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,120,250,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,130,240,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,140,230,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,150,220,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,160,210,0,3000)}, - {"type": "func","func": Spawnitem1.bind(null,912,170,210,180,290,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,300,250,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,310,240,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,320,230,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,330,220,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,340,210,0,3000)}, - {"type": "func","func": Spawnitem1.bind(null,912,350,210,0,290,3000)}], -"s-935-3000-117-0": [{"type": "text","sub_type": "message","message": "LEFT ←↙","message_RU": "Слева"}, - {"type": "func","func": Spawnitem.bind(null,6,10,200,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,6,190,200,0,3000)}, - {"type": "func","func": Spawnitem1.bind(null,912,10,210,0,290,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,20,210,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,30,220,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,40,230,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,50,240,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,60,250,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,240,250,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,230,240,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,220,230,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,210,220,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,200,210,0,3000)}, - {"type": "func","func": Spawnitem1.bind(null,912,190,210,180,290,3000)}], -"s-935-3000-118-0": [{"type": "text","sub_type": "message","message": "LEFT ←↙","message_RU": "Слева"}, - {"type": "func","func": Spawnitem.bind(null,6,10,200,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,6,190,200,0,3000)}, - {"type": "func","func": Spawnitem1.bind(null,912,10,210,0,290,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,20,210,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,30,220,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,40,230,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,50,240,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,60,250,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,240,250,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,230,240,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,220,230,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,210,220,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,200,210,0,3000)}, - {"type": "func","func": Spawnitem1.bind(null,912,190,210,180,290,3000)}], -"s-935-3000-119-0": [{"type": "text","sub_type": "message","message": "RIGHT →↘","message_RU": "Справа"}, - {"type": "func","func": Spawnitem.bind(null,6,170,200,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,6,350,200,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,120,250,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,130,240,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,140,230,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,150,220,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,160,210,0,3000)}, - {"type": "func","func": Spawnitem1.bind(null,912,170,210,180,290,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,300,250,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,310,240,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,320,230,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,330,220,0,3000)}, - {"type": "func","func": Spawnitem.bind(null,912,340,210,0,3000)}, - {"type": "func","func": Spawnitem1.bind(null,912,350,210,0,290,3000)}], - -"s-935-3000-129-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "dodge","message_RU": "Эвейд"}], + handlers.text({ + sub_type: sub_type, + message: message, + message_RU: message_RU + }); + } + // S-attacks + function thirdboss_sattack_event(skillid) { + // Safe: 116/119 [R] + 222-0 [R] > 222-1 [L] > 222-2 [R] + // Safe: 117/118 [L] + 223-0 [L] > 223-1 [R] > 223-2 [L] + if ([1160, 1190].includes(skillid)) { + handlers.text({ sub_type: "message", message: "Right Safe", message_RU: "Справа сейф" }); + } + if ([1170, 1180].includes(skillid)) { + handlers.text({ sub_type: "message", message: "Left Safe", message_RU: "Слева сейф" }); + } + if ([1160, 1161, 1162, 1163, 1190, 1191, 1192, 1193, 2220, 2222, 2231].includes(skillid)) { // right safe + handlers.event([ + { type: "spawn", func: "marker", args: [false, 160, 300, 0, 900, true, null] }, + { type: "spawn", func: "marker", args: [false, 340, 300, 0, 900, true, null] }, + { type: "spawn", func: "point", args: [202, 170, 200, 0, 900] }, + { type: "spawn", func: "point", args: [202, 350, 200, 0, 900] }, + { type: "spawn", func: "vector", args: [912, 170, 210, 180, 290, 0, 900] }, + { type: "spawn", func: "point", args: [912, 120, 250, 0, 900] }, + { type: "spawn", func: "point", args: [912, 130, 240, 0, 900] }, + { type: "spawn", func: "point", args: [912, 140, 230, 0, 900] }, + { type: "spawn", func: "point", args: [912, 150, 220, 0, 900] }, + { type: "spawn", func: "point", args: [912, 160, 210, 0, 900] }, + { type: "spawn", func: "point", args: [912, 300, 250, 0, 900] }, + { type: "spawn", func: "point", args: [912, 310, 240, 0, 900] }, + { type: "spawn", func: "point", args: [912, 320, 230, 0, 900] }, + { type: "spawn", func: "point", args: [912, 330, 220, 0, 900] }, + { type: "spawn", func: "point", args: [912, 340, 210, 0, 900] }, + { type: "spawn", func: "vector", args: [912, 350, 210, 0, 290, 0, 900] } + ]); + } + if ([1170, 1171, 1172, 1173, 1180, 1181, 1182, 1183, 2230, 2232, 2221].includes(skillid)) { // left safe + handlers.event([ + { type: "spawn", func: "marker", args: [false, 20, 300, 0, 900, true, null] }, + { type: "spawn", func: "marker", args: [false, 200, 300, 0, 900, true, null] }, + { type: "spawn", func: "point", args: [202, 10, 200, 0, 900] }, + { type: "spawn", func: "point", args: [202, 190, 200, 0, 900] }, + { type: "spawn", func: "vector", args: [912, 10, 210, 0, 290, 0, 900] }, + { type: "spawn", func: "point", args: [912, 20, 210, 0, 900] }, + { type: "spawn", func: "point", args: [912, 30, 220, 0, 900] }, + { type: "spawn", func: "point", args: [912, 40, 230, 0, 900] }, + { type: "spawn", func: "point", args: [912, 50, 240, 0, 900] }, + { type: "spawn", func: "point", args: [912, 60, 250, 0, 900] }, + { type: "spawn", func: "point", args: [912, 240, 250, 0, 900] }, + { type: "spawn", func: "point", args: [912, 230, 240, 0, 900] }, + { type: "spawn", func: "point", args: [912, 220, 230, 0, 900] }, + { type: "spawn", func: "point", args: [912, 210, 220, 0, 900] }, + { type: "spawn", func: "point", args: [912, 200, 210, 0, 900] }, + { type: "spawn", func: "vector", args: [912, 190, 210, 180, 290, 0, 900] } + ]); + } + } -"s-935-3000-305-0": [{"type": "func","func": Spawnitem2.bind(null,912,0,0,15,300,100,7000)}], - "s-935-3000-321-0": [ - {"type": "text","sub_type": "message","message": "SHIELD!","message_RU": "BOSS护盾 快打,不然灭团!" }, - {"type": "text","sub_type": "message","delay": 105000,"message": "After 10s SHIELD! ", "message_RU": "Через 10сек щит!!!"} - ], + return { + // 1 BOSS + "nd-935-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "qb-935-1000-935101": [{ type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }], + "qb-935-1000-935102": [{ type: "text", sub_type: "message", message: "AOE! Jump", message_RU: "AOE! Прыгай!!!" }], + "s-935-1000-104-0": [{ type: "text", sub_type: "message", message: "Front Clip", message_RU: "Передний зажим" }], + "s-935-1000-108-0": [{ type: "text", sub_type: "message", message: "Get Out", message_RU: "От него" }], // крутилка + "s-935-1000-111-0": [{ type: "text", sub_type: "message", message: "Back + Front", message_RU: "Удар назад + вперед" }], + "s-935-1000-112-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }], + "s-935-1001-205-0": [{ type: "text", sub_type: "message", message: "Wind (Kaia)", message_RU: "Ветер (кайя)!" }], + "s-935-1002-205-0": [{ type: "alias", id: "s-935-1001-205-0" }], + "s-935-1003-205-0": [{ type: "alias", id: "s-935-1001-205-0" }], + "s-935-1004-205-0": [{ type: "alias", id: "s-935-1001-205-0" }], + "s-935-1005-205-0": [{ type: "alias", id: "s-935-1001-205-0" }], + "s-935-1006-205-0": [{ type: "alias", id: "s-935-1001-205-0" }], + "s-935-1007-205-0": [{ type: "alias", id: "s-935-1001-205-0" }], + "s-935-1008-205-0": [{ type: "alias", id: "s-935-1001-205-0" }], + "s-935-1000-304-0": [{ type: "text", sub_type: "message", message: "Out", message_RU: "От него" }], + "s-935-1000-305-0": [{ type: "text", sub_type: "message", message: "In", message_RU: "К нему" }], + "s-935-1000-306-0": [{ type: "text", sub_type: "message", message: "Bombs", message_RU: "Бомбы" }], + "s-935-1000-307-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Стяжка" }], + "s-935-1000-309-0": [ + { type: "text", sub_type: "message", message: "Four Missile", message_RU: "Запуск 4 ракет" }, + { type: "text", sub_type: "message", delay: 6000, message: "5", message_RU: "5" }, + { type: "text", sub_type: "message", delay: 7000, message: "4", message_RU: "4" }, + { type: "text", sub_type: "message", delay: 8000, message: "3", message_RU: "3" }, + { type: "text", sub_type: "message", delay: 9000, message: "2", message_RU: "2" }, + { type: "text", sub_type: "message", delay: 10000, message: "1", message_RU: "1" }, + { type: "text", sub_type: "message", delay: 11000, message: "Jump", message_RU: "Прыгай!" } + ], + "s-935-1000-311-0": [ + { type: "text", sub_type: "message", message: "Safe right front", message_RU: "Справа спереди сейф" }, + { type: "spawn", func: "marker", args: [false, 67, 120, 100, 12000, true, null] } + ], + "s-935-1000-312-0": [ + { type: "text", sub_type: "message", message: "Safe right back", message_RU: "Справа сзади сейф" }, + { type: "spawn", func: "marker", args: [false, 112, 120, 100, 12000, true, null] } + ], + "s-935-1000-313-0": [ + { type: "text", sub_type: "message", message: "Safe back left", message_RU: "Сзади слева сейф" }, + { type: "spawn", func: "marker", args: [false, 202, 120, 100, 12000, true, null] } + ], + "s-935-1000-314-0": [ + { type: "text", sub_type: "message", message: "Safe front left", message_RU: "Спереди слева сейф" }, + { type: "spawn", func: "marker", args: [false, 337, 120, 100, 12000, true, null] } + ], + "s-935-1000-315-0": [ + { type: "text", sub_type: "message", message: "Safe front right", message_RU: "Спереди справа сейф" }, + { type: "spawn", func: "marker", args: [false, 22, 120, 100, 12000, true, null] } + ], + "s-935-1000-316-0": [ + { type: "text", sub_type: "message", message: "Safe back right", message_RU: "Сзади справа сейф" }, + { type: "spawn", func: "marker", args: [false, 157, 120, 100, 12000, true, null] } + ], + "s-935-1000-317-0": [ + { type: "text", sub_type: "message", message: "Safe left back", message_RU: "Слева сзади сейф" }, + { type: "spawn", func: "marker", args: [false, 247, 120, 100, 12000, true, null] } + ], + "s-935-1000-318-0": [ + { type: "text", sub_type: "message", message: "Safe left front", message_RU: "Слева спереди сейф" }, + { type: "spawn", func: "marker", args: [false, 292, 120, 100, 12000, true, null] } + ], + "s-935-1000-319-0": [ + { type: "text", sub_type: "message", message: "Safe front right", message_RU: "Спереди справа сейф" }, + { type: "spawn", func: "marker", args: [false, 22, 120, 100, 12000, true, null] } + ], + "s-935-1000-320-0": [ + { type: "text", sub_type: "message", message: "Safe back right", message_RU: "Сзади справа сейф" }, + { type: "spawn", func: "marker", args: [false, 157, 120, 100, 12000, true, null] } + ], + "s-935-1000-321-0": [ + { type: "text", sub_type: "message", message: "Safe back left", message_RU: "Сзади слева сейф" }, + { type: "spawn", func: "marker", args: [false, 202, 120, 100, 12000, true, null] } + ], + "s-935-1000-322-0": [ + { type: "text", sub_type: "message", message: "Safe left front", message_RU: "Слева спереди сейф" }, + { type: "spawn", func: "marker", args: [false, 292, 120, 100, 12000, true, null] } + ], + "s-935-1000-323-0": [ + { type: "text", sub_type: "message", message: "Safe right front", message_RU: "Справа спереди сейф" }, + { type: "spawn", func: "marker", args: [false, 67, 120, 100, 12000, true, null] } + ], + "s-935-1000-324-0": [ + { type: "text", sub_type: "message", message: "Safe right back", message_RU: "Справа сзади сейф" }, + { type: "spawn", func: "marker", args: [false, 112, 120, 100, 12000, true, null] } + ], + "s-935-1000-325-0": [ + { type: "text", sub_type: "message", message: "Safe left back", message_RU: "Слева сзади сейф" }, + { type: "spawn", func: "marker", args: [false, 247, 120, 100, 12000, true, null] } + ], + "s-935-1000-326-0": [ + { type: "text", sub_type: "message", message: "Safe front left", message_RU: "Спереди слева сейф" }, + { type: "spawn", func: "marker", args: [false, 337, 120, 100, 12000, true, null] } + ], -"s-935-3000-324-0": [{"type": "text","sub_type": "message","message": "out","message_RU": "От"}] + // 2 BOSS + "nd-935-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-935-2000": [ + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -32904, y: 59440, z: 0 } }, + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -32900, y: 58824, z: 0 } }, + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -32372, y: 58520, z: 0 } }, + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -31842, y: 58833, z: 0 } }, + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -31846, y: 59444, z: 0 } }, + { type: "spawn", "id": 476, "sub_delay": 99999999, "pos": { x: -32379, y: 59750, z: 0 } } + ], + "s-935-2000-102-0": [ + { type: "text", sub_type: "message", message: "Pizza Cutter", message_RU: "Пила" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 300, 12, 228, 0, 3000] } + ], + "s-935-2000-105-0": [ + { type: "text", sub_type: "message", message: "360", message_RU: "Крутилка (откид)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 278, 0, 5000] } + ], + "s-935-2000-108-0": [ + { type: "text", sub_type: "message", message: "Back Swipe", message_RU: "Откид назад" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 240, 380, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 120, 380, 0, 2000] } + ], + "s-935-2000-301-0": [{ type: "func", func: throwing_orb_event }], + "s-935-2000-304-0": [ + { type: "text", sub_type: "message", message: "Get Out", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 400, 0, 4000] } + ], + "s-935-2000-305-0": [ + { type: "text", sub_type: "message", message: "In | Out", message_RU: "К нему | От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 200, 0, 3000] } + ], + "s-935-2000-308-0": [{ type: "text", sub_type: "message", message: "Left", message_RU: "Влево" }], + "s-935-2000-309-0": [{ type: "text", sub_type: "message", message: "Right", message_RU: "Вправо" }], + "s-935-2007-201-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 500, 0, 4000] } + ], + "s-935-2007-306-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 500, 0, 2000] } + ], + "s-935-2007-307-0": [ + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 500, 0, 4000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 500, 0, 4000] } + ], -}; + // 3 BOSS + "nd-935-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "dm-0-0-9935311": [{ type: "func", func: thirdboss_mech_event, args: [9935311] }], // 1 std + "dm-0-0-9935312": [{ type: "func", func: thirdboss_mech_event, args: [9935312] }], // 0 rev + "dm-0-0-9935302": [{ type: "func", func: thirdboss_mech_event, args: [9935302] }], // out + "dm-0-0-9935303": [{ type: "func", func: thirdboss_mech_event, args: [9935303] }], // in + "dm-0-0-9935304": [{ type: "func", func: thirdboss_mech_event, args: [9935304] }], // wave + "qb-935-3000-935301": [{ type: "func", func: thirdboss_mech_event, args: [0] }], // out + "qb-935-3000-935302": [{ type: "func", func: thirdboss_mech_event, args: [1] }], // in + "qb-935-3000-935303": [{ type: "func", func: thirdboss_mech_event, args: [2] }], // wave + // right safe S + "s-935-3000-116-0": [{ type: "func", func: thirdboss_sattack_event, args: [1160] }], + "s-935-3000-116-1": [{ type: "func", func: thirdboss_sattack_event, args: [1161] }], + "s-935-3000-116-2": [{ type: "func", func: thirdboss_sattack_event, args: [1162] }], + "s-935-3000-116-3": [{ type: "func", func: thirdboss_sattack_event, args: [1163] }], + "s-935-3000-119-0": [{ type: "func", func: thirdboss_sattack_event, args: [1190] }], + "s-935-3000-119-1": [{ type: "func", func: thirdboss_sattack_event, args: [1191] }], + "s-935-3000-119-2": [{ type: "func", func: thirdboss_sattack_event, args: [1192] }], + "s-935-3000-119-3": [{ type: "func", func: thirdboss_sattack_event, args: [1193] }], + "s-935-3000-223-1": [{ type: "func", func: thirdboss_sattack_event, args: [2231] }], + "s-935-3000-222-0": [{ type: "func", func: thirdboss_sattack_event, args: [2220] }], + "s-935-3000-222-2": [{ type: "func", func: thirdboss_sattack_event, args: [2222] }], + // left safe S + "s-935-3000-117-0": [{ type: "func", func: thirdboss_sattack_event, args: [1170] }], + "s-935-3000-117-1": [{ type: "func", func: thirdboss_sattack_event, args: [1171] }], + "s-935-3000-117-2": [{ type: "func", func: thirdboss_sattack_event, args: [1172] }], + "s-935-3000-117-3": [{ type: "func", func: thirdboss_sattack_event, args: [1173] }], + "s-935-3000-118-0": [{ type: "func", func: thirdboss_sattack_event, args: [1180] }], + "s-935-3000-118-1": [{ type: "func", func: thirdboss_sattack_event, args: [1181] }], + "s-935-3000-118-2": [{ type: "func", func: thirdboss_sattack_event, args: [1182] }], + "s-935-3000-118-3": [{ type: "func", func: thirdboss_sattack_event, args: [1182] }], + "s-935-3000-222-1": [{ type: "func", func: thirdboss_sattack_event, args: [2221] }], + "s-935-3000-223-0": [{ type: "func", func: thirdboss_sattack_event, args: [2230] }], + "s-935-3000-223-2": [{ type: "func", func: thirdboss_sattack_event, args: [2232] }], + // + "s-935-3000-125-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Удар вперед" }], + "s-935-3000-126-0": [{ type: "text", sub_type: "message", message: "Front | Back", message_RU: "Удар вперед | Удар назад" }], + "s-935-3000-127-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад" }], + "s-935-3000-128-0": [ + { type: "text", sub_type: "message", message: "Combo | Back Wave", message_RU: "Комба | Конус назад" }, + { type: "spawn", func: "vector", args: [553, 180, 40, 120, 1200, 2000, 3000] }, + { type: "spawn", func: "vector", args: [553, 180, 40, 240, 1200, 2000, 3000] } + ], + "s-935-3000-129-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-935-3000-305-0": [{ type: "spawn", func: "circle", args: [false, 912, 0, 0, 10, 300, 0, 6000] }], // 935301 935302 935303 -> 305 + "s-935-3000-321-0": [ + { type: "text", sub_type: "message", message: "Shield!", message_RU: "Щит!" }, + { type: "text", sub_type: "message", delay: 105000, message: "Shield in 10 seconds!", message_RU: "Через 10 сек. Щит!" } + ], + "s-935-3001-308-0": [ + { type: "text", sub_type: "message", message: "Bait!", message_RU: "Байт!" }, + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 90, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 180, 300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 270, 300, 0, 2000] } + ], + // Radar + "qb-935-3000-935312": [{ type: "text", sub_type: "message", message: "!!! Radar !!!", message_RU: "!!! Радар !!!" }], + "s-935-3000-324-0": [ + { type: "text", sub_type: "message", message: "OUT", message_RU: "ОТ НЕГО" }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 10, 250, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 12, 200, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 14, 150, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 18, 100, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 50, 50, 0, 3000] } + ], + "s-935-3000-325-0": [ + { type: "text", sub_type: "message", message: "IN", message_RU: "К НЕМУ" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 3000] } + ] + }; +}; \ No newline at end of file diff --git a/guides/9939.js b/guides/9939.js index e958c623..322376e2 100644 --- a/guides/9939.js +++ b/guides/9939.js @@ -1,86 +1,117 @@ - -//made by michengs - -let player, entity, library, effect; - - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } -function Spawnitem2(item,degrees,distance, intervalDegrees, radius, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - -"s-939-2000-119-0": [{"type": "text","sub_type": "message","message": "Jump","message_TW": "前喷"}], - -"s-939-2000-113-0": [{"type": "text","sub_type": "message","message": "Spin","message_TW": "击晕"}], - - -"s-939-2000-115-0": [{"type": "text","sub_type": "message","message": "Spin","message_TW": "旋转"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,300,6000)}], - - - - - - - - - -"s-939-2000-304-0": [{"type": "text","sub_type": "message","message": "Spin","message_TW": "拉人"}], - - - - - - - - - - - - - - - - - - - - - - - - - - - -"s-759-2000-101-0": [{"type": "text","sub_type": "message","message": "Push","message_TW": "推"}], -"s-759-2000-104-0": [{"type": "text","sub_type": "message","message": "BIG AOE","message_TW": "全屏攻击"}], -"s-759-2000-107-0": [{"type": "text","sub_type": "message","message": "Dodge","message_TW": "闪避"}], - - -"s-759-3000-101-0": [{"type": "text","sub_type": "message","message": "Explo","message_TW": "爆炸"}], -"s-759-3000-102-0": [{"type": "text","sub_type": "message","message": "Pull","message_TW": "拉"}], -"s-759-3000-105-0": [{"type": "text","sub_type": "message","message": "Dodge","message_TW": "闪避"}], -"s-759-3000-110-0": [{"type": "text","sub_type": "message","message": "GET OUT","message_TW": "出"}] - +// Red Refuge (Hard) +// +// made by multarix + +module.exports = (dispatch, handlers, guide, lang) => { + let first_boss_debuff = false; + + return { + // 1 BOSS + "nd-939-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-939-1000-105-0": [{ type: "text", sub_type: "message", message: "Turn + Breath", message_RU: "Поворот + дыхание" }], + "die": [{ type: "func", func: () => { first_boss_debuff = false; } }], + "ar-0-0-93910005": [{ type: "func", func: () => first_boss_debuff = false }], + "ae-0-0-93910005": [{ type: "func", func: () => first_boss_debuff = true }], + "s-939-93910-305-0": [ + { type: "text", sub_type: "message", message: "Enter the big circle", message_RU: "Зайти в большой круг", check_func: () => first_boss_debuff }, + { type: "text", sub_type: "message", message: "Exit the big circle", message_RU: "Выйти из большого круга", check_func: () => !first_boss_debuff } + ], + "s-939-93911-305-0": "s-939-93910-305-0", + "s-939-93912-305-0": "s-939-93910-305-0", + "s-939-93913-305-0": "s-939-93910-305-0", + "s-939-93914-305-0": "s-939-93910-305-0", + "s-939-1000-308-0": [ + { type: "text", sub_type: "message", message: "In > Out", message_RU: "К нему > От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 7500] }, + { type: "text", sub_type: "message", message: "Out", message_RU: "От него", delay: 3900 } + ], + "s-939-1000-112-0": [{ type: "text", sub_type: "message", message: "Back Spray", message_RU: "Волна назад" }], + "s-939-1000-120-0": "s-939-1000-112-0", + "s-939-1000-113-0": [{ type: "text", sub_type: "message", message: "Back Spray + Fire Wave", message_RU: "Волна назад + Огненная волна" }], + "s-939-1000-115-0": [{ type: "text", sub_type: "message", message: "Front Spray + Fire Wave", message_RU: "Волна вперед + Огненная волна" }], + "s-939-1000-107-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-939-1000-117-0": [{ type: "text", sub_type: "message", message: "Jump + Spin", message_RU: "Прыжок + Прокрутка" }], + "s-939-1000-119-0": [{ type: "text", sub_type: "message", message: "Many Hits", message_RU: "Несколько ударов" }], + "s-939-1000-306-0": [ + { type: "text", sub_type: "message", message: "Out > In", message_RU: "От него > К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 7500] }, + { type: "text", sub_type: "message", message: "In", message_RU: "К нему", delay: 3700 } + ], + + // 2 BOSS + "nd-939-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-939-2000-105-0": [ + { type: "text", sub_type: "message", message: "360", message_RU: "360" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 2500] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 510, 0, 2500] } + ], + "s-939-2000-113-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "s-939-2000-108-0": [ + { type: "text", sub_type: "message", message: "Cleanse", message_RU: "Клинс", class_position: "heal" }, + { type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка", class_position: ["tank", "dps"] } + ], + "s-939-2000-115-0": [ + { type: "text", sub_type: "message", message: "Whirlwind", message_RU: "Вихрь" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 360, 0, 6500] } + ], + "s-939-2000-119-0": [{ type: "text", sub_type: "message", message: "Front", message_RU: "Спереди" }], + "s-939-2000-120-0": [{ type: "text", sub_type: "message", message: "Back", message_RU: "Сзади" }], + "s-939-2000-303-0": [ + { type: "text", sub_type: "message", message: "Whip", message_RU: "Кнут" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1650 } + ], + "s-939-2000-304-0": [ + { type: "text", sub_type: "message", message: "Pull", message_RU: "Стяжка" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1650 } + ], + + // 3 BOSS + "nd-939-3001": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-939-3001-30": [{ type: "text", sub_type: "message", message: "Reveal soon...", message_RU: "Скоро разоблачение..." }], + "s-939-3001-201-0": [ + { type: "text", sub_type: "message", message: "Stun (Pushback)", message_RU: "Рёв (откид)" }, + { type: "text", sub_type: "message", delay: 1000, message: "3" }, + { type: "text", sub_type: "message", delay: 2000, message: "2" }, + { type: "text", sub_type: "message", delay: 3000, message: "1" }, + { type: "text", sub_type: "message", delay: 4000, message: "Dodge!", message_RU: "Эвейд!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 630, 0, 5000] } + ], + "s-939-3001-107-0": [{ type: "text", sub_type: "message", message: "Many Hits", message_RU: "Несколько ударов" }], + "s-939-3001-112-0": [{ type: "text", sub_type: "message", message: "Target", message_RU: "Таргет" }], + "s-939-3001-115-0": [ + { type: "text", sub_type: "message", message: "Incoming Stun", message_RU: "Рёв" }, + { type: "text", sub_type: "message", delay: 1600, message: "Dodge!", message_RU: "Эвейд!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 630, 0, 4000] } + ], + "s-939-3001-118-0": [{ type: "text", sub_type: "message", message: "Scratching", message_RU: "Крутилка" }], + "s-939-3001-164-0": [{ type: "text", sub_type: "message", message: "Counter Attack (bleed)", message_RU: "Отпрыжка (кровоток)" }], + "s-939-3001-167-0": [{ type: "text", sub_type: "message", message: "Many Hits", message_RU: "Несколько ударов" }], + "s-939-3001-172-0": "s-939-3001-112-0", + "s-939-3001-301-0": "s-939-3001-112-0", + "s-939-3001-302-0": "s-939-3001-112-0", + "s-939-3001-170-0": [ + { type: "text", sub_type: "message", message: "Turn + Pushback", message_RU: "Разворот + Откид" }, + { type: "text", sub_type: "message", message: "Pushback", message_RU: "Откид", delay: 2700 } + ], + "s-939-3001-175-0": [ + { type: "text", sub_type: "message", message: "Incoming Stun", message_RU: "Рёв" }, + { type: "text", sub_type: "message", delay: 1600, message: "Dodge!", message_RU: "Эвейд!" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 630, 0, 4000] } + ], + "s-939-3001-177-0": [{ type: "text", sub_type: "message", message: "Backstab", message_RU: "Назад + Вперед" }], + "s-939-3001-178-0": [{ type: "text", sub_type: "message", message: "Scratching (bleed)", message_RU: "Крутилка (кровоток)" }], + "s-939-3001-203-0": [{ type: "text", sub_type: "message", message: "Phantom x3 (bleed)", message_RU: "Прыжки x3 (кровоток)" }], + "s-939-3001-207-0": [{ type: "text", sub_type: "message", message: "Phantom x5 (bleed)", message_RU: "Прыжки x5 (кровоток)" }], + "s-939-3001-213-0": [{ type: "text", sub_type: "message", message: "Reveal | Phantom (bleed)", message_RU: "Разоблачение | Прыжки (кровоток)" }], + "s-939-3001-212-0": [{ type: "text", sub_type: "message", message: "Flash", message_RU: "Байт" }] + }; }; \ No newline at end of file diff --git a/guides/9950.js b/guides/9950.js deleted file mode 100644 index e729eeea..00000000 --- a/guides/9950.js +++ /dev/null @@ -1,105 +0,0 @@ -// Harrowhold - -// 10 minutes -DESPAWN_DELAY = 600000; -ITEM_SPAWN_ID = 556; - -module.exports = { - - - // 4th Phase - - // 97% hp, spawn firewall indicators - "h-950-4000-97": [ - { - "type": "spawn", - "id": ITEM_SPAWN_ID, - "sub_delay": DESPAWN_DELAY, - "pos": { - x: -7374, - y: -83192, - z: 1 - } - }, - { - "type": "spawn", - "id": ITEM_SPAWN_ID, - "sub_delay": DESPAWN_DELAY, - "pos": { - x: -7894, - y: -83163, - z: 1 - } - }, - { - "type": "spawn", - "id": ITEM_SPAWN_ID, - "sub_delay": DESPAWN_DELAY, - "pos": { - x: -8618, - y: -83528, - z: 1 - } - }, - { - "type": "spawn", - "id": ITEM_SPAWN_ID, - "sub_delay": DESPAWN_DELAY, - "pos": { - x: -8897, - y: -83998, - z: 1 - } - }, - { - "type": "spawn", - "id": ITEM_SPAWN_ID, - "sub_delay": DESPAWN_DELAY, - "pos": { - x: -8938, - y: -84861, - z: 1 - } - }, - { - "type": "spawn", - "id": ITEM_SPAWN_ID, - "sub_delay": DESPAWN_DELAY, - "pos": { - x: -7391, - y: -85812, - z: 1 - } - }, - { - "type": "spawn", - "id": ITEM_SPAWN_ID, - "sub_delay": DESPAWN_DELAY, - "pos": { - x: -6686, - y: -85442, - z: 1 - } - }, - { - "type": "spawn", - "id": ITEM_SPAWN_ID, - "sub_delay": DESPAWN_DELAY, - "pos": { - x: -6348, - y: -84873, - z: 1 - } - }, - { - "type": "spawn", - "id": ITEM_SPAWN_ID, - "sub_delay": DESPAWN_DELAY, - "pos": { - x: -6356, - y: -84053, - z: 1 - } - } - ] -}; \ No newline at end of file diff --git a/guides/9970.js b/guides/9970.js index 435fc518..49cb137b 100644 --- a/guides/9970.js +++ b/guides/9970.js @@ -1,116 +1,187 @@ - +// Ruinous Manor (Hard) // - -let player, entity, library, effect; - - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay,times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - - -const FIRST_TIMER_DELAY = 40000; -const SECOND_TIMER_DELAY = 55000; - -const EVENT_FOR_DEBUFFS = [ - - { - "type": "text", - "sub_type": "message", - - "delay": FIRST_TIMER_DELAY, - "message": "Debuff swap will happen soon", - "message_TW": "Debuff交换准备" - }, - { - "type": "text", - "sub_type": "message", - - "delay": SECOND_TIMER_DELAY, - "message": "Debuff swap will happen soon", - "message_TW": "Debuff交换准备" - } -]; - -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - // Start(first debuff applied) - // "ae-0-0-97000042": EVENT_FOR_DEBUFFS, - // "ae-0-0-97000043": EVENT_FOR_DEBUFFS, - - // Debuff rotation happening - // "s-970-1000-1307": , - - // Meh, fill in with stop_timer id 1 below 70% hp, but cba - - // Second boss - "s-970-2000-2106-0": [{"type": "text","sub_type": "message","message_TW": "晕","message": " STUN"}], - - // Third boss - "s-970-3000-1102-0": [{"type": "text","sub_type": "message","message_TW": "左手","message": " Left Hand"}], - "s-970-3000-2102-0": [{"type": "text","sub_type": "message","message_TW": "左手","message": " Left Hand"}], - - //Right Hand - "s-970-3000-1101-0": [{"type": "text","sub_type": "message","message_TW": "右手","message": " Right Hand"}], - "s-970-3000-2101-0": [{"type": "text","sub_type": "message","message_TW": "右手","message": " Right Hand"}], - - //Tail Slam - "s-970-3000-1103-0": [{"type": "text","sub_type": "message","message_TW": "尾巴","message": " Tail Slam"}], - "s-970-3000-2103-0": [{"type": "text","sub_type": "message","message_TW": "尾巴","message": " Tail Slam"}], - - //FATE Avoid Circles - "s-970-3000-1301-0": [{"type": "text","sub_type": "message","message_TW": "命运圈","message": " FATE Avoid Circles"}], - - //Tail AOE (jump in front) - "s-970-3000-2110-0": [{"type": "text","sub_type": "message","message_TW": "尾部AOE(向前跳)","message": " Tail AOE (jump in front)"}], - "s-970-3000-1110-0": [{"type": "text","sub_type": "message","message_TW": "尾部AOE(向前跳)","message": " Tail AOE (jump in front)"}], - - //Get Ready ! (for in out mechanic) - "s-970-3000-1304-0": [{"type": "text","sub_type": "message","message_TW": "准备","message": " Get Ready ! (for in out mechanic)"}], - "s-970-3000-1303-0": [{"type": "text","sub_type": "message","message_TW": "准备","message": " Get Ready ! (for in out mechanic)"}], - - //GO OUT then come in - "s-970-3000-2113-0": [{"type": "text","sub_type": "message","message_TW": "出 -> 进","message": " OUT -> IN"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,300,0,5000)}], - "s-970-3000-1113-0": [{"type": "text","sub_type": "message","message_TW": "出 -> 进","message": " OUT -> IN"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,300,0,5000)}], - - //STAY IN then go out - "s-970-3000-2116-0": [{"type": "text","sub_type": "message","message_TW": "进 -> 出","message": " IN -> OUT"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,300,0,5000)}], - "s-970-3000-1116-0": [{"type": "text","sub_type": "message","message_TW": "进 -> 出","message": " IN -> OUT"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,300,0,5000)}], - - //GET RED SKULL !! - "s-970-3000-1318-0": [{"type": "text","sub_type": "message","message_TW": "吃红球","message": " GET RED SKULL !!"}], - "s-970-3000-1317-0": [{"type": "text","sub_type": "message","message_TW": "吃红球","message": " GET RED SKULL !!"}], - "s-970-3000-1319-0": [{"type": "text","sub_type": "message","message_TW": "吃红球","message": " GET RED SKULL !!"}], - - //DODGE the PATTERNS ! - "s-970-3000-1322-0": [{"type": "text","sub_type": "message","message_TW": "內外炸解王!","message": " DODGE the PATTERNS !"}], - - //GATHER FOR CLEANSE ! ! - "s-970-3000-1311-0": [{"type": "text","sub_type": "message","message_TW": "集中净化","message": " GATHER FOR CLEANSE !"}] +// made by Emilia-s2 / HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + let firstboss_debuff = null; + let thirdboss_skull_debuff = false; + let thirdboss_left_hand = false; + let thirdboss_h50 = false; + + return { + // 1 BOSS + "nd-970-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "die": [{ type: "func", func: () => { firstboss_debuff = null; } }], + "ae-0-0-97000042": [{ type: "func", func: () => firstboss_debuff = 1 }], // AoE (red) + "ae-0-0-97000043": [{ type: "func", func: () => firstboss_debuff = 2 }], // AoE (blue) + "am-970-1000-97000042": [{ type: "func", func: () => firstboss_debuff = 1 }], // Red + "am-970-1000-97000043": [{ type: "func", func: () => firstboss_debuff = 2 }], // Blue + "s-970-1000-1306-0": [ // red inside + { type: "text", sub_type: "message", message: "OUT", message_RU: "ОТ НЕГО", check_func: () => firstboss_debuff === 1 }, + { type: "text", sub_type: "message", message: "IN", message_RU: "К НЕМУ", check_func: () => firstboss_debuff === 2 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 400, 0, 4000] } + ], + "s-970-1000-1307-0": [ // blue inside + { type: "text", sub_type: "message", message: "IN", message_RU: "К НЕМУ", check_func: () => firstboss_debuff === 1 }, + { type: "text", sub_type: "message", message: "OUT", message_RU: "ОТ НЕГО", check_func: () => firstboss_debuff === 2 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 400, 0, 4000] } + ], + "s-970-1000-1206-0": [{ type: "text", sub_type: "message", message: "Jump Back", message_RU: "Прыжок назад" }], + "s-970-1000-2206-0": "s-970-1000-1206-0", + "s-970-1000-1106-0": [{ type: "text", sub_type: "message", message: "Stun Frontal (Dodge)", message_RU: "Передний стан" }], + "s-970-1000-2106-0": "s-970-1000-1106-0", + "s-970-1000-1107-0": [{ type: "text", sub_type: "message", message: "Front Push", message_RU: "Передний удар" }, + { type: "spawn", func: "semicircle", args: [320, 404, 553, 0, 0, 7, 405, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 0, 10, 406, 400, 0, 3500] }, + { type: "spawn", func: "vector", args: [553, 0, 10, -406, 400, 0, 3500] } + ], + "s-970-1000-2107-0": "s-970-1000-1107-0", + "s-970-1000-1117-0": [{ type: "text", sub_type: "message", message: "Crush Front", message_RU: "Удары" }], + "s-970-1000-2117-0": "s-970-1000-1117-0", + + // 2 BOSS + "nd-970-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-970-2000-1103-0": [{ type: "text", sub_type: "message", message: "Frontal Attack", message_RU: "Передняя атака" }], + "s-970-2000-2103-0": "s-970-2000-1103-0", + "s-970-2000-1105-0": [{ type: "text", sub_type: "message", message: "Random Target", message_RU: "Таргет" }], + "s-970-2000-2105-0": "s-970-2000-1105-0", + "s-970-2000-1106-0": [{ type: "text", sub_type: "message", message: "Stun (Dodge)", message_RU: "Стан (эвейд)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 40, 13, 180, 0, 2000] } + ], + "s-970-2000-2106-0": "s-970-2000-1106-0", + "s-970-2000-1111-0": [{ type: "text", sub_type: "message", message: "Many Hits (Target)", message_RU: "Множество ударов (таргет)" }], + "s-970-2000-2111-0": "s-970-2000-1111-0", + + // 3 BOSS + "nd-970-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "h-970-3000-99": [{ type: "func", func: () => thirdboss_h50 = false }], + "h-970-3000-50": [ + { type: "func", func: () => thirdboss_h50 = true }, + { type: "text", sub_type: "message", message: "50%", message_RU: "50%" } + ], + "h-970-3000-30": [{ type: "text", sub_type: "message", message: "30%", message_RU: "30%" }], + "am-970-3000-97000052": [{ type: "func", func: () => thirdboss_skull_debuff = true }], + "ar-970-3000-97000052": [{ type: "func", func: () => thirdboss_skull_debuff = false }], + "s-970-3000-1102-0": [ + { type: "text", sub_type: "message", message: "Left Hand", message_RU: "Левая рука" }, + { type: "func", func: () => thirdboss_left_hand = true }, + { type: "func", func: () => thirdboss_left_hand = false, delay: 2000 } + ], + "s-970-3000-2102-0": "s-970-3000-1102-0", + "s-970-3000-1101-0": [ + { type: "text", sub_type: "message", message: "Right Hand", message_RU: "Правая рука", check_func: () => !thirdboss_left_hand }, + { type: "text", sub_type: "message", message: "Right Hand | Tail Slam", message_RU: "Правая рука | Хвост", check_func: () => thirdboss_left_hand }, + { type: "func", func: () => thirdboss_left_hand = false } + ], + "s-970-3000-2101-0": "s-970-3000-1101-0", + "s-970-3000-1103-0": [ + { type: "text", sub_type: "message", message: "Tail Slam", message_RU: "Хвост" }, + { type: "spawn", func: "vector", args: [553, 283, 127, 180, 500, 0, 1400] }, + { type: "spawn", func: "vector", args: [553, 77, 127, 180, 500, 0, 1400] }, + { type: "spawn", func: "vector", args: [553, 165, 488, 270, 200, 0, 1400] }, + { type: "func", func: () => thirdboss_left_hand = false } + ], + "s-970-3000-2103-0": "s-970-3000-1103-0", + "s-970-3000-1301-0": [{ type: "text", sub_type: "message", message: "Circles", message_RU: "Круги" }], + "s-970-3000-2301-0": "s-970-3000-1301-0", + "s-970-3000-1106-0": [{ type: "text", sub_type: "message", message: "Front Swipe", message_RU: "Передний удар" }], + "s-970-3000-2106-0": "s-970-3000-1106-0", + "s-970-3000-1110-0": [ + { type: "text", sub_type: "message", message: "Tail AOE (jump in front)", message_RU: "Хвост АОЕ (прыгать вперед)" }, + { type: "spawn", func: "semicircle", args: [26, 340, 553, 0, 0, 7, 630, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 4, 40, 338, 600, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, -4, 40, -338, 600, 0, 3000] } + ], + "s-970-3000-2110-0": "s-970-3000-1110-0", + "s-970-3000-1304-0": [{ type: "text", sub_type: "message", message: "Get Ready!", message_RU: "Готовность!" }], + "s-970-3000-1303-0": "s-970-3000-1304-0", + "s-970-3000-1113-0": [ + { type: "text", sub_type: "message", message: "Out", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 300, 0, 2000] } + ], + "s-970-3000-1114-0": [ + { type: "text", sub_type: "message", message: "In", message_RU: "К нему", check_func: () => !thirdboss_h50 }, + { type: "text", sub_type: "message", message: "In | Tail Slam", message_RU: "К нему | Хвост", check_func: () => thirdboss_h50 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 300, 0, 2000] } + ], + "s-970-3000-1116-0": [ + { type: "text", sub_type: "message", message: "In", message_RU: "К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 300, 0, 2000] } + ], + "s-970-3000-1117-0": [ + { type: "text", sub_type: "message", message: "Out", message_RU: "От него" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 15, 300, 0, 2000] } + ], + "s-970-3000-2113-0": "s-970-3000-1113-0", + "s-970-3000-2114-0": "s-970-3000-1114-0", + "s-970-3000-2116-0": "s-970-3000-1116-0", + "s-970-3000-2117-0": "s-970-3000-1117-0", + "s-970-3000-1108-0": [ + { type: "text", sub_type: "message", message: "Tail", message_RU: "Удар хвостом" }, + { type: "spawn", func: "circle", args: [false, 553, -7, 280, 20, 155, 0, 2000] } + ], + "s-970-3000-2108-0": "s-970-3000-1108-0", + "s-970-3000-1317-0": [ + { type: "text", sub_type: "message", message: "Get Red Skull!", message_RU: "Взять красную голову!", check_func: () => !thirdboss_skull_debuff }, + { type: "text", sub_type: "message", message: "Get Yellow Skull!", message_RU: "Взять желтую голову!", check_func: () => thirdboss_skull_debuff } + ], + "s-970-3000-1318-0": "s-970-3000-1317-0", + "s-970-3000-1319-0": "s-970-3000-1318-0", + "s-970-3000-1322-0": [ + { type: "text", sub_type: "message", message: "Dodge!", message_RU: "Циркуль" }, + { type: "text", sub_type: "message", message_RU: "От него", message: "Out", delay: 1000 }, + { type: "text", sub_type: "message", message_RU: "К нему", message: "In", delay: 2000 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 14, 230, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 12, 430, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 8, 630, 0, 5000] } + ], + "s-970-3000-1311-0": [ + { type: "text", sub_type: "message", message: "Gather!", message_RU: "Откид (собраться)!" }, + { type: "text", sub_type: "message", message: "Cleanse!", message_RU: "Клинс!", delay: 3000 }, + { type: "text", sub_type: "alert", message: "Gather soon...", message_RU: "Скоро откид...", delay: 40000 } + ], + "s-970-3000-1120-0": [ + { type: "text", sub_type: "message", message: "Shooting Skulls (Triple)", message_RU: "Лазеры (тройные)" }, + { type: "spawn", func: "vector", args: [912, 90, 260, 0, 1300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 1300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 270, 250, 0, 1300, 0, 2000] } + + ], + "s-970-3000-2120-0": "s-970-3000-1120-0", + "s-970-3000-1121-0": [ + { type: "text", sub_type: "message", message: "Shooting Skulls (Doble)", message_RU: "Лазеры (двойные)" }, + { type: "spawn", func: "vector", args: [912, 90, 130, 0, 1300, 0, 2000] }, + { type: "spawn", func: "vector", args: [912, 270, 130, 0, 1300, 0, 2000] } + ], + "s-970-3000-2121-0": "s-970-3000-1121-0", + "s-970-3000-1122-0": [ + { type: "text", sub_type: "message", message: "Shooting Skulls (Multiple)", message_RU: "Лазеры (множественные)" }, + { type: "spawn", func: "vector", args: [912, 90, 260, 0, 1300, 0, 1500] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 1300, 0, 1500] }, + { type: "spawn", func: "vector", args: [912, 270, 250, 0, 1300, 0, 1500] }, + { type: "spawn", func: "vector", args: [912, 90, 130, 0, 1300, 1500, 1200] }, + { type: "spawn", func: "vector", args: [912, 270, 130, 0, 1300, 1500, 1200] } + ], + "s-970-3000-2122-0": "s-970-3000-1122-0", + "s-970-3000-1123-0": [ + { type: "text", sub_type: "message", message: "Shooting Skulls (Multiple)", message_RU: "Лазеры (множественные)" }, + { type: "spawn", func: "vector", args: [912, 90, 130, 0, 1300, 0, 1500] }, + { type: "spawn", func: "vector", args: [912, 270, 130, 0, 1300, 0, 1500] }, + { type: "spawn", func: "vector", args: [912, 90, 260, 0, 1300, 1500, 1200] }, + { type: "spawn", func: "vector", args: [912, 0, 0, 0, 1300, 1500, 1200] }, + { type: "spawn", func: "vector", args: [912, 270, 250, 0, 1300, 1500, 1200] } + ], + "s-970-3000-2123-0": "s-970-3000-1123-0" + }; }; \ No newline at end of file diff --git a/guides/9980.js b/guides/9980.js new file mode 100644 index 00000000..bc3193db --- /dev/null +++ b/guides/9980.js @@ -0,0 +1,91 @@ +// Velik's Hold (Hard) +// +// made by HSDN + +module.exports = (dispatch, handlers, guide, lang) => { + + return { + // 1 boss + "nd-980-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-980-1000-102-0": [{ type: "text", sub_type: "message", message: "Stun (Tank)", message_RU: "Стан (танк)" }], + "s-980-1000-103-0": [{ type: "text", sub_type: "message", message: "Frontal Hits", message_RU: "Передние удары" }], + "s-980-1000-104-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }], + "s-980-1000-109-0": [{ type: "text", sub_type: "message", message: "Push Left", message_RU: "Откид влево" }], + "s-980-1000-110-0": [{ type: "text", sub_type: "message", message: "Push Right", message_RU: "Откид вправо" }], + "s-980-1000-112-0": [{ type: "text", sub_type: "message", message: "Jump Forward", message_RU: "Прыжок вперед" }], + "s-980-1000-113-0": [{ type: "text", sub_type: "message", message: "Jump Back", message_RU: "Прыжок назад" }], + "s-980-1000-114-0": [{ type: "text", sub_type: "message", message: "Back Attack", message_RU: "Полоса назад" }], + "s-980-1000-115-0": [{ type: "text", sub_type: "message", message: "Wave Front", message_RU: "Волна вперед" }], + "s-980-1000-115-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-980-1000-202-0": [{ type: "text", sub_type: "message", message: "Jump (Stun)", message_RU: "Прыжок (стан)" }], + "s-980-1000-108-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 2000 }], + "s-980-1000-302-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }], + "s-980-1000-302-1": [{ type: "spawn", func: "vector", args: [912, 0, 0, 0, 1600, 0, 2000] }], + "s-980-1001-302-0": [{ type: "spawn", func: "vector", args: [912, 0, 0, 0, 1600, 0, 4000] }], + + // 2 boss + "nd-980-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-980-2000-105-0": [{ type: "text", sub_type: "message", message: "Heavy Front Attack", message_RU: "Мощный удар вперед" }], + "s-980-2000-106-0": [{ type: "text", sub_type: "message", message: "Flame Ray (Target)", message_RU: "Полоса (таргет)" }], + "s-980-2000-106-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 500 }], + "s-980-2000-107-0": [{ type: "text", sub_type: "message", message: "Whip", message_RU: "Кнут" }], + "s-980-2000-107-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 }], + "s-980-2000-108-0": [{ type: "text", sub_type: "message", message: "Front Attack (Stun)", message_RU: "Удар вперед (стан)" }], + "s-980-2000-301-0": [{ type: "text", sub_type: "message", message: "Jump (Target)", message_RU: "Прыжок (таргет)" }], + "s-980-2000-301-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 }], + "s-980-2000-302-0": [{ type: "text", sub_type: "message", message: "AOE (Stand behind a stone)", message_RU: "АОЕ (встать за камень)" }], + "s-980-2000-303-0": [{ type: "text", sub_type: "message", message: "Circles", message_RU: "Круги" }], + "s-980-2000-304-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-980-2000-304-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 }], + "s-980-2001-326-0": [{ type: "spawn", func: "marker", args: [false, 180, 250, 0, 6000, true, null] }], // stone marker + + // 3 boss + "nd-980-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-980-3000-104-0": [{ type: "text", sub_type: "message", message: "Front Attack", message_RU: "Удар вперед" }], + "s-980-3000-105-0": [{ type: "text", sub_type: "message", message: "Push Front", message_RU: "Откид вперед" }], + "s-980-3000-109-0": [{ type: "text", sub_type: "message", message: "Double Front Attack", message_RU: "Двойной удар вперед" }], + "s-980-3000-110-0": [{ type: "text", sub_type: "message", message: "Wave Front", message_RU: "Волна вперед" }], + "s-980-3000-111-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Кувырок" }], + "s-980-3000-112-0": [{ type: "text", sub_type: "message", message: "Target (Front | Back)", message_RU: "Таргет (Передняя | Задняя)" }], + "s-980-3000-112-2": [ + { type: "text", sub_type: "message", message: "Side", message_RU: "В сторону" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 75, 800, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 105, 800, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 255, 800, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 285, 800, 0, 2000] } + ], + "s-980-3000-113-0": [{ type: "text", sub_type: "message", message: "Pushback", message_RU: "Откид назад" }], + "s-980-3000-114-0": "s-980-3000-113-0", + "s-980-3000-115-0": [{ type: "text", sub_type: "message", message: "Charging", message_RU: "Зарядка" }], + "s-980-3000-301-0": [{ type: "text", sub_type: "message", message: "Get Out | Get In", message_RU: "От него | К нему" }], + "s-980-3000-302-0": [{ type: "text", sub_type: "message", message: "Get In", message_RU: "К нему" }], + "s-980-3000-304-0": [{ type: "text", sub_type: "message", message: "Shot (Target)", message_RU: "Выстрел (таргет)" }], + "s-980-3000-304-3": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + "s-980-3000-306-0": [ + { type: "text", sub_type: "message", message: "AOE", message_RU: "АОЕ" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 4500 } + ], + "s-980-3000-307-0": "s-980-3000-306-0", + "s-980-3000-308-0": [ + { type: "text", sub_type: "message", message: "AOE (Flying)", message_RU: "АОЕ (подлет)" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 4500 } + ], + "s-980-3000-309-0": [ + { type: "text", sub_type: "message", message: "Jump (Pushback)", message_RU: "Прыжок (откид)" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 2200 } + ], + "qb-980-3000-980206": [ + { type: "text", sub_type: "message", message: "Plague of Exhaustion", message_RU: "Чума/Регресс", class_position: "priest" }, + { type: "text", sub_type: "message", message: "Regression", message_RU: "Регресс", class_position: "mystic" } + ] + }; +}; \ No newline at end of file diff --git a/guides/9981.js b/guides/9981.js index 0c7c87dd..5003ec5e 100644 --- a/guides/9981.js +++ b/guides/9981.js @@ -1,317 +1,913 @@ -// vs -//made by michengs - -let notice_guide = true; -let player, entity, library, effect; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); - -handlers['text']({ -"sub_type": "notification", -"delay": 2000, -"message_TW": "获取更多信息 proxy频道输入:補助 help" -}); -} -notice_guide = false; - -} - -// Helper Functions - -function single_stage_callout(message, handlers, event, entity) { - //if (entity.stage == 0) { - handlers['text']({ - "sub_type": "message", - "message": message, - }); - // - - } - -// 拉坎 - - - - -// 进出 -// 召唤安全范围 -let rings_inout_seventhfloor = []; -for (let angle = -Math.PI; angle <= Math.PI; angle += 2 * Math.PI / 40) { - rings_inout_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 6000, - "distance": 250, - "offset": angle - }); -} - -// Lasers Flowers and Signs - -let lasers_markers_seventhfloor = []; -let inverted_lasers_markers_seventhfloor = []; -let dlw_object = []; -const sign_offsets_seventhfloor = [-0.32, -0.94, -1.57, -2.2, -2.83, 2.83, 2.2, 1.57, 0.94, 0.32]; - -for (let offset of sign_offsets_seventhfloor) { - const event = { - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 4000, - "distance": 450, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": offset +// Velik's Sanctuary (Hard) MT +// +// made by michengs / HSDN / vathsq / Calvary / ITunk / Vampic + +module.exports = (dispatch, handlers, guide, lang) => { + guide.type = SP; + + let boss_enraged = false; + let back_print = false; + let back_time = 0; + let end_back_time = 0; + let is_one_back = false; + let counter = 0; + let counter1_date = null; + let prev_back_attack = 0; + let prev_date = 0; + let attack_360 = false; + let thirdboss_eye = false; + let are_you_afraid_of_me_continue = false; + + function boss_backattack_event() { + end_back_time = new Date() - back_time; + + if (!back_print) { + back_print = true; + is_one_back = end_back_time > 0 && end_back_time < 1500; + + if (is_one_back) { + handlers.text({ + sub_type: "message", + message: "360" + }); + } + } + + dispatch.setTimeout(() => back_print = false, 3500); + } + + function boss_backattack_event_new(curr, ent) { + const start = new Date(); + const tmp = prev_date; + prev_date = start; + + const time_diff = start - tmp; + const prev = prev_back_attack; + + prev_back_attack = curr; + + let back_combo_time_diff = 5000; + if (counter1_date != null) { + back_combo_time_diff = start - counter1_date; + } + + if (prev === 1106 && curr === 1103 && time_diff < 1000) { + handlers.text({ + sub_type: "message", + message: "360" + }); + } else if (prev === 1103 && curr === 1105 && time_diff < 1000) { + counter = 1; + counter1_date = new Date(); + } else if (prev === 1105 && curr === 1106 && counter === 1 && time_diff < 1500 && back_combo_time_diff < 1500) { + counter = 2; + } else if (prev === 1106 && curr === 1108 && counter === 2 && time_diff < 1000 && back_combo_time_diff < 2000) { + attack_360 = true; + handlers.text({ + sub_type: "message", + message: "2x360" + }); + } else { + counter = 0; + counter1_date = null; + } + } + + let first_fifty = false; + let prev_attack = 0; + let triple_swipe_remaining = 0; + + function first_swipe_event(skillid, ent) { + let double = ""; + let double_ru = ""; + if ((first_fifty || attack_360) && triple_swipe_remaining === 0) { + double = "(Double)"; + double_ru = "(Двойной)"; + if (attack_360) { + attack_360 = false; + } + } + + if (triple_swipe_remaining > 0) { + triple_swipe_remaining--; + } + + // 1401 non-enraged + const rightSafe = [ + { type: "text", sub_type: "message", message: `Right ${double}`, message_RU: `Правый ${double_ru}` }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 300, 100, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 230, 100, 0, 2000, true, null] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] } + ]; + // 1402 non-enraged + const leftSafe = [ + { type: "text", sub_type: "message", message: `Left ${double}`, message_RU: `Левый ${double_ru} ` }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 60, 100, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 130, 100, 0, 2000, true, null] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] } + ]; + + if (skillid === 1401) { + if (boss_enraged) { + handlers.event(leftSafe); + } else { + handlers.event(rightSafe); + } + } else if (!boss_enraged) { + handlers.event(leftSafe); + } else { + handlers.event(rightSafe); + } + } + + let triples_timer = null; + + function first_triples_event() { + if (triples_timer != null) { + dispatch.clearTimeout(triples_timer); + } + + triples_timer = dispatch.setTimeout(() => { + handlers.text({ + sub_type: "notification", + message: "Triples Soon!", + message_RU: "Тройки Скоро!" + }); + }, 55000); + } + + let last_donut_msg = null; + let last_donut_msg_ru = null; + + function first_fly_mech(skillid) { + const safe_enraged_markers = [ + { type: "spawn", func: "vector", args: [548, 0, 0, 0, 750, 0, 1500] }, + { type: "spawn", func: "vector", args: [548, 0, 0, 60, 750, 0, 1500] }, + { type: "spawn", func: "vector", args: [548, 0, 0, 120, 750, 0, 1500] }, + { type: "spawn", func: "vector", args: [548, 0, 0, 180, 750, 0, 1500] }, + { type: "spawn", func: "vector", args: [548, 0, 0, 240, 750, 0, 1500] }, + { type: "spawn", func: "vector", args: [548, 0, 0, 300, 750, 0, 1500] } + ]; + const safe_unenraged_markers = [ + { type: "spawn", func: "vector", args: [548, 0, 0, 30, 750, 0, 1500] }, + { type: "spawn", func: "vector", args: [548, 0, 0, 90, 750, 0, 1500] }, + { type: "spawn", func: "vector", args: [548, 0, 0, 150, 750, 0, 1500] }, + { type: "spawn", func: "vector", args: [548, 0, 0, 210, 750, 0, 1500] }, + { type: "spawn", func: "vector", args: [548, 0, 0, 270, 750, 0, 1500] }, + { type: "spawn", func: "vector", args: [548, 0, 0, 330, 750, 0, 1500] } + ]; + + if (!first_fifty) { + if (prev_attack === 1113) { + // Donuts + handlers.event([ + { type: "text", sub_type: "message", message: "Donuts", message_RU: "Бублики" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 6000] } + ]); + } else if (boss_enraged) { + handlers.event(safe_enraged_markers); + handlers.text({ sub_type: "notification", message: "Pizza + Enraged", message_RU: "Пицца + В раге" }); + } else { + handlers.event(safe_unenraged_markers); + handlers.text({ sub_type: "notification", message: "Pizza + Un enraged", message_RU: "Пицца + Без раги" }); + } + } else { + handlers.event([{ type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 300, 0, 6000] }]); + + if (boss_enraged) { + handlers.event(safe_enraged_markers); + } else { + handlers.event(safe_unenraged_markers); + } + + if ((skillid === 1308 || skillid === 1309) && last_donut_msg == null) { + last_donut_msg = skillid === 1308 ? "last: IN" : "last: OUT"; + last_donut_msg_ru = skillid === 1308 ? "последний: К нему" : "последний: От него"; + handlers.event([{ type: "text", sub_type: "notification", message: last_donut_msg, message_RU: last_donut_msg_ru, delay: 1000 }]); + dispatch.setTimeout(() => last_donut_msg = null, 7500); + } + } + prev_attack = 0; + } + + function reset_backevent() { + back_print = false; + back_time = 0; + end_back_time = 0; + is_one_back = false; + counter = 0; + counter1_date = null; + prev_back_attack = 0; + prev_date = 0; + + boss_enraged = false; + triple_swipe_remaining = 0; + attack_360 = false; + first_fifty = false; + prev_attack = 0; + } + + let second_swipes_remaining = 0; + let second_fifty = false; + let second_new_swipe = false; + let second_swipe_counter = 0; + + function secondboss_floor_event(one, two) { + if (one && two) { + handlers.event([ + { type: "text", sub_type: "message", message: "Pizza", message_RU: "Пицца" }, + { type: "spawn", func: "marker", args: [false, one * 45 + 68, 500, 0, 5000, true, null] }, + { type: "spawn", func: "vector", args: [553, 0, 0, one * 45 + 45, 750, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, one * 45 + 90, 750, 0, 5000] }, + { type: "spawn", func: "marker", args: [false, two * 45 + 68, 300, 7000, 5000, true, null] }, + { type: "spawn", func: "vector", args: [553, 0, 0, two * 45 + 45, 750, 7000, 5000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, two * 45 + 90, 750, 7000, 5000] } + ]); + } + } + + function secondboss_swipe_event(skillid) { + if (!second_new_swipe) return; + + let pattern = null; + + if (!second_fifty) { + const pattern1 = [ + { type: "text", sub_type: "notification", message: "Right (Double)", message_RU: "Правый (Двойной)" }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 6000] }, + { type: "spawn", func: "marker", args: [false, 60, 100, 4600, 2200, true, null] }, + { type: "spawn", func: "marker", args: [false, 130, 100, 4600, 2200, true, null] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 4600, 2200] } + ]; + const pattern2 = [ + { type: "text", sub_type: "notification", message: "Left (Double)", message_RU: "Левый (Двойной)" }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 6000] }, + { type: "spawn", func: "marker", args: [false, 300, 100, 4600, 2200, true, null] }, + { type: "spawn", func: "marker", args: [false, 230, 100, 4600, 2200, true, null] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 4600, 2200] } + ]; + + const pattern3 = [{ type: "text", sub_type: "message", message: "Back - Front", message_RU: "Назад - Передний" }]; + const pattern4 = [{ type: "text", sub_type: "message", message: "Front - Back", message_RU: "Передний - Назад" }]; + + pattern = skillid === 1101 ? pattern3 : pattern4; + if (second_swipe_counter % 2 === 0) { + pattern = skillid === 1101 ? pattern1 : pattern2; + } + } else { + const pattern1 = [ + { type: "text", sub_type: "notification", message: "Right (Double) - Front - Back", message_RU: "Правый (Двойной) - Передний - Назад" }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 6000] }, + { type: "spawn", func: "marker", args: [false, 60, 100, 4600, 2200, true, null] }, + { type: "spawn", func: "marker", args: [false, 130, 100, 4600, 2200, true, null] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 4600, 2200] } + ]; + const pattern2 = [ + { type: "text", sub_type: "notification", message: "Left (Double) - Back - Front", message_RU: "Левый (Двойной) - Назад - Передний" }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 6000] }, + { type: "spawn", func: "marker", args: [false, 300, 100, 4600, 2200, true, null] }, + { type: "spawn", func: "marker", args: [false, 230, 100, 4600, 2200, true, null] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 4600, 2200] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 4600, 2200] } + ]; + + pattern = skillid === 1101 ? pattern1 : pattern2; + + } + + handlers.event(pattern); + second_swipe_counter++; + second_new_swipe = false; + } + + let thirdboss_fifty = false; + let thirdboss_soul_world = false; + + function thirdboss_message_event(skillid) { + switch (skillid) { + // Lakan has noticed you. + case 1043: + if (!thirdboss_fifty) { + handlers.text({ + sub_type: "notification", + message: "Debuffs > Circles > Bombs", + message_RU: "ДКБ" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Debuffs > Bombs > Circles", + message_RU: "ДБК" + }); + } + break; + // Lakan is trying to take you on one at a time. + case 1044: + if (!thirdboss_fifty) { + handlers.text({ + sub_type: "notification", + message: "Circles > Bombs > Debuffs", + message_RU: "КБД" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Circles > Debuffs > Bombs", + message_RU: "КДБ" + }); + } + break; + // Lakan intends to kill all of you at once. + case 1045: + if (!thirdboss_fifty) { + handlers.text({ + sub_type: "notification", + message: "Bombs > Debuffs > Circles", + message_RU: "БДК" + }); + } else { + handlers.text({ + sub_type: "notification", + message: "Bombs > Circles > Debuffs", + message_RU: "БКД" + }); + } + break; + } + } + + let run_mech_active = false; + let run_mech_push_back = false; + + function run_if_you_can(skillid) { + if (!run_mech_active) return; + + if (skillid === 1117) { + handlers.event([{ type: "text", sub_type: "message", message: "Stun | Push Back", message_RU: "Стан | Откид назад" }]); + } + + if (skillid === 1105) { + run_mech_push_back = true; + } else if (run_mech_push_back) { + const msg = skillid === 1102 ? "Soon: IN" : "Soon: OUT"; + const msg_ru = skillid === 1102 ? "Скоро: К нему" : "Скоро: От него"; + + handlers.event([{ type: "text", sub_type: "notification", message: msg, message_RU: msg_ru }]); + + run_mech_active = false; + run_mech_push_back = false; + } + } + + let afriad_mech_active = false; + + function are_you_afraid_of_me(skillid) { + if (!afriad_mech_active) return; + + let msg = ""; + let msg_ru = ""; + const id = thirdboss_soul_world ? 1132 : 1131; + + msg = skillid === id ? "Soon: OUT > IN" : "Soon: IN > OUT"; + msg_ru = skillid === id ? "Скоро: От него > К нему" : "Скоро: К нему > От него"; + + handlers.event([ + { type: "text", sub_type: "notification", message: msg, message_RU: msg_ru } + ]); + + afriad_mech_active = false; + are_you_afraid_of_me_continue = true; + } + + let clever_mech_active = false; + + function are_you_clever(skillid) { + if (!clever_mech_active) return; + + if (skillid === 1102) { + handlers.event([{ type: "text", sub_type: "message", message: "Rotate", message_RU: "Разворот", delay: 900 }]); + } + + if (skillid === 1131 || skillid === 1132) { + let msg = ""; + let msg_ru = ""; + const id = thirdboss_soul_world ? 1132 : 1131; + + msg = skillid === id ? "Soon: OUT | Donuts (IN > OUT)" : "Soon: IN | Donuts (OUT > IN)"; + msg_ru = skillid === id ? "Скоро: От него | Бублики (К нему > От него)" : "Скоро: К нему | Бублики (От него > К нему)"; + + handlers.event([{ type: "text", sub_type: "notification", message: msg, message_RU: msg_ru }]); + + clever_mech_active = false; + } + } + + function reset_third_boss() { + clever_mech_active = false; + afriad_mech_active = false; + run_mech_push_back = false; + run_mech_active = false; + thirdboss_soul_world = false; + thirdboss_fifty = false; + thirdboss_eye = false; + are_you_afraid_of_me_continue = false; } - lasers_markers_seventhfloor.push(event); - inverted_lasers_markers_seventhfloor.push(event); -} - -for (let distance = 175; distance <= 425; distance += 25) { - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 0 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 1.25 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 2.5 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": -2.5 - }); - lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": -1.25 - }); - - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 0.62 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 1.87 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": 3.12 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": -1.88 - }); - inverted_lasers_markers_seventhfloor.push({ - "type": "spawn", - "id": 548, - "sub_delay": 4000, - "distance": distance, - "offset": -0.63 - }); - - -} - - - -const SPAWN_CIRCLES = true; -const stepone = 2 * Math.PI / 40;//40 -const steptwo = 2 * Math.PI / 60;//72 flowers in total -//内圈 -let SPAWNING_FIRST_CIRCLE_FLOWERS = []; -let SPAWNING_SECOND_CIRCLE_FLOWERS = []; -let SPAWNING_THIRD_CIRCLE_FLOWERS = []; -//外圈 - -for(let angle = -Math.PI; angle <= Math.PI; angle += steptwo) { - if(!SPAWN_CIRCLES) continue; - SPAWNING_FIRST_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 548, - "sub_delay": 6000, - "distance": 300, - "offset": angle - }); - - SPAWNING_SECOND_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 548, - "sub_delay": 6000, - "distance": 250, - "offset": angle - }); - SPAWNING_THIRD_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 548, - "sub_delay": 6000, - "distance": 200, - "offset": angle - }); - - - - - -} - -for(let angle = -Math.PI; angle <= Math.PI; angle += stepone) { - if(!SPAWN_CIRCLES) continue; - - SPAWNING_THIRD_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 548, - "sub_delay": 6000, - "distance": 350, - "offset": angle - }); - -} - -for (let distance = 350; distance <= 600; distance += 25) { - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": 0 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": 0, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": 0.7853 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": 0.7853, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": 1.5707 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": 1.5707, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": 2.3561 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": 2.3561, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": 3.1415 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": 3.1415, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": -0.7853 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": -0.7853, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": -1.5707 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350, "offset": -1.5707, "ownerName": "杜利温", "message": "秒杀"}); - dlw_object.push( { "type": "spawn","id": 548,"sub_delay": 18000,"distance": distance,"offset": -2.3561 }); - dlw_object.push({"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 18000, "distance": 350 , "offset": -2.3561, "ownerName": "杜利温", "message": "秒杀"}); -} - -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - // "h-981-1000-100": [{"type": "func","func": guid_voice}], - "s-981-1000-2401": [{"type": "text","sub_type": "message","message": "right","message_TW": "右劈"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -2.3, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -1, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -2.3},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -1}], - "s-981-1000-2402": [{"type": "text","sub_type": "message","message": "left","message_TW": "左劈"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 2.3, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 1, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 2.3},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 1}], - "s-981-1000-2304-0": [{"type": "text","sub_type": "message","message_TW": "飞天"}].concat(SPAWNING_FIRST_CIRCLE_FLOWERS), - "s-981-1000-2303-0": [{"type": "text","sub_type": "message","message_TW": "旋转攻击"}], - "s-981-1000-2113-0": [{"type": "text","sub_type": "message","message": "Front + AoEs","message_TW": "前劈"}], - "s-981-1000-2308-0": [{"type": "text","sub_type": "message","message": "out","message_TW": "出"}], - "s-981-1000-2309-0": [{"type": "text","sub_type": "message","message": "in","message_TW": "进"}], - "s-981-1000-1401": [{"type": "text","sub_type": "message","message": "right","message_TW": "右劈"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -2.3, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -1, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -2.3},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -1}], - "s-981-1000-1402": [{"type": "text","sub_type": "message","message": "left","message_TW": "左劈"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 2.3, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 1, "ownerName": "SAFE SPOT", "message": "SAFE"},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 2.3},{"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 1}], - "s-981-1000-1304-0": [{"type": "text","sub_type": "message","message_TW": "飞天"}].concat(SPAWNING_FIRST_CIRCLE_FLOWERS), - "s-981-1000-1303-0": [{"type": "text","sub_type": "message","message_TW": "旋转攻击"}], - "s-981-1000-1113-0": [{"type": "text","sub_type": "message","message": "Front + AoEs","message_TW": "前劈"}], - "s-981-1000-1308-0": [{"type": "text","sub_type": "message","message": "out","message_TW": "出"}], - "s-981-1000-1309-0": [{"type": "text","sub_type": "message","message": "in","message_TW": "进"}], - "qb-981-1000-98103": [{"type": "text","sub_type": "message","message_TW": "点名炸石柱"}], - "qb-981-1000-98102": [{"type": "text","sub_type": "message","message_TW": "快跑远秒杀"}], - "qb-981-1000-98106": [{"type": "text","sub_type": "message","message_TW": "集体炸石柱"}], - - // 2王杜立温 - - // Cage Mechanic - // - "s-981-2000-1503-0": [{"type": "text","sub_type": "message","message_TW": "坦快跑远"}], - "s-981-2000-1106-0": [{"type": "text","sub_type": "message","message": "back","message_TW": "后砸"}], - "s-981-2000-1108-0": [{"type": "text","sub_type": "message","message": "front","message_TW": "前砸"}], - "s-981-2000-1111-0": [{"type": "text","sub_type": "message","message": "360","message_TW": "360度攻击 "}], - "s-981-2000-1302-0": [{"type": "text","sub_type": "message","message_TW": "点名"}], - "s-981-2000-1121-0": [{"type": "text","sub_type": "message","message_TW": "召唤小怪快打"}], - "s-981-2000-1501-0": [{"type": "text","sub_type": "message","message_TW": "封场鉴定开始"},{"type": "text","sub_type": "message","delay": 1000,"message": "3"} ,{"type": "text","sub_type": "message","delay": 2000,"message": "2"} ,{"type": "text","sub_type": "message","delay": 3000,"message": "1"}], - "s-981-2000-1112-0": [{"type": "func","func": single_stage_callout.bind(null, "STAB + KNOCKUP")}], - "s-981-2000-1130-0": [{"type": "text","sub_type": "message","message": "left","message_TW": "左劈"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 2.3, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 1, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 2.3}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 1}], - "s-981-2000-1131-0": [{"type": "text","sub_type": "message","message": "right","message_TW": "右劈"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -2.3, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -1, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -2.3}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -1}], - "s-981-2000-1134-0": [{"type": "func","func": single_stage_callout.bind(null, "吃注视")}], - "s-981-2000-1502-0": [{"type": "func","func": single_stage_callout.bind(null, "鉴定准备")}], -//愤怒 - "s-981-2000-2503-0": [{"type": "text","sub_type": "message","message_TW": "坦快跑远"}], - "s-981-2000-2106-0": [{"type": "text","sub_type": "message","message": "back","message_TW": "后砸"}], - "s-981-2000-2108-0": [{"type": "text","sub_type": "message","message": "front","message_TW": "前砸"}], - "s-981-2000-2111-0": [{"type": "text","sub_type": "message","message": "360","message_TW": "360度攻击 "}], - "s-981-2000-2121-0": [{"type": "text","sub_type": "message","message_TW": "召唤小怪快打"}], - "s-981-2000-2501-0": [{"type": "text","sub_type": "message","message_TW": "封场鉴定开始"},{"type": "text","sub_type": "message","delay": 1000,"message": "3"} ,{"type": "text","sub_type": "message","delay": 2000,"message": "2"} ,{"type": "text","sub_type": "message","delay": 3000,"message": "1"}], - "s-981-2000-2112-0": [{"type": "func","func": single_stage_callout.bind(null, "STAB + KNOCKUP")}], - "s-981-2000-2130-0": [{"type": "text","sub_type": "message","message": "left","message_TW": "左劈"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 2.3, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": 1, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 2.3}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": 1}], - "s-981-2000-2131-0": [{"type": "text","sub_type": "message","message": "right","message_TW": "右劈"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -2.3, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "build_object", "id": 1, "sub_delay": 2000, "distance": 100, "offset": -1, "ownerName": "SAFE SPOT", "message": "SAFE"}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -2.3}, {"type":"spawn", "sub_type": "item", "id": 98260, "sub_delay": 2000, "distance": 100, "offset": -1}], - "s-981-2000-2134-0": [{"type": "func","func": single_stage_callout.bind(null, "吃注视")}], - "s-981-2000-2502-0": [{"type": "func","func": single_stage_callout.bind(null, "鉴定准备")}], - "s-981-2000-4000-0": [{"type": "text","sub_type": "alert","message_TW": "鉴定!!!!"}].concat(dlw_object), - "dm-0-0-9981022": [{"type": "text","sub_type": "alert","message_TW": "鉴定"}], - "dm-0-0-9981023": [{"type": "text","sub_type": "message","message_TW": "全场鉴定"}], - -//9981022 - - "dm-0-0-9981046": [{"type": "text","sub_type": "alert","message": "First: (注视) 最近"},{"type": "text","sub_type": "message","message": "(Debuffs) Closest","message_TW": "First: (注视) 最近"}], - "dm-0-0-9981047": [{"type": "text","sub_type": "alert","message": "First: (闪电) 闪开"},{"type": "text","sub_type": "message","message": "(Circles) Spread","message_TW": "First: (闪电) 闪开"}], - "dm-0-0-9981048": [{"type": "text","sub_type": "alert","message": "First: (炸弹) 集中 + 解状态"},{"type": "text","sub_type": "message","message": "(Bombs) Gather + cleanse","message_TW": "First: (炸弹) 集中 + 解状态"}], - - - -//----拉砍 - - "s-981-3000-1404-0": [{"type": "text","sub_type": "message","message": "(Debuffs) Closest","message_TW": "注视 (最近)"}].concat(lasers_markers_seventhfloor), - "s-981-3000-1405-0": [{"type": "text","sub_type": "message","message": "(Debuffs) Farthest","message_TW": "注视 (最远)"}].concat(inverted_lasers_markers_seventhfloor),// - "s-981-3000-1301-0": [{"type": "text","sub_type": "message","message": "(Bombs) Gather + cleanse","message_TW": "炸弹集中 + 解状态"},].concat(lasers_markers_seventhfloor), - "s-981-3000-1302-0": [{"type": "text","sub_type": "message","message": "(Bombs) Gather + no cleanse","message_TW": "炸弹集中 + 不 解状态"},].concat(inverted_lasers_markers_seventhfloor),// - "s-981-3000-3103-0": [{"type": "text","sub_type": "message","message": "(Circles) Spread","message_TW": "闪电分散"},].concat(lasers_markers_seventhfloor), - "s-981-3000-3105-0": [{"type": "text","sub_type": "message","message": "(Circles) Gather","message_TW": "闪电集中"},].concat(inverted_lasers_markers_seventhfloor),// - "s-981-3000-1116-0": [{"type": "text","sub_type": "message","message": "Circle","message_TW": "內外炸"}], - "s-981-3000-2116-0": [{"type": "text","sub_type": "message","message": "Circle","message_TW": "內外炸"}], // - "s-981-3000-1701-0": [{"type": "text","sub_type": "message","message": "back + front","message_TW": "后踢 + 前戳"}], - "s-981-3000-1113-0": [{"type": "text","sub_type": "message","message_TW": "点名"}], - "s-981-3000-1151-0": [{"type": "text","sub_type": "message","message": "attention stun","message_TW": "注意击晕"}], - "s-981-3000-2151-0": [{"type": "text","sub_type": "message","message": "attention stun","message_TW": "注意击晕"}], - "s-981-3000-2113-0": [{"type": "text","sub_type": "message","message_TW": "点名"}], - "s-981-3000-1152-0": [{"type": "text","sub_type": "message","message": "Stun + Back","message_TW": "击晕 + 后踢 "}], - "s-981-3000-2152-0": [{"type": "text","sub_type": "message","message": "Stun + Back","message_TW": "击晕 + 后踢 "}], // - "s-981-3000-2138-0": rings_inout_seventhfloor,// 召唤安全范围250 // - "s-981-3000-1138-0": rings_inout_seventhfloor,// 召唤安全范围250 - "s-981-3000-1144-0": [{"type": "text","sub_type": "message","message": "out","message_TW": "出 "}], - "s-981-3000-1145-0": [{"type": "text","sub_type": "message","message": "in","message_TW": "进"}], - "s-981-3000-1240-0": [{"type": "text","sub_type": "message","message": "Donuts","message_TW": "甜甜圈"}].concat(SPAWNING_THIRD_CIRCLE_FLOWERS), - "s-981-3000-1401-0": [{"type": "text","sub_type": "message","message": "Plague/Regress","message_TW": "驱散"}], - "s-981-3000-1402-0": [{"type": "text","sub_type": "message","message": "Sleep","message_TW": "赶紧睡拉坎"}] + return { + // 1 BOSS + "ns-981-1000": [{ type: "func", func: () => boss_enraged = false }], + "nd-981-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "func", func: reset_backevent } + ], + "rb-981-1000": [{ type: "func", func: () => boss_enraged = true }], + "re-981-1000": [{ type: "func", func: () => boss_enraged = false }], + "h-981-1000-49": [ + { type: "text", sub_type: "message", message: "49%" }, + { type: "func", func: () => first_fifty = true } + ], + "s-981-1000-1102-0": [{ type: "func", func: () => back_time = new Date() }], + "s-981-1000-1101-0": [{ type: "func", func: boss_backattack_event }], + "s-981-1000-1106-0": [{ type: "func", func: boss_backattack_event_new, args: [1106] }], + "s-981-1000-1105-0": [{ type: "func", func: boss_backattack_event_new, args: [1105] }], + "s-981-1000-1103-0": [{ type: "func", func: boss_backattack_event_new, args: [1103] }], + "s-981-1000-1108-0": [{ type: "func", func: boss_backattack_event_new, args: [1108] }], + "s-981-1000-1401-0": [{ type: "func", func: first_swipe_event, args: [1401] }], + "s-981-1000-1402-0": [{ type: "func", func: first_swipe_event, args: [1402] }], + "s-981-1000-1303-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Крутилка" }], + "s-981-1000-1304-0": [ + { type: "func", func: first_fly_mech, args: [1304] }, + { type: "text", sub_type: "message", message: "Donuts | Pizza", message_RU: "Бублики | Пицца", check_func: () => first_fifty } + ], + "s-981-1000-1308-0": [ + { type: "func", func: first_fly_mech, args: [1308], check_func: () => first_fifty }, + { type: "text", sub_type: "message", message: "Out", message_RU: "Наружу" }, + { type: "spawn", func: "marker", args: [false, 75, 370, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 370, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 370, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 370, 0, 1000, true, null] } + ], //out + "s-981-1000-1309-0": [ + { type: "func", func: first_fly_mech, args: [1309], check_func: () => first_fifty }, + { type: "text", sub_type: "message", message: "In", message_RU: "Внутрь" }, + { type: "spawn", func: "marker", args: [false, 75, 100, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 100, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 100, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 100, 0, 1000, true, null] }], + "s-981-1000-1310-0": [ + { type: "spawn", func: "marker", args: [false, 30, 200, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 90, 200, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 150, 200, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 210, 200, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 270, 200, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 330, 200, 0, 1000, true, null] }], + "s-981-1000-1311-0": [ + { type: "spawn", func: "marker", args: [false, 0, 200, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 60, 200, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 120, 200, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 180, 200, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 240, 200, 0, 1000, true, null] }, + { type: "spawn", func: "marker", args: [false, 300, 200, 0, 1000, true, null] }], + "s-981-1000-1313-0": [ + { type: "text", sub_type: "message", message: "3" }, + { type: "text", sub_type: "message", delay: 400, message: "2" }, + { type: "text", sub_type: "message", delay: 800, message: "1" }, + { type: "text", sub_type: "message", delay: 1200, message: "Dodge", message_RU: "Эвейд" }], + "s-981-1000-1111-0": [{ type: "func", func: () => prev_attack = 1111 }], + "s-981-1000-1113-0": [ + { type: "text", sub_type: "message", message: "Front | AoEs", message_RU: "Передняя | AOE" }, + { type: "func", func: () => prev_attack = 1113 } + ], + "s-981-1000-1114-0": [ + { type: "text", sub_type: "message", message: "Bait on res", message_RU: "Байт на рес" }, + { type: "spawn", func: "vector", args: [553, 90, 150, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 90, 75, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 270, 75, 0, 1300, 0, 2500] }, + { type: "spawn", func: "vector", args: [553, 270, 150, 0, 1300, 0, 2500] } + ], + "s-981-1000-1115-0": [{ type: "text", sub_type: "message", delay: 2500, message_RU: "Эвейд", message: "Dodge" }], // dodge circle + "s-981-1000-1117-0": [{ type: "text", sub_type: "message", delay: 4500, message_RU: "Эвейд", message: "Dodge" }], // dodge circles + "s-981-1000-2111-0": "s-981-1000-1111-0", + "s-981-1000-2112-0": "s-981-1000-1112-0", + "s-981-1000-2113-0": "s-981-1000-1113-0", + "s-981-1000-2114-0": "s-981-1000-1114-0", + "s-981-1000-2115-0": "s-981-1000-1115-0", + "s-981-1000-2117-0": "s-981-1000-1117-0", + "s-981-1000-2101-0": "s-981-1000-1101-0", + "s-981-1000-2102-0": "s-981-1000-1102-0", + "s-981-1000-2103-0": "s-981-1000-1103-0", + "s-981-1000-2105-0": "s-981-1000-1105-0", + "s-981-1000-2106-0": "s-981-1000-1106-0", + "s-981-1000-2108-0": "s-981-1000-1108-0", + "qb-981-1000-98103": [{ type: "text", sub_type: "message", message: "Lead circle to the stone", message_RU: "Отвести круг к пилону" }], + "qb-981-1000-98106": [{ type: "text", sub_type: "message", message: "Lead circles to the stone", message_RU: "Отвести круги к пилону" }], + "dm-0-0-9981005": [ + { type: "text", sub_type: "message", message: "Triples!", message_RU: "Тройки!" }, + { type: "func", func: () => triple_swipe_remaining = 3 }, + { type: "func", func: first_triples_event } + ], + // 2 BOSS + "nd-981-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "func", func: () => second_swipes_remaining = 0 }, + { type: "func", func: () => second_fifty = false }, + { type: "func", func: () => second_swipe_counter = 0 }, + { type: "func", func: () => second_new_swipe = false } + ], + "h-981-2000-49": [ + { type: "text", sub_type: "message", message: "49%" }, + { type: "func", func: () => second_fifty = true } + ], + "dm-0-0-9068016": [{ type: "func", func: () => second_new_swipe = true }], + // I will rip you apart + "dm-0-0-9981021": [ + { type: "func", func: () => second_swipes_remaining = 4, check_func: () => second_fifty } + ], + // Cage Mechanic + "s-981-2000-1501-0": [ + { type: "text", sub_type: "message", delay: 1000, message: "3" }, + { type: "text", sub_type: "message", delay: 2000, message: "2" }, + { type: "text", sub_type: "message", delay: 3000, message: "1" } + ], + "s-981-2000-1138-0": [ // T1 + { type: "event", delay: 4500, args: [ + { type: "text", sub_type: "notification", message: "Side > Out > In > Side", message_RU: "В сторону > Наружу > Внутрь > В сторону" }, + // x6 normal + { type: "spawn", func: "marker", args: [false, 15, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 270, 0, 1500, true, null] }, + // in circle + { type: "spawn", func: "marker", args: [false, 75, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 1500, 1500, true, null] }, + // out circle + x4 + { type: "spawn", func: "marker", args: [false, 75, 170, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 2500, 1500, true, null] }, + // x6 reverse + { type: "spawn", func: "marker", args: [false, 45, 170, 3000, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 105, 170, 3000, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 3000, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 225, 170, 3000, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 285, 170, 3000, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 3000, 3000, true, null] } + ] } + ], + "s-981-2000-1139-0": [ // T2 + { type: "event", delay: 5500, args: [ + { type: "text", sub_type: "notification", message: "Side > Side > In > Out", message_RU: "В сторону > В сторону > Внутрь > Наружу" }, + // x6 reverse + { type: "spawn", func: "marker", args: [false, 45, 170, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 105, 170, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 225, 170, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 285, 170, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 0, 1500, true, null] }, + // x6 normal + { type: "spawn", func: "marker", args: [false, 15, 170, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 170, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 170, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 170, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 170, 1500, 1500, true, null] }, + // out circle + x4 + { type: "spawn", func: "marker", args: [false, 75, 170, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 2500, 1500, true, null] }, + // in circle + { type: "spawn", func: "marker", args: [false, 75, 270, 3500, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 3500, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 3500, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 3500, 3000, true, null] } + ] } + ], + "s-981-2000-1140-0": [ // T1 + { type: "event", delay: 4500, args: [ + { type: "text", sub_type: "notification", message: "Out > Side > Side > In", message_RU: "Наружу > В сторону > В сторону > Внутрь" }, + // in circle + { type: "spawn", func: "marker", args: [false, 75, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 0, 1500, true, null] }, + // x6 reverse + { type: "spawn", func: "marker", args: [false, 45, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 105, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 225, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 285, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 1500, 1500, true, null] }, + // x6 normal + { type: "spawn", func: "marker", args: [false, 15, 270, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 270, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 270, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 270, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 270, 2500, 1500, true, null] }, + // out circle + x4 + { type: "spawn", func: "marker", args: [false, 75, 170, 3000, 4500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 3000, 4500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 3000, 4500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 3000, 4500, true, null] } + ] } + ], + "s-981-2000-1141-0": [ // T2 + { type: "event", delay: 5500, args: [ + { type: "text", sub_type: "notification", message: "Side > Side > Out > In", message_RU: "В сторону > В сторону > Наружу > Внутрь" }, + // x6 normal + { type: "spawn", func: "marker", args: [false, 15, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 75, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 135, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 195, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 315, 270, 0, 1500, true, null] }, + // x6 reverse + { type: "spawn", func: "marker", args: [false, 45, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 105, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 225, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 285, 270, 1500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 1500, 1500, true, null] }, + // in circle + { type: "spawn", func: "marker", args: [false, 75, 270, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 270, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 270, 2500, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 270, 2500, 1500, true, null] }, + // out circle + x4 + { type: "spawn", func: "marker", args: [false, 75, 170, 3500, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 3500, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 3500, 3500, true, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 3500, 3500, true, null] } + ] } + ], + /* // cage - only mark safe spot for last pattern + "s-981-2000-1138-0": [ + { type: "spawn", func: "marker", args: [false, 75, 170, 0, 11000, false, null] }, + { type: "spawn", func: "marker", args: [false, 165, 170, 0, 11000, false, null] }, + { type: "spawn", func: "marker", args: [false, 255, 170, 0, 11000, false, null] }, + { type: "spawn", func: "marker", args: [false, 345, 170, 0, 11000, false, null] } + ], + "s-981-2000-1139-0": "s-981-2000-1138-0", + "s-981-2000-1140-0": "s-981-2000-1138-0", + "s-981-2000-1141-0": "s-981-2000-1138-0",*/ + "s-981-2000-1110-0": [{ type: "text", sub_type: "message", message: "Back Move", message_RU: "Рывок назад" }], + "s-981-2000-1111-0": [{ type: "text", sub_type: "message", message: "360 attack", message_RU: "Круговая" }], + "s-981-2000-1114-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Притяжка" }], + "s-981-2000-1115-0": [{ type: "text", sub_type: "message", message: "Circles", message_RU: "Круги" }], + "s-981-2000-1115-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 150 }], + "s-981-2000-1117-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-981-2000-1106-0": [ + { type: "func", func: () => second_swipes_remaining--, check_func: () => second_swipes_remaining > 0 }, + { type: "text", sub_type: "message", message: "Back", message_RU: "Задний", check_func: () => !second_fifty || second_swipes_remaining !== 1 }, + { type: "text", sub_type: "message", message: "Back - Front", message_RU: "Назад - Передний", check_func: () => second_fifty && second_swipes_remaining === 1 }, + { type: "spawn", func: "circle", args: [false, 553, 180, 340, 14, 270, 0, 2600] } + ], + "s-981-2000-1108-0": [ + { type: "func", func: () => second_swipes_remaining--, check_func: () => second_swipes_remaining > 0 }, + { type: "text", sub_type: "message", message: "Front", message_RU: "Передний", check_func: () => !second_fifty || second_swipes_remaining !== 1 }, + { type: "text", sub_type: "message", message: "Front - Back", message_RU: "Передний - Назад", check_func: () => second_fifty && second_swipes_remaining === 1 } + ], + "s-981-2000-1130-0": [ + { type: "func", func: () => second_swipes_remaining--, check_func: () => second_swipes_remaining > 0 }, + { type: "text", sub_type: "message", message: "Right", message_RU: "Откид влево" }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 60, 100, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 130, 100, 0, 2000, true, null] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [180, 360, 912, 0, 0, 8, 360, 0, 1500] } + ], + "s-981-2000-1131-0": [ + { type: "func", func: () => second_swipes_remaining--, check_func: () => second_swipes_remaining > 0 }, + { type: "text", sub_type: "message", message: "Left", message_RU: "Откид вправо" }, + { type: "spawn", func: "vector", args: [553, 360, 400, 180, 800, 0, 2000] }, + { type: "spawn", func: "marker", args: [false, 300, 100, 0, 2000, true, null] }, + { type: "spawn", func: "marker", args: [false, 230, 100, 0, 2000, true, null] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 20, 160, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 12, 220, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 10, 300, 0, 1500] }, + { type: "spawn", func: "semicircle", args: [0, 180, 912, 0, 0, 8, 360, 0, 1500] } + ], + "s-981-2000-1101-0": [{ type: "func", func: secondboss_swipe_event, args: [1101] }], + "s-981-2000-2101-0": "s-981-2000-1101-0", + "s-981-2000-1102-0": [{ type: "func", func: secondboss_swipe_event, args: [1102] }], + "s-981-2000-2102-0": "s-981-2000-1102-0", + "s-981-2000-1134-0": [ + { type: "text", sub_type: "message", message: "Inner + AoE", message_RU: "Ближний + АоЕ" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 75, 14, 175, 0, 1500] } + ], + "s-981-2000-1134-1": [ + { type: "spawn", func: "circle", args: [true, 553, 0, 80, 8, 390, 0, 2000] } + ], + "s-981-2000-1136-0": [{ type: "text", sub_type: "message", message: "Donut", message_RU: "Бублик" }], + "s-981-2000-1202-0": [{ type: "text", sub_type: "message", message: "Target Throw", message_RU: "Бросок цели" }], + "s-981-2000-1205-0": [{ type: "text", sub_type: "message", message: "Target Throw", message_RU: "Бросок цели" }], + "s-981-2000-1206-0": [{ type: "text", sub_type: "message", message: "Pike (Target)", message_RU: "Копье (таргет)" }], + "s-981-2000-1302-0": [{ type: "text", sub_type: "message", message: "Bait (Target)", message_RU: "Байт (таргет)" }], + "s-981-2000-1302-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1600 }], + "s-981-2000-1502-0": [ + { type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 80, 8, 390, 0, 3000] } + ], + "s-981-2000-1503-0": [{ type: "text", sub_type: "message", message: "Target Lockon", message_RU: "Захват цели" }], + "s-981-2000-1504-0": [{ type: "text", sub_type: "message", message: "Mobs Summon", message_RU: "Призыв мобов" }], + // + "s-981-2000-2106-0": "s-981-2000-1106-0", + "s-981-2000-2108-0": "s-981-2000-1108-0", + "s-981-2000-2110-0": "s-981-2000-1110-0", + "s-981-2000-2111-0": "s-981-2000-1111-0", + "s-981-2000-2114-0": "s-981-2000-1114-0", + "s-981-2000-2115-0": "s-981-2000-1115-0", + "s-981-2000-2115-1": "s-981-2000-1115-1", + "s-981-2000-2117-0": "s-981-2000-1117-0", + "s-981-2000-2130-0": "s-981-2000-1130-0", + "s-981-2000-2131-0": "s-981-2000-1131-0", + "s-981-2000-2134-0": "s-981-2000-1134-0", + "s-981-2000-2134-1": "s-981-2000-1134-1", + "s-981-2000-2136-0": "s-981-2000-1136-0", + // Pizza Mechanic + "s-981-927-1301-0": [{ type: "func", func: secondboss_floor_event, args: [4, 7] }], + "s-981-927-1302-0": [{ type: "func", func: secondboss_floor_event, args: [2, 6] }], + "s-981-927-1303-0": [{ type: "func", func: secondboss_floor_event, args: [7, 3] }], + "s-981-927-1307-0": [{ type: "func", func: secondboss_floor_event, args: [1, 6] }], + "s-981-927-1308-0": [{ type: "func", func: secondboss_floor_event, args: [3, 6] }], + "s-981-927-1309-0": [{ type: "func", func: secondboss_floor_event, args: [6, 3] }], + "s-981-927-1310-0": [{ type: "func", func: secondboss_floor_event, args: [4, 7] }], + "s-981-927-1311-0": [{ type: "func", func: secondboss_floor_event, args: [2, 6] }], + "s-981-927-1312-0": [{ type: "func", func: secondboss_floor_event, args: [7, 3] }], + "s-981-927-1313-0": [{ type: "func", func: secondboss_floor_event, args: [1, 6] }], + "s-981-927-1314-0": [{ type: "func", func: secondboss_floor_event, args: [3, 6] }], + "s-981-927-1315-0": [{ type: "func", func: secondboss_floor_event, args: [6, 3] }], + // + "qb-981-4000-9981046": [{ type: "text", sub_type: "notification", message: "First: Debuffs (Closest)", message_RU: "[ДКБ] Первая: дебафф (ближние)" }], // Thank you... for this release... + "qb-981-4000-9981047": [{ type: "text", sub_type: "notification", message: "First: Circles (Spread)", message_RU: "[КБД] Первая: круги (отдельно)" }], // Beware the... red lightning... + "qb-981-4000-9981048": [{ type: "text", sub_type: "notification", message: "First: Bombs (Gather + Cleanse)", message_RU: "[БДК] Первая: бомбы (вместе + клинс)" }], // Beware the mark... of Lakan... + // 3 BOSS + "nd-981-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "func", func: reset_third_boss } + ], + "s-981-3000-1130-0": [ + { type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 25, 10, 275, 0, 2000] } + ], + "s-981-3000-2130-0": "s-981-3000-1130-0", + // + "s-981-3000-1116-0": [ + { type: "text", sub_type: "message", message: "Donut (Out > In > Out)", message_RU: "Бублики (от него > к нему > от него)", check_func: () => !thirdboss_soul_world && thirdboss_eye }, + { type: "text", sub_type: "message", message: "Donut (In > Out > In)", message_RU: "Бублики (к нему > от него > к нему)", check_func: () => thirdboss_soul_world && thirdboss_eye }, + { type: "text", sub_type: "message", message: "Donut x2 (Out > In > Out)", message_RU: "Бублики x2 (от него > к нему > от него)", check_func: () => !thirdboss_soul_world && thirdboss_fifty && !thirdboss_eye }, + { type: "text", sub_type: "message", message: "Donut x2 (In > Out > In)", message_RU: "Бублики x2 (к нему > от него > к нему)", check_func: () => thirdboss_soul_world && thirdboss_fifty && !thirdboss_eye }, + { type: "spawn", func: "circle", args: [false, 445, 0, 41, 10, 195, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 41, 10, 345, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 41, 10, 515, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 40, 8, 670, 0, 6000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 40, 6, 830, 0, 6000] } + ], + "s-981-3000-2116-0": "s-981-3000-1116-0", + "h-981-3000-99": [{ type: "func", func: () => thirdboss_fifty = false }], + "h-981-3000-50": [{ type: "func", func: () => thirdboss_fifty = true }], + "dm-0-0-9981043": [{ type: "func", func: thirdboss_message_event, args: [1043] }], // Lakan has noticed you. + "dm-0-0-9981044": [{ type: "func", func: thirdboss_message_event, args: [1044] }], // Lakan is trying to take you on one at a time. + "dm-0-0-9981045": [{ type: "func", func: thirdboss_message_event, args: [1045] }], // Lakan intends to kill all of you at once. + "qb-981-3000-98131": [{ type: "text", sub_type: "message", message: "Range Check", message_RU: "Проверка дистанции" }], + "qb-981-3000-98135": [{ type: "func", func: () => run_mech_active = true }], + "s-981-3000-1101-0": [{ type: "func", func: run_if_you_can, args: [1101] }], + "s-981-3000-1102-0": [ + { type: "func", func: run_if_you_can, args: [1102] }, + { type: "func", func: are_you_clever, args: [1102] } + ], + "s-981-3000-1105-0": [ + { type: "func", func: run_if_you_can, args: [1105] }, + { type: "text", sub_type: "message", message: "Push Back", message_RU: "Откид назад" } + ], + "s-981-3000-1117-0": [{ type: "func", func: run_if_you_can, args: [1117] }], + "qb-981-3000-98133": [ + { type: "func", func: () => clever_mech_active = true }, + { type: "text", sub_type: "message", message: "Cone | Rotate", message_RU: "Конус | Разворот" } + ], // let's see just how clever you are... + "qb-981-3000-98134": [ + { type: "func", func: () => afriad_mech_active = true }, + { type: "text", sub_type: "message", message: "Cone x2", message_RU: "Конус x2" } + ], //are_you_afraid_of_me + "s-981-3000-1131-0": [ + { type: "func", func: are_you_afraid_of_me, args: [1131] }, + { type: "func", func: are_you_clever, args: [1131] } + ], + "s-981-3000-1132-0": [ + { type: "func", func: are_you_afraid_of_me, args: [1132] }, + { type: "func", func: are_you_clever, args: [1132] } + ], + "s-981-3000-2131-0": "s-981-3000-1131-0", + "s-981-3000-2132-0": "s-981-3000-1132-0", + "s-981-3000-2101-0": "s-981-3000-1101-0", + "s-981-3000-2102-0": "s-981-3000-1102-0", + "s-981-3000-2105-0": "s-981-3000-1105-0", + "s-981-3000-2117-0": "s-981-3000-1117-0", + "s-981-3000-1404-0": [{ type: "text", sub_type: "message", message: "Debuffs (Closest)", message_RU: "Дебафф (ближние)" }], + "s-981-3000-1405-0": [{ type: "text", sub_type: "message", message: "Debuffs (Farthest)", message_RU: "Дебафф (дальние)" }], + "s-981-3000-1301-0": [{ type: "text", sub_type: "message", message: "Bombs (Gather + Cleanse)", message_RU: "Бомбы (вместе + клинс)" }], + "s-981-3000-1302-0": [{ type: "text", sub_type: "message", message: "Bombs (Gather + No cleanse)", message_RU: "Бомбы (вместе + без клинса)" }], + "s-981-3000-3103-0": [{ type: "text", sub_type: "message", message: "Circles (Spread)", message_RU: "Круги (отдельно)" }], + "s-981-3000-3105-0": [{ type: "text", sub_type: "message", message: "Circles (Gather)", message_RU: "Круги (вместе)" }], + "s-981-3000-1136-0": [{ type: "text", sub_type: "message", message: "Claw (Bait)", message_RU: "Когти (байт)" }], + "s-981-3000-1144-0": [{ type: "text", sub_type: "message", message: "OUT", message_RU: "От него" }], + "s-981-3000-1145-0": [{ type: "text", sub_type: "message", message: "IN", message_RU: "К нему" }], + "s-981-3000-1240-0": [ + { type: "text", sub_type: "message", message: "Donuts", message_RU: "Бублики" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 350, 0, 6000] } + ], + "s-981-3000-1401-0": [ + { type: "text", sub_type: "message", message: "Wave (Dodge) | Plague/Regress", message_RU: "Волна (эвейд) | Регресс" }, + { type: "text", sub_type: "message", message: "Puddles! (Spread)", message_RU: "Лужи! (отдельно)", delay: 1900 }, + { type: "spawn", func: "circle", args: [false, 912, 0, 0, 15, 175, 1000, 7000] }, + { type: "func", func: () => thirdboss_soul_world = true } + ], + "s-981-3000-1140-0": [ + { type: "text", sub_type: "message", message: "Donuts (OUT > IN)", message_RU: "Бублики (от него > к нему)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 41, 10, 195, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 41, 10, 345, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 41, 10, 515, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 40, 8, 670, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 40, 6, 830, 0, 4500] } + ], + "s-981-3000-2140-0": "s-981-3000-1140-0", + "s-981-3000-1146-0": [ + { type: "text", sub_type: "message", message: "Donuts (IN > OUT)", message_RU: "Бублики (к нему > от него)" }, + { type: "spawn", func: "circle", args: [false, 445, 0, 41, 10, 195, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 41, 10, 345, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 41, 10, 515, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 445, 0, 40, 8, 670, 0, 4500] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 40, 6, 830, 0, 4500] } + ], + "s-981-3000-2146-0": "s-981-3000-1146-0", + "s-981-3000-1402-0": [ + { type: "text", sub_type: "message", message: "Wave (Dodge) | Sleep", message_RU: "Волна (эвейд) | Сон" }, + { type: "func", func: () => thirdboss_soul_world = false } + ], + "s-981-3000-1701-0": [{ type: "text", sub_type: "message", message: "Back | Front", message_RU: "Назад | Вперед" }], + // + "s-981-3000-1129-0": [{ type: "text", sub_type: "message", message: "IN", message_RU: "К нему" }], + "s-981-3000-1113-0": [{ type: "text", sub_type: "message", message: "Bait", message_RU: "Байт" }], + "s-981-3000-1151-0": [{ type: "text", sub_type: "message", message: "Stun", message_RU: "Стан" }], + "s-981-3000-1152-0": [{ type: "text", sub_type: "message", message: "Stun | Push Back", message_RU: "Стан | Откид назад" }], + "s-981-3000-1152-1": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1900 }], + "s-981-3000-1138-0": [{ type: "spawn", func: "circle", args: [false, 553, 0, 0, 10, 250, 0, 6000] }], // begone + "s-981-3000-2145-0": [ + { type: "text", sub_type: "message", message: "IN", message_RU: "К нему", check_func: () => !are_you_afraid_of_me_continue }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 10, 250, 0, 1500] }, + { type: "text", sub_type: "message", message: "IN > OUT", message_RU: "К нему > От него", check_func: () => are_you_afraid_of_me_continue }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 10, 285, 2000, 2000], check_func: () => are_you_afraid_of_me_continue }, + { type: "func", func: () => are_you_afraid_of_me_continue = false, check_func: () => are_you_afraid_of_me_continue, delay: 1000 } + ], + "s-981-3000-2144-0": [ + { type: "text", sub_type: "message", message: "OUT", message_RU: "От него", check_func: () => !are_you_afraid_of_me_continue }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 10, 250, 0, 1500] }, + { type: "text", sub_type: "message", message: "OUT > IN", message_RU: "От него > К нему", check_func: () => are_you_afraid_of_me_continue }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, 10, 285, 2000, 2000], check_func: () => are_you_afraid_of_me_continue }, + { type: "func", func: () => are_you_afraid_of_me_continue = false, check_func: () => are_you_afraid_of_me_continue, delay: 1000 } + ], + "s-981-3000-2129-0": "s-981-3000-1129-0", + "s-981-3000-2113-0": "s-981-3000-1113-0", + "s-981-3000-2151-0": "s-981-3000-1151-0", + "s-981-3000-2152-0": "s-981-3000-1152-0", + "s-981-3000-2152-1": "s-981-3000-1152-1", + "s-981-3000-2138-0": "s-981-3000-1138-0", + "s-981-3000-3102-0": [ + { type: "func", func: () => thirdboss_eye = true }, + { type: "func", func: () => thirdboss_eye = false, delay: 10000 } + ], + "s-981-3000-3202-0": "s-981-3000-3102-0" + }; }; \ No newline at end of file diff --git a/guides/9982.js b/guides/9982.js index de491425..d2fce4a5 100644 --- a/guides/9982.js +++ b/guides/9982.js @@ -1,395 +1,294 @@ -// млх -//made by michengs -let notice_guide = true; -let player, entity, library, effect; -let print = true; -let rad = 300; -let power = true; -let Level = 0; -let powerMsg = null; -let notice = true ; -let stepRUo = false ; - - function applyDistance(loc, distance, degrees) { - let r = loc.w; //(loc.w / 0x8000) * Math.PI; - let rads = (degrees * Math.PI/180); - let finalrad = r - rads; - loc.x += Math.cos(finalrad) * distance; - loc.y += Math.sin(finalrad) * distance; - return loc; - } - -// 召喚光柱 ,告示牌提示( 角度 距离 时间) -function SpawnThing( degrees, radius, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "SAFE SPOT", - "message": "SAFE" - }, {loc: shield_loc}); - handlers['spawn']({ - "sub_type": "item", - "id": 88850, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); -} - //构建直线(提示标志 角度 最远距离 时间) -function Spawnitem1(item,degrees, maxRadius, times, handlers, event, entity) { - let angle = degrees * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, entity); - } -} - - - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem2(item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - - - - - -/* - - - //构建圆形范围提示 (提示标志 偏移角度 偏移距离 间隔 半径 延迟 时间) -function Spawnitem222(show,item,degree,distance, intervalDegrees, radius, delay, times, handlers, event, entity ) { - let shield_loc = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - let degrees = 360 - degree; - applyDistance(shield_loc, distance, degrees); - if (!show) return; - for (let angle = -Math.PI; angle <= Math.PI; angle += Math.PI * intervalDegrees / 180) { - handlers['spawn']({ - "id": item, - "delay": delay, - "sub_delay": times, - "distance": radius, - "offset": angle - }, {loc: shield_loc}); - } -} - - - - -*/ - - - - - - -function start_boss() { -power = false; -Level = 0; -notice = true; -powerMsg = null; -stepRUo = false ; -rad = 300; -print = true; -} - - function skilld_event(skillid, handlers, event, ent, dispatch) { - if (!notice) return; - if (notice && [118, 139, 141, 150, 152].includes(skillid)) { - notice = false; - setTimeout(() => notice = true, 4000); - } - if (skillid === 300) power = true, Level = 0, powerMsg = null; - if (skillid === 360 || skillid === 399) Level = 0; - if (power && [118, 143, 145, 146, 144, 147, 148, 154, 155, 161, 162, 213, 215].includes(skillid)) { - Level++; - //powerMsg = '(' + Level + ') '; - powerMsg = `{` + Level + `} `; - - -if (Level== 4) { -handlers['text']({ -"sub_type": "message", -"message_RU": "полностью заряжен!!!", -"message": "fully charged!!" - -}); -handlers['text']({ -"sub_type": "notification", -"message_RU": "полностью заряжен!!!", -"message": "fully charged!!" -}); -} else if (Level== 2 && stepRUo) { -handlers['text']({ -"sub_type": "message", -"message_RU": "полностью заряжен!!!", -"message": "fully charged!!" -}); -handlers['text']({ -"sub_type": "notification", -"message_RU": "полностью заряжен!!!", -"message": "fully charged!!" -}); -} - -if ( powerMsg !== null && skillid !== 399){ - -if ( !stepRUo && Level !== 4){ -handlers['text']({ -"sub_type": "message", -"message_RU": powerMsg, -"message": powerMsg -}); -} -if ( stepRUo && Level !== 2){ -handlers['text']({ -"sub_type": "message", -"message_RU": powerMsg, -"message": powerMsg -}); -} -} - - - } - - -if ( skillid === 399){ -stepRUo = true ; -} -} - -function start_3boss40(handlers) { -if(print) { -handlers['text']({ -"sub_type": "message", -"message_RU": "30%-------------------------" -}); -} -print = false; -setTimeout(() => print = true, 10000); -} - //构建特殊直线(提示标志 角度 最远距离 时间) -function Spawnitem11(item,degrees, maxRadius, times, handlers, event, entity) { - let shield_loc = entity['loc'].clone(); - let shield = entity['loc'].clone(); - shield_loc.w = entity['loc'].w; - shield.w = entity['loc'].w; - let X = Math.pow((-95703 - shield.x), 2), - Y = Math.pow((144980 - shield.y), 2), - C = Math.pow(X+Y, 0.5); - - if (C < 500) return; - let angle = degrees * Math.PI/180 - for (let radius=50 ; radius<=maxRadius; radius+=50) { - handlers['spawn']({ - "id": item, - "sub_delay": times, - "distance": radius, - "offset": angle - }, entity); - } -} - -// 召喚特殊告示牌提示( 角度 距离 时间) -/*function SpawnThingob( degrees, radius, times, handlers, event, entity ) { - let shield_loc = shield = entity['loc'].clone(); - shield_loc.w = shield.w = entity['loc'].w; - let X = Math.pow((-95703 - shield.x), 2), - Y = Math.pow((144980 - shield.y), 2), - C = Math.pow(X+Y, 0.5); - - if (C < 500) { - if (radius > 105) {return;}else{radius = 105 } - } - - let angle = Math.PI * degrees / 180 - handlers['spawn']({ - "sub_type": "build_object", - "id": 1, - "sub_delay": times, - "distance": radius, - "offset": angle, - "ownerName": "位置", - "message": "位置" - }, {loc: shield_loc}); - -}*/ -module.exports = { - - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - - }, - - //"h-982-1000-100": [{"type": "func","func": guid_voice} - - - - - - //一王 - - - "s-982-1000-106-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "Heavy","message_RU": "Тяжелый удар" }], - "s-982-1000-107-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "Pushback","message_RU": "Откид (конус)" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "Pushback","message_RU": "Откид (кайя)" }], - "s-982-1000-108-0": [{"type": "text","class_position":"dps","sub_type": "message","message_RU": "Байт(подет)" }, - {"type": "text","class_position":"heal","sub_type": "message","message_RU": "Байт(подлет)" }], - "s-982-1000-109-0": [{"type": "text","sub_type": "message","message": "Rocks (Small)","message_RU": "Камни(малые)" }], - "s-982-1000-110-0": [{"type": "text","sub_type": "message","message": "Rocks (Large)","message_RU": "Камни(большие)" }], - "s-982-1000-301-0": [{"type": "text","sub_type": "message","message": "Flower stuns","message_RU": "Оглушающие цветы" }], - "s-982-1000-307-0": [{"type": "text","class_position":"dps","sub_type": "message","message_RU": "Клетка" }, - {"type": "text","class_position":"heal","sub_type": "message","message_RU": "Клетка" }], - "s-982-1000-309-0": [{"type": "text","sub_type": "message","message": "1 flower","message_RU": "1 цветок!!!" }], - "s-982-1000-310-0": [{"type": "text","sub_type": "message","message": "2 flower","message_RU": "2 цветка!!!" }], - "s-982-1000-116-0": [{"type": "text","sub_type": "message","message": "Big AoE attack!!","message_RU": "AoE!!!" }], - "s-982-1000-312-0": [{"type": "text","sub_type": "message","message": "Golden flower!!","message_RU": "Золотой цветок!!!" }], - - - //二王 - "h-982-3000-30": [{"type": "func","func": start_3boss40}], - - - /*"s-982-3022-101-0": [{"type": "func","func": Spawnitem11.bind(null,912,0,420,8000)}, - {"type": "func","func": SpawnThingob.bind(null,0,105,8000)}, - {"type": "func","func": SpawnThingob.bind(null,0,210,8000)}, - {"type": "func","func": SpawnThingob.bind(null,0,315,8000)}, - {"type": "func","func": SpawnThingob.bind(null,0,420,8000)} ], */ - - "s-982-2000-105-0": [{"type": "text","sub_type": "message","message": "Spin","message_RU": "Кувырок" }], - "s-982-2000-113-0": [{"type": "text","sub_type": "message","message": "Stun inc","message_RU": "Стан" }], - "s-982-2000-114-0": [{"type": "text","sub_type": "message","message": "Get IN","message_RU": "К" }, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,260,0,3000)}], - "s-982-2000-116-0": [{"type": "text","sub_type": "message","message": "Front then Back","message_RU": "Вперед | Назад" }, - {"type": "func","func": Spawnitem1.bind(null,912,90,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,270,500,5000)}], - "s-982-2000-301-0": [{"type": "text","sub_type": "message","message": "↓ Get OUT + dodge","message_RU": "От | Эвейд"}, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,260,0,3000)} - ], - "s-982-2000-302-0": [{"type": "text","sub_type": "message","message": "↑ Get IN + dodge","message_RU": "К | Эвейд" }, - {"type": "func","func": Spawnitem2.bind(null,912,0,0,15,260,0,3000)} - ], - -//三王 - "h-982-3000-99": [{"type": "func","func": start_boss}], - - "s-982-3000-118-0": [{"type": "text","sub_type": "message","message": "Front triple","message_RU": "Передняя комба" }, - {"type": "func","func": skilld_event.bind(null, 118)} - ], - "s-982-3000-143-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←←","message_RU": "Слева сзади" }, - {"type": "func","func": skilld_event.bind(null, 143)} - ], - "s-982-3000-145-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←←","message_RU": "Слева сзади" }, - {"type": "func","func": skilld_event.bind(null, 145)} - ], - "s-982-3000-146-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←← (pulses)","message_RU": "Слева сзади(Бублик)" }, - {"type": "func","func": SpawnThing.bind(null,215,370,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,6,800,2500,8000)}, - {"type": "func","func": skilld_event.bind(null, 146)} ], - "s-982-3000-154-0": [{"type": "text","sub_type": "message","message": "←← Left rear ←← (pulses)","message_RU": "Слева сзади(Бублик)" }, - {"type": "func","func": SpawnThing.bind(null,215,370,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,215,370,6,800,2500,8000)}, - {"type": "func","func": skilld_event.bind(null, 154)} - ], - - - "s-982-3000-144-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→","message_RU": "Справа сзади" }, - {"type": "func","func": skilld_event.bind(null, 144)}], - - - "s-982-3000-147-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→","message_RU": "Справа сзади" }, - {"type": "func","func": skilld_event.bind(null,147 )} ], - - "s-982-3000-148-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→ (pulses)","message_RU": "Справа сзади(Бублик)" }, - {"type": "func","func": SpawnThing.bind(null,155,388,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,6,800,2500,8000)}, - {"type": "func","func": skilld_event.bind(null, 148)} ], - - "s-982-3000-155-0": [{"type": "text","sub_type": "message","message": "→→ Right rear →→ (pulses)","message_RU": "Справа сзади(Бублик)" }, - {"type": "func","func": SpawnThing.bind(null,155,388,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,15,160,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,12,320,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,10,480,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,8,640,2500,8000)}, - {"type": "func","func": Spawnitem2.bind(null,445,155,388,6,800,2500,8000)}, - {"type": "func","func": skilld_event.bind(null, 155)} ], - - "s-982-3000-161-0": [{"type": "text","sub_type": "message","message": "Back then Front","message_RU": "Назад | Вперед" }, - {"type": "func","func": skilld_event.bind(null, 161)} - ], - "s-982-3000-162-0": [{"type": "text","sub_type": "message","message": "Back then Front","message_RU": "Назад | Вперед" }, - {"type": "func","func": skilld_event.bind(null, 162)} - ], - "s-982-3000-213-0": [{"type": "text","sub_type": "message","message": "Tail","message_RU": "Хвост!!!" }, - {"type": "func","func": skilld_event.bind(null, 213)} - ], - "s-982-3000-215-0": [{"type": "text","sub_type": "message","message": "Tail!!","message_RU": "Хвост!!!" }, - {"type": "func","func": skilld_event.bind(null, 215)} - ], - "s-982-3000-139-0": [{"type": "text","sub_type": "message","message": "Left safe","message_RU": "Слева безопасно" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,270,200,8000)}, - {"type": "func","func": skilld_event.bind(null, 139)} ], - "s-982-3000-150-0": [{"type": "text","sub_type": "message","message": "Left safe","message_RU": "Слева безопасно" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,270,200,8000)}, - {"type": "func","func": skilld_event.bind(null, 150)} ], - "s-982-3000-141-0": [{"type": "text","sub_type": "message","message": "Right safe","message_RU": "Справа безопасно" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,90,200,8000)}, - {"type": "func","func": skilld_event.bind(null, 141)} ], - "s-982-3000-152-0": [{"type": "text","sub_type": "message","message": "Right safe","message_RU": "Справа безопасно" }, - {"type": "func","func": Spawnitem1.bind(null,912,0,500,5000)}, - {"type": "func","func": Spawnitem1.bind(null,912,180,500,5000)}, - {"type": "func","func": SpawnThing.bind(null,90,200,8000)}, - {"type": "func","func": skilld_event.bind(null, 152)} ], - "s-982-3000-300-0": [{"type": "text","sub_type": "message","message": "Dodge!! (Awakening 1","message_RU": "Эвейд(Пробуждение 1)" }, - {"type": "func","func": skilld_event.bind(null, 300)} ], - "s-982-3000-399-0": [{"type": "text","sub_type": "message","message": "Dodge!! (Awakening 2)","message_RU": "Эвейд(Пробуждение 2)" }, - {"type": "func","func": skilld_event.bind(null, 399)} - - ], - "s-982-3000-360-0": [{"type": "text","sub_type": "message","message": "Explosion!!","message_RU": "Взрыв!!!" }, - {"type": "func","func": skilld_event.bind(null, 360)} ] - -}; +// Grotto of Lost Souls (Hard) +// +// made by michengs / HSDN / Calvary + +module.exports = (dispatch, handlers, guide, lang) => { + + let color = 0; + let debuff = 0; + let print_wave = true; + let awakening_one = false; + let awakening_two = false; + let stack_level = 0; + let enrage = false; + + const is_mt = dispatch._mod.connection.metadata.serverList[dispatch._mod.serverId].name.includes("MT"); + + function stacks_level_event() { + if (!awakening_one) return; + + stack_level++; + + if ((!awakening_two && stack_level > 0) || (awakening_two && stack_level > 2)) { + handlers.text({ + sub_type: "notification", + message: `Stack ${stack_level}`, + message_RU: `Стак ${stack_level}`, + speech: false + }); + } + + if (stack_level === 4) { + handlers.text({ + sub_type: "alert", + message: "Explosion soon", + message_RU: "Скоро взрыв" + }); + } + } + + return { + // 1 BOSS + "nd-982-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-982-1000-106-0": [{ type: "text", class_position: "tank", sub_type: "message", message: "Heavy", message_RU: "Тяжелый удар" }], + "s-982-1000-107-0": [ + { type: "text", class_position: "dps", sub_type: "message", message: "Pushback", message_RU: "Откид назад" }, + { type: "text", class_position: "heal", sub_type: "message", message: "Pushback (Kaia)", message_RU: "Откид назад (кайа)" }, + { type: "spawn", func: "vector", args: [553, 90, 30, 140, 600, 1000, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 30, -140, 600, 1000, 2000] } + ], + "s-982-1000-108-0": [ + { type: "text", sub_type: "message", message: "Bait Front (Flying)", message_RU: "Байт вперед (подлет)" } + ], + "s-982-1000-108-1": [ + { type: "spawn", func: "vector", args: [553, 90, 140, 5, 620, 0, 1500] }, + { type: "spawn", func: "vector", args: [553, 270, 140, 355, 620, 0, 1500] } + ], + "s-982-1000-109-0": [{ type: "text", sub_type: "message", message: "Rocks (Small)", message_RU: "Камни (малые)" }], + "s-982-1000-110-0": [{ type: "text", sub_type: "message", message: "Rocks (Large)", message_RU: "Камни (большие)" }], + "s-982-1000-111-0": [ + { type: "text", sub_type: "message", message: "Stun (Dodge)", message_RU: "Стан (эвейд)", delay: 1500 }, + { type: "spawn", func: "circle", args: [true, 553, 180, 50, null, 350, 1500, 2000] } + ], + "s-982-1000-113-0": [{ type: "text", sub_type: "message", message: "Thorns (Bleed)", message_RU: "Колючки (кровоток)" }], + "s-982-1000-116-0": [ + { type: "text", sub_type: "message", message: "AoE", message_RU: "АоЕ" }, + { type: "text", sub_type: "message", message: "3" }, + { type: "text", sub_type: "message", delay: 500, message: "2" }, + { type: "text", sub_type: "message", delay: 1000, message: "1" }, + { type: "text", sub_type: "message", delay: 1500, message: "Dodge", message_RU: "Эвейд" } + ], + "s-982-1000-301-0": [ + { type: "text", sub_type: "message", message: "Flower Stuns", message_RU: "Оглушающие цветы" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 2000 } + ], + "s-982-1000-307-0": [{ type: "text", sub_type: "message", message: "Cage (Don't move)", message_RU: "Клетка (не двигаться)" }], + "s-982-1032-349-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд"}], + // Flowers mech + "ab-982-1003-98200161": [ + { type: "text", sub_type: "message", message: "Green", message_RU: "Зеленый" }, + { type: "func", func: () => color = 1 } + ], + "ab-982-1003-98200162": [ + { type: "text", sub_type: "message", message: "Violet", message_RU: "Фиолетовый" }, + { type: "func", func: () => color = 2 } + ], + "ae-0-0-98200148": [{ type: "func", func: () => debuff = 1 }], // green + "ae-0-0-98200149": [{ type: "func", func: () => debuff = 2 }], // violet + "s-982-1000-201-0": [{ type: "text", sub_type: "alert", message: "Change Debuff", message_RU: "Сменить дебаф", check_func: () => debuff !== 0 && color !== debuff, delay: 5000 }], + "s-982-1000-309-0": [ + { type: "text", sub_type: "message", message: "One Flower", message_RU: "Один цветок" }, + { type: "text", sub_type: "alert", message: "Dodge the flower!", message_RU: "Заэвейдить цветок!", check_func: () => color === debuff, delay: 1500 } + ], + "s-982-1000-310-0": [ + { type: "text", sub_type: "message", message: "Two Flowers", message_RU: "Два цветка" }, + { type: "text", sub_type: "alert", message: "Dodge ONE flower!", message_RU: "Заэвейдить один цветок!", check_func: () => color !== debuff, delay: 1500 } + ], + "s-982-1000-312-0": [ + { type: "text", sub_type: "message", message: "Break Golden Flower", message_RU: "Разбить золотой цветок" }, + { type: "text", sub_type: "alert", message: "Dodge the Flower!", message_RU: "Заэвейдить цветок!", check_func: () => color === debuff, delay: 1500 } + ], + "s-982-1000-308-0": [ + { type: "func", func: () => color = 0 }, + { type: "func", func: () => debuff = 0 } + ], + + // 2 BOSS + "nd-982-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-982-2000-105-0": [{ type: "text", sub_type: "message", message: "Spin", message_RU: "Кувырок" }], + "s-982-2000-108-0": [{ type: "text", sub_type: "message", message: "Dodge. Shot Forward", message_RU: "Эвейд. Выстрел вперед", delay: 500 }], + "s-982-2000-109-0": [{ type: "text", sub_type: "message", message: "Wave Forward", message_RU: "Волна вперед" }], + "s-982-2000-112-0": [{ type: "text", sub_type: "message", message: "Kick Forward", message_RU: "Удар вперед" }], + "s-982-2000-113-0": [ + { type: "text", sub_type: "message", message: "Stun (AoE)", message_RU: "Стан (АоЕ)" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 310, 0, 3000] } + ], + "s-982-2000-114-0": [ + { type: "text", sub_type: "message", message: "Get In", message_RU: "К нему" }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 260, 0, 5000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 600, 0, 5000] } + ], + "s-982-2000-116-0": [ + { type: "text", sub_type: "message", message: "Front | Back", message_RU: "Передняя | Задняя" }, + { type: "spawn", func: "vector", args: [553, 0, 0, 270, 500, 0, 5000] }, + { type: "spawn", func: "vector", args: [553, 180, 0, 90, 500, 0, 5000] } + ], + "s-982-2000-117-0": "s-982-2000-116-0", + "s-982-2000-301-0": [ + { type: "text", sub_type: "message", message: "Get Out | Dodge", message_RU: "От него | Эвейд" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 3700 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 260, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 650, 0, 3000] } + ], + "s-982-2000-302-0": [ + { type: "text", sub_type: "message", message: "Get In | Dodge", message_RU: "К нему | Эвейд" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 3700 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 260, 0, 3000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 650, 0, 3000] } + ], + "s-982-2000-303-0": [{ type: "text", sub_type: "message", message: "Waves", message_RU: "Волны" }], + "s-982-2000-307-0": [{ type: "text", sub_type: "message", message: "Target", message_RU: "Таргет" }], + "s-982-2000-307-2": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд" }], + + // 3 BOSS + "nd-982-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" }, + { type: "func", func: () => enrage = false } + ], + "ns-982-3000": [{ type: "func", func: () => enrage = false }], + "rb-982-3000": [{ type: "func", func: () => enrage = true }], + "re-982-3000": [{ type: "func", func: () => enrage = false }], + "h-982-3000-99": [ + { type: "func", func: () => print_wave = true }, + { type: "func", func: () => awakening_one = false }, + { type: "func", func: () => awakening_two = false }, + { type: "func", func: () => stack_level = 0 } + ], + "h-982-3000-90": [{ type: "text", sub_type: "message", message: "90%", message_RU: "90%", check_func: () => is_mt }], + "h-982-3000-80": [{ type: "text", sub_type: "message", message: "80%", message_RU: "80%", check_func: () => !is_mt }], + "h-982-3000-45": [{ type: "text", sub_type: "message", message: "45%", message_RU: "45%", check_func: () => is_mt }], + "h-982-3000-30": [{ type: "text", sub_type: "message", message: "30%", message_RU: "30%", check_func: () => !is_mt }], + "s-982-3000-109-0": [{ type: "text", sub_type: "message", message: "Front Throw (Target)", message_RU: "Удар вперед (таргет)" }], + "s-982-3000-134-0": [{ type: "text", sub_type: "message", message: "Front Throw (Target)", message_RU: "Удар вперед (таргет)" }], + "s-982-3000-118-0": [{ type: "text", sub_type: "message", message: "Front Triple", message_RU: "Передняя комба" }], + "s-982-3000-143-0": [ + { type: "text", sub_type: "message", message: "Left Rear", message_RU: "Слева сзади" }, + { type: "spawn", func: "circle", args: [true, 553, 200, 330, null, 280, 0, 3000] } + ], + "s-982-3000-145-0": "s-982-3000-143-0", + "s-982-3000-144-0": [ + { type: "text", sub_type: "message", message: "Right Rear", message_RU: "Справа сзади" }, + { type: "spawn", func: "circle", args: [true, 553, 160, 330, null, 280, 0, 3000] } + ], + "s-982-3000-147-0": "s-982-3000-144-0", + "s-982-3000-146-0": [ + { type: "text", sub_type: "message", message: "Pulses Left", message_RU: "Бублики слева" }, + { type: "spawn", func: "circle", args: [true, 553, 200, 350, null, 280, 500, 2000] }, + { type: "spawn", func: "marker", args: [false, 215, 370, is_mt ? 4200 : 5300, 3000, true, null] }, // 1 + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 15, 160, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 12, 320, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 10, 480, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 8, 640, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 6, 800, 2000, 6000] } + ], + "s-982-3000-154-0": [ + { type: "text", sub_type: "message", message: "Pulses Left", message_RU: "Бублики слева" }, + { type: "spawn", func: "circle", args: [true, 553, 200, 350, null, 280, 500, 2000] }, + { type: "spawn", func: "marker", args: [false, 215, 370, 4200, 4000, true, null] }, // 2 + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 15, 160, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 12, 320, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 10, 480, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 8, 640, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 215, 370, 6, 800, 2000, 6000] } + ], + "s-982-3000-148-0": [ + { type: "text", sub_type: "message", message: "Pulses Right", message_RU: "Бублики справа" }, + { type: "spawn", func: "circle", args: [true, 553, 160, 350, null, 280, 500, 2000] }, + { type: "spawn", func: "marker", args: [false, 155, 388, is_mt ? 4200 : 5300, 3000, true, null] }, // 1 + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 15, 160, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 12, 320, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 10, 480, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 8, 640, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 6, 800, 2000, 6000] } + ], + "s-982-3000-155-0": [ + { type: "text", sub_type: "message", message: "Pulses Right", message_RU: "Бублики справа" }, + { type: "spawn", func: "circle", args: [true, 553, 160, 350, null, 280, 500, 2000] }, + { type: "spawn", func: "marker", args: [false, 155, 388, 4200, 4000, true, null] }, // 2 + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 15, 160, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 12, 320, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 10, 480, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 8, 640, 2000, 6000] }, + { type: "spawn", func: "circle", args: [false, 445, 155, 388, 6, 800, 2000, 6000] } + ], + "s-982-3000-161-0": [ + { type: "text", sub_type: "message", message: "Front | Back", message_RU: "Вперед | Назад" }, + { type: "spawn", func: "circle", args: [true, 553, 180, 310, null, 290, 3000, 2500] } + ], + "s-982-3000-162-0": [ + { type: "text", sub_type: "message", message: "Front | Back", message_RU: "Вперед | Назад" }, + { type: "spawn", func: "circle", args: [true, 553, 180, 310, null, 290, 3000, 2500] } + ], + "s-982-3000-213-0": [{ type: "text", sub_type: "message", message: "Tail", message_RU: "Хвост" }], + "s-982-3000-215-0": [{ type: "text", sub_type: "message", message: "Tail (Combo)", message_RU: "Хвост (комба)" }], + "s-982-3000-139-0": [ + { type: "text", sub_type: "message", message: `Wave + Wing (Left Safe)`, message_RU: `Волна (лево сейф)`, check_func: () => print_wave && !enrage }, + { type: "text", sub_type: "message", message: `Wave Fast + Wing (Left Safe)`, message_RU: `Волна быстрая (лево сейф)`, check_func: () => print_wave && enrage }, + { type: "despawn_all", tag: "wave" }, + { type: "spawn", func: "vector", args: [912, 90, 0, 0, 600, 100, 3000], tag: "wave" }, + { type: "spawn", func: "vector", args: [912, 270, 0, 180, 600, 100, 3000], tag: "wave" }, + { type: "spawn", func: "marker", args: [false, 270, 200, 100, 4000, true, null], tag: "wave" }, + { type: "func", func: () => print_wave = false }, + { type: "func", func: () => print_wave = true, delay: 8000 } + ], + "s-982-3000-139-1": "s-982-3000-139-0", + "s-982-3000-139-2": "s-982-3000-139-0", + "s-982-3000-150-0": "s-982-3000-139-0", // + "s-982-3000-150-1": "s-982-3000-139-0", + "s-982-3000-150-2": "s-982-3000-139-0", + "s-982-3000-141-0": [ + { type: "text", sub_type: "message", message: "Wave + Wing (Right Safe)", message_RU: "Волна (право сейф)", check_func: () => print_wave && !enrage }, + { type: "text", sub_type: "message", message: "Wave Fast + Wing (Right Safe)", message_RU: "Волна быстрая (право сейф)", check_func: () => print_wave && enrage }, + { type: "despawn_all", tag: "wave" }, + { type: "spawn", func: "vector", args: [912, 90, 0, 0, 600, 100, 3000], tag: "wave" }, + { type: "spawn", func: "vector", args: [912, 270, 0, 180, 600, 100, 3000], tag: "wave" }, + { type: "spawn", func: "marker", args: [false, 90, 200, 100, 4000, true, null], tag: "wave" }, + { type: "func", func: () => print_wave = false }, + { type: "func", func: () => print_wave = true, delay: 8000 } + ], + "s-982-3000-141-1": "s-982-3000-141-0", + "s-982-3000-141-2": "s-982-3000-141-0", + "s-982-3000-152-0": "s-982-3000-141-0", // + "s-982-3000-152-1": "s-982-3000-141-0", + "s-982-3000-152-2": "s-982-3000-141-0", + "s-982-3000-300-0": [ + { type: "text", sub_type: "message", message: "3" }, + { type: "text", sub_type: "message", delay: 300, message: "2" }, + { type: "text", sub_type: "message", delay: 600, message: "1" }, + { type: "text", sub_type: "message", delay: 800, message: "Dodge! (Awakening 1)", message_RU: "Эвейд! (Пробуждение 1)" }, // <80% + { type: "func", func: () => awakening_one = true }, + { type: "func", func: () => stack_level = 0 } + ], + "s-982-3000-399-0": [ + { type: "text", sub_type: "message", message: "3" }, + { type: "text", sub_type: "message", delay: 400, message: "2" }, + { type: "text", sub_type: "message", delay: 800, message: "1" }, + { type: "text", sub_type: "message", delay: 1200,message: "Dodge! (Awakening 2)", message_RU: "Эвейд! (Пробуждение 2)"}, // <30% + { type: "func", func: () => awakening_two = true }, + { type: "func", func: () => stack_level = 0 } + ], + "s-982-3000-360-0": [ + { type: "text", sub_type: "message", message: "Dodge! (Explosion)", message_RU: "Эвейд! (взрыв)" }, + { type: "func", func: () => stack_level = 0 } + ], + "ab-982-3000-98200399": [{ type: "func", func: stacks_level_event }], + "s-982-3000-351-0": [ + { type: "text", sub_type: "message", message: "Stones", message_RU: "Камни" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 2000 }, + { type: "text", sub_type: "message", message: "Line up to the plate", message_RU: "Выстроиться к плите", delay: 4000 }, + { type: "text", sub_type: "message", message: "Kaia!", message_RU: "Кайа!", delay: 9500 } + ], + "s-982-3011-352-0": [ + { type: "text", sub_type: "message", message: "Break Sphere", message_RU: "Разбить сферу", check_func: () => !awakening_two }, + { type: "text", sub_type: "message", message: "Break Three Spheres", message_RU: "Разбить три сферы", check_func: () => awakening_two } + ], + "s-982-3012-353-0": "s-982-3011-352-0" + }; +}; \ No newline at end of file diff --git a/guides/9983.js b/guides/9983.js index 9a8b06d8..9662542e 100644 --- a/guides/9983.js +++ b/guides/9983.js @@ -1,204 +1,242 @@ -//DRC -//made by michengs +// Dark Reach Citadel (Hard) +// +// made by ITunk / HSDN / FrostSigil / Calvary -let notice_guide = true; -let player, entity, library, effect; -function guid_voice(handlers) { -if(notice_guide) { -handlers['text']({ -"sub_type": "message", -"delay": 2000, -"message": "获取更多信息 proxy频道输入:補助 help" -}); +module.exports = (dispatch, handlers, guide, lang) => { + let firstboss_prepare_stun = false; + let secondboss_show_book_notify = true; + let secondboss_game_id_for_book = null; + let secondboss_red_book_loc = null; + let secondboss_blue_book_loc = null; + let secondboss_green_book_loc = null; + let first_skillid = 0; -handlers['text']({ -"sub_type": "notification", -"delay": 2000, -"message": "获取更多信息 proxy频道输入:補助 help" -}); -} -notice_guide = false; + function closest(nums, num) { + return nums.reduce((prev, curr) => (Math.abs(curr - num) < Math.abs(prev - num) ? curr : prev)); + } -} -const SPAWN_CIRCLES = true; -const steptwo = 2 * Math.PI / 30;//20 flowers in total -//内圈 -let SPAWNING_FIRST_CIRCLE_FLOWERS = []; -let SPAWNING_SECOND_CIRCLE_FLOWERS = []; -let SPAWNING_THIRD_CIRCLE_FLOWERS = []; -//外圈 + function thirdboss_mech(skillid) { + if (first_skillid === 0) { + first_skillid = skillid; + } else if (first_skillid === 119 && skillid === 116) { + handlers.event([ + { type: "despawn_all" }, + { type: "spawn", func: "marker", args: [false, 90, 100, 0, 3000, true, null] }, + { type: "spawn", func: "semicircle", args: [135, 405, 553, 0, 0, 20, 180, 0, 3000] }, + { type: "spawn", func: "semicircle", args: [135, 405, 553, 0, 0, 12, 280, 0, 3000] }, + { type: "spawn", func: "semicircle", args: [135, 405, 553, 0, 0, 10, 380, 0, 3000] }, + { type: "spawn", func: "semicircle", args: [135, 405, 553, 0, 0, 8, 480, 0, 3000] } + ]); -for(let angle = -Math.PI; angle <= Math.PI; angle += steptwo) { - if(!SPAWN_CIRCLES) continue; - SPAWNING_FIRST_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": 680, - "offset": angle - }); - - SPAWNING_THIRD_CIRCLE_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 6000, - "distance": 225, - "offset": angle - }); - -} + first_skillid = 0; + } else if (first_skillid === 116 && skillid === 119) { + handlers.event([ + { type: "despawn_all" }, + { type: "spawn", func: "marker", args: [false, 270, 100, 0, 3000, true, null] }, + { type: "spawn", func: "semicircle", args: [-45, 225, 553, 0, 0, 20, 180, 0, 3000] }, + { type: "spawn", func: "semicircle", args: [-45, 225, 553, 0, 0, 12, 280, 0, 3000] }, + { type: "spawn", func: "semicircle", args: [-45, 225, 553, 0, 0, 10, 380, 0, 3000] }, + { type: "spawn", func: "semicircle", args: [-45, 225, 553, 0, 0, 8, 480, 0, 3000] } + ]); + first_skillid = 0; + } else if (skillid === 116 || skillid === 119) { + first_skillid = 0; + } + } -let SPAWNING_right_FLOWERS = []; //303 -let SPAWNING_left_FLOWERS = []; //306 -for (let distance = 50; distance <= 250; distance += 50) { - SPAWNING_right_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": 1.57 - }, -{ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": -1.57 - }, - -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": -1.39 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": -1.39 - - } , - -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": 1.745 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": 1.745 - - }); - - SPAWNING_left_FLOWERS.push({ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": 1.57 - }, -{ - "type": "spawn", - "id": 553, - "sub_delay": 5000, - "distance": distance, - "offset": -1.57 - }, -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": 1.39 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": 1.39 - } , -{ - "type": "spawn", - "sub_type": "build_object", - "id": 1, - "sub_delay": 5000, - "distance": 250, - "ownerName": "SAFE SPOT", - "message": "SAFE", - "offset": -1.745 - }, - { - "type":"spawn", - "sub_type": "item", - "id": 98260, - "sub_delay": 5000, - "distance": 250, - "offset": -1.745 - }); -} + dispatch.hook("S_NPC_LOCATION", "*", e => { + if (!secondboss_show_book_notify || e.gameId !== secondboss_game_id_for_book) return; - + const books = [ + e.loc.angleTo(secondboss_red_book_loc), // Red book + e.loc.angleTo(secondboss_blue_book_loc), // Blue book + e.loc.angleTo(secondboss_green_book_loc) // Green book + ]; -module.exports = { + const book = books.indexOf(closest(books, e.w)); - //"h-983-1000-100": [{"type": "text","sub_type": "message","message": "_","message_TW": "地毯眩晕" }].concat(SPAWNING_left_FLOWERS), - //"h-983-1000-100": [{"type": "func","func": guid_voice}], + switch (book) { + case 0: // Red -> Blue + handlers.alias({ id: "ab-983-2000-98300222" }); + break; + case 1: // Blue -> Green + handlers.alias({ id: "ab-983-2000-98300223" }); + break; + case 2: // Green -> Red + handlers.alias({ id: "ab-983-2000-98300224" }); + break; + } + secondboss_show_book_notify = false; + secondboss_game_id_for_book = null; + }); - - "s-983-1000-108-0": [{"type": "text","sub_type": "message","message": "back stun","message_TW": "后跳眩晕" }], - "s-983-1000-109-0": [{"type": "text","sub_type": "message","message": "Knockback","message_TW": "后扫击退" }], - "s-983-1000-119-0": [{"type": "text","sub_type": "message","message": "energy","message_TW": "蓄力捶地" }], - "s-983-1000-127-0": [{"type": "text","sub_type": "message","message": "thunder","message_TW": "雷电!!" }], - "dm-0-0-9783103": [{"type": "text","sub_type": "message","message": "100","message_TW": "100能量鉴定!!" }], - "dm-0-0-9983103": [{"type": "text","sub_type": "message","message": "100","message_TW": "100能量鉴定!!" }], - //二王 - "s-983-2000-110-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_TW": "前砸闪避" }], - "s-983-2000-111-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "right back","message_TW": "右后踢击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "right back","message_TW": "右后踢击退" }], - "s-983-2000-115-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "left back","message_TW": "左后踢击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "left back","message_TW": "左后踢击退" }], - "s-983-2000-119-0": [{"type": "text","sub_type": "message","message": "jump stun","message_TW": "跳跃眩晕" }], - "s-983-2000-120-0": [{"type": "text","sub_type": "message","message": "front + back","message_TW": "前拳+后踢击退" }], - "s-983-2000-316-0": [{"type": "text","sub_type": "message","message": "Flame Blast","message_TW": "火焰爆炸" }], - "s-983-2000-317-0": [{"type": "text","sub_type": "message","message": "water wave","message_TW": "水波击飞" }], - "s-983-2000-318-0": [{"type": "text","sub_type": "message","message": "stun","message_TW": "地毯眩晕" }].concat(SPAWNING_FIRST_CIRCLE_FLOWERS), - - - - //三王 - "s-983-3000-106-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "front","message_TW": "前推击退" }], - "s-983-3000-109-0": [{"type": "text","class_position":"tank","sub_type": "message","message": "stun","message_TW": "前插眩晕" }], - "s-983-3000-112-0": [{"type": "text","class_position":"dps","sub_type": "message","message": "Knockback","message_TW": "后扫击退" }, - {"type": "text","class_position":"heal","sub_type": "message","message": "Knockback","message_TW": "后扫击退" }], - "s-983-3000-301-0": [{"type": "text","sub_type": "message","message": "diaup","message_TW": "地刺击飞" }], - - "s-983-3000-303-0": [{"type": "text","sub_type": "message","message": "right","message_TW": "右" }].concat(SPAWNING_right_FLOWERS), - "s-983-3000-306-0": [{"type": "text","sub_type": "message","message": "left","message_TW": "左" }].concat(SPAWNING_left_FLOWERS), - "s-983-3000-309-0": [{"type": "text","sub_type": "message","message": "Debuffs","message_TW": "注视!!" }], - "s-983-3000-315-0": [{"type": "text","sub_type": "message","message": "suck blood","message_TW": "恐惧吸血" }] + return { + // 1 BOSS + "nd-983-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-983-1008": [{ type: "text", sub_type: "message", message: "Take Balls", message_RU: "Взять сферы" }], + "s-983-1000-101-0": [ + { type: "text", sub_type: "message", message: "Stun", message_RU: "Кувырок (стан)", check_func: () => firstboss_prepare_stun }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, null, 470, 0, 3000], check_func: () => firstboss_prepare_stun } + ], + "s-983-1000-102-0": [ + { type: "func", func: () => firstboss_prepare_stun = true }, + { type: "func", func: () => firstboss_prepare_stun = false, delay: 2700 } + ], + "s-983-1000-104-0": [{ type: "text", sub_type: "message", message: "Jump", message_RU: "Прыжок" }], + "s-983-1000-109-0": [{ type: "text", sub_type: "message", message: "Push Back", message_RU: "Откид назад" }], + "s-983-1000-119-0": [ + { type: "text", sub_type: "message", message: "Heavy", message_RU: "Удар" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 250 }, + { type: "spawn", func: "circle", args: [true, 553, 0, 50, null, 350, 0, 3000] } + ], + "s-983-1000-127-0": [{ type: "text", sub_type: "message", message: "Many Attack", message_RU: "Серия ударов" }], + "s-983-1000-128-0": [{ type: "text", sub_type: "message", message: "Lazer", message_RU: "Луч" }], + "s-983-1000-130-0": "s-983-1000-128-0", + "s-983-1000-301-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1900 }], + "s-983-1000-304-0": [{ type: "text", sub_type: "message", message: "Pull (Take circles away from the boss)", message_RU: "Стяжка (отвести круги от босса)" }], + "s-983-1000-305-0": [{ type: "text", sub_type: "message", message: "Triple Laser (Together)", message_RU: "Тройной лазер (собраться)" }], + // 2 BOSS + "nd-983-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-983-2001": [ // Red book + { type: "func", func: ent => secondboss_red_book_loc = ent.loc }, + { type: "func", func: () => secondboss_show_book_notify = true } + ], + "ns-983-2002": [ // Blue book + { type: "func", func: ent => secondboss_blue_book_loc = ent.loc }, + { type: "func", func: () => secondboss_show_book_notify = true } + ], + "ns-983-2003": [ // Green book + { type: "func", func: ent => secondboss_green_book_loc = ent.loc }, + { type: "func", func: () => secondboss_show_book_notify = true } + ], + "ab-983-2000-98300222": [ // Red + { type: "event", check_func: () => secondboss_show_book_notify, args: [ + { type: "text", sub_type: "message", message: "Take Blue Book", message_RU: "Взять синюю книгу" }, + { type: "text", sub_type: "notification", message: "Take [c=#7777ff]Blue[/c] Book", message_RU: "Взять [c=#7777ff]синюю[/c] книгу", speech: false }, + { type: "func", func: () => secondboss_show_book_notify = false } + ] } + ], + "ab-983-2000-98300223": [ // Blue + { type: "event", check_func: () => secondboss_show_book_notify, args: [ + { type: "text", sub_type: "message", message: "Take Green Book", message_RU: "Взять зеленую книгу" }, + { type: "text", sub_type: "notification", message: "Take [c=#77ff77]Green[/c] Book", message_RU: "Взять [c=#77ff77]зеленую[/c] книгу", speech: false }, + { type: "func", func: () => secondboss_show_book_notify = false } + ] } + ], + "ab-983-2000-98300224": [ // Green + { type: "event", check_func: () => secondboss_show_book_notify, args: [ + { type: "text", sub_type: "message", message: "Take Red Book", message_RU: "Взять красную книгу" }, + { type: "text", sub_type: "notification", message: "Take [c=#ff7777]Red[/c] Book", message_RU: "Взять [c=#ff7777]красную[/c] книгу", speech: false }, + { type: "func", func: () => secondboss_show_book_notify = false } + ] } + ], + "s-983-2000-105-0": [{ type: "text", sub_type: "message", message: "Whip (Dodge)", message_RU: "Хлыст (эвейд)" }], + "s-983-2000-110-0": [{ type: "text", sub_type: "message", message: "Front Attack (Dodge)", message_RU: "Удар вперед (эвейд)" }], + "s-983-2000-112-0": [{ type: "text", sub_type: "message", message: "Push Back (Right)", message_RU: "Откид назад правой" }], + "s-983-2000-114-0": [{ type: "text", sub_type: "message", message: "Ground Hit (Dodge)", message_RU: "Удар в землю (эвейд)" }], + "s-983-2000-115-0": [{ type: "text", sub_type: "message", message: "Push Back (Left)", message_RU: "Откид назад левой" }], + "s-983-2000-119-0": [{ type: "text", sub_type: "message", message: "Jump (Dodge)", message_RU: "Прыжок (эвейд)" }], + "s-983-2000-120-0": [{ type: "text", sub_type: "message", message: "Front Attack | Push Back", message_RU: "Удар вперед | Откид назад" }], + "s-983-2000-206-0": [{ type: "func", func: ent => secondboss_game_id_for_book = ent.gameId }], // prepare to take the book + "s-983-2000-316-0": [{ type: "text", sub_type: "message", message: "Fire AOE", message_RU: "Огненное АОЕ" }], + "s-983-2000-306-0": [ + { type: "text", sub_type: "message", message: "Dodge | Out", message_RU: "Эвейд | От него" }, + { type: "spawn", func: "circle", args: [true, 553, 0, -50, null, 375, 0, 5000] } + ], + "s-983-2000-317-0": [{ type: "text", sub_type: "message", message: "Water AOE", message_RU: "Водяное АОЕ" }], + "s-983-2000-318-0": [ + { type: "text", sub_type: "message", message: "Dodge (Get out)", message_RU: "Эвейд (отбежать)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, -50, null, 700, 0, 7000] } + ], + "s-983-2000-324-0": [{ type: "text", sub_type: "message", message: "Dodge (Pull)", message_RU: "Эвейд (притяжка)", delay: 2400 }], + // + "s-983-1011-308-0": [{ type: "spawn", func: "circle", args: [true, 553, 0, 0, null, 305, 0, 1500] }], + "s-983-1012-308-0": "s-983-1011-308-0", + "s-983-1013-308-0": "s-983-1011-308-0", + "s-983-1014-308-0": "s-983-1011-308-0", + "s-983-1015-308-0": "s-983-1011-308-0", + // 3 BOSS + "nd-983-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-983-3000-106-0": [{ type: "text", sub_type: "message", message: "Push (Tank)", message_RU: "Откид (танк)" }], + "s-983-3000-110-0": [{ type: "text", sub_type: "message", message: "Throw Front (Stun)", message_RU: "Удар вперед (стан)" }], + "s-983-3000-113-0": [{ type: "text", sub_type: "message", message: "Push Back", message_RU: "Откид назад" }], + "s-983-3000-114-0": [{ type: "text", sub_type: "message", message: "Bait (Target)", message_RU: "Байт (таргет)" }], + "s-983-3000-116-0": [ // 116 - 117 - 118 + { type: "text", sub_type: "message", message: "Throw Back (Stun)", message_RU: "Удар назад (стан)" }, + { type: "spawn", func: "circle", args: [true, 553, 205, 410, null, 220, 0, 2000] }, + { type: "func", func: thirdboss_mech, args: [116] } + ], + "s-983-3000-119-0": [ // 119 - 120 - + { type: "text", sub_type: "message", message: "Throw Back (Stun)", message_RU: "Удар назад (стан)" }, + { type: "spawn", func: "circle", args: [true, 553, 155, 410, null, 220, 0, 2000] }, + { type: "func", func: thirdboss_mech, args: [119] } + ], + "s-983-3000-122-0": [ // 122 - 123 - 124 + { type: "text", sub_type: "message", message: "Throw (Target)", message_RU: "Удар (таргет)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 550, null, 180, 0, 2000] } + ], + "s-983-3000-123-0": [ + { type: "spawn", func: "vector", args: [553, 90, 80, 0, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 270, 80, 0, 500, 0, 2000] } + ], + "s-983-3000-124-0": [{ type: "text", sub_type: "message", message: "AoE (Dodge)", message_RU: "АоЕ (эвейд)" }], + "s-983-3000-126-0": [ + { type: "text", sub_type: "message", message: "Frontal Stun | Back Hit", message_RU: "Передний стан | Удар назад" }, + { type: "spawn", func: "vector", args: [553, 60, 220, 20, 500, 0, 2000] }, + { type: "spawn", func: "vector", args: [553, 300, 220, 340, 500, 0, 2000] } + ], + "s-983-3000-127-0": [ + { type: "spawn", func: "circle", args: [true, 553, 180, 350, null, 380, 0, 2000] } + ], + "s-983-3000-129-0": [{ type: "text", sub_type: "message", message: "Somersault | Back Hit", message_RU: "Кувырок | Удар назад" }], + "s-983-3000-130-0": [ + { type: "text", sub_type: "message", message: "Back Hit (Bleed)", message_RU: "Удар назад (кровоток)" }, + { type: "spawn", func: "circle", args: [true, 553, 180, 340, null, 250, 0, 2000] } + ], + "s-983-3000-142-0": [{ type: "text", sub_type: "message", message: "Frontal Combo", message_RU: "Передняя комба" }], + "s-983-3000-301-0": [ + { type: "text", sub_type: "message", message: "Thorns (Target)", message_RU: "Шипы х5" }, + { type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1200 } + ], + "s-983-3000-303-0": [// 303 - 304 - 305 - 308 - 305 + { type: "text", sub_type: "message", message: "Right Safe", message_RU: "Право сейф" }, + { type: "spawn", func: "marker", args: [false, 120, 250, 0, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 300, 250, 0, 3000, true, null] } + ], + "s-983-3000-305-0": [ + { type: "spawn", func: "marker", args: [false, 120, 250, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 300, 250, 0, 1500, true, null] } + ], + "s-983-3000-306-0": [ // 306 - 307 - 308 - 305 - 308 + { type: "text", sub_type: "message", message: "Left Safe", message_RU: "Лево сейф" }, + { type: "spawn", func: "marker", args: [false, 240, 250, 0, 3000, true, null] }, + { type: "spawn", func: "marker", args: [false, 60, 250, 0, 3000, true, null] } + ], + "s-983-3000-308-0": [ + { type: "spawn", func: "marker", args: [false, 240, 250, 0, 1500, true, null] }, + { type: "spawn", func: "marker", args: [false, 60, 250, 0, 1500, true, null] } + ], + "s-983-3000-309-0": [ + { type: "text", sub_type: "message", message: "Debuff!!!", message_RU: "Дебафф!!!" }, + { type: "text", sub_type: "message", message: "Lasers", message_RU: "Лазеры", delay: 3000 } + ], + "s-983-3000-315-0": [ + { type: "text", sub_type: "message", message: "Dodge | Out", message_RU: "Эвейд | От него" }, + { type: "spawn", func: "circle", args: [false, 553, 180, 0, null, 400, 0, 6000] } + ], + "s-983-3003-411-0": [{ type: "spawn", func: "vector", args: [912, 0, 0, 0, 1600, 0, 3000] }] + }; }; \ No newline at end of file diff --git a/guides/9994.js b/guides/9994.js new file mode 100644 index 00000000..74491976 --- /dev/null +++ b/guides/9994.js @@ -0,0 +1,174 @@ +// Thaumetal Refinery (Hard) +// +// made by ITunk / Vampic + +module.exports = (dispatch, handlers, guide, lang) => { + const { entity } = dispatch.require.library; + + let blue_vaccine_loc = null; + let red_vaccine_loc = null; + let road_from_gameId = null; + let temperature_boss = null; + let have_buff = null; + + function spawn_road(loc) { + const road_from_ent = entity.mobs[road_from_gameId]; + if (road_from_ent && loc) { + const angle = (road_from_ent.pos.angleTo(loc) - road_from_ent.pos.w) * 180 / Math.PI; + const distance = road_from_ent.pos.dist2D(loc); + handlers.spawn({ func: "vector", args: [476, 0, 0, angle, distance, 0, 10000] }, { loc: road_from_ent.pos }); + } + } + + dispatch.hook("S_ABNORMALITY_BEGIN", dispatch._mod.majorPatchVersion >= 107 ? 5 : 4, event => { + if (event.id === 9941030) { + if (dispatch._mod.game.me.is(event.target)) { + handlers.text({ sub_type: "message", message: "Put banana to the tree", message_RU: "Положить банан к дереву" }); + } + } + }); + + return { + // 1 BOSS + "nd-994-1000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-994-1000-103-0": [ + { type: "text", sub_type: "message", message: "AOE Stun (Dodge)", message_RU: "АОЕ стан (эвейд)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 125, null, 250, 0, 2000] } + ], + "s-994-1000-107-0": [ + { type: "text", sub_type: "message", message: "Jump (Dodge)", message_RU: "Прыжок (эвейд)" }, + { type: "spawn", func: "circle", args: [true, 553, 0, 0, null, 250, 2500, 2500] } + ], + "s-994-1000-108-1": [{ type: "text", sub_type: "message", message: "Stun Back", message_RU: "Стан назад" }], + "s-994-1000-111-0": [ + { type: "text", sub_type: "message", message: "Explosions (In)", message_RU: "Взрывы (к нему)", delay: 1000 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 275, 1000, 4000] } + ], + "s-994-1000-112-0": [ + { type: "text", sub_type: "message", message: "Explosions (Out)", message_RU: "Взрывы (от него)", delay: 1000 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 325, 1000, 4000] } + ], + "s-994-1000-113-0": [ + { type: "text", sub_type: "message", message: "Explosions (Middle)", message_RU: "Взрывы (между)", delay: 1000 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 210, 1000, 4000] }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 400, 1000, 4000] } + ], + "s-994-1000-114-0": [{ type: "text", sub_type: "message", message: "Many Attacks | Pull", message_RU: "Серия ударов | Стяжка" }], + "s-994-1000-115-0": [{ type: "text", sub_type: "message", message: "Dodge", message_RU: "Эвейд", delay: 1000 }], + "s-994-1000-116-0": [{ type: "text", sub_type: "message", message: "Gather!", message_RU: "Собраться!", delay: 3000 }], + "s-994-1000-119-0": [{ type: "text", sub_type: "message", message: "Pushback", message_RU: "Откид назад" }], + "s-994-1000-312-0": [{ type: "text", sub_type: "message", message: "Shield!", message_RU: "Щит!", delay: 2000 }], + "s-994-1000-315-0": [{ type: "text", sub_type: "message", message: "In", message_RU: "К нему" }], + "ae-0-0-9941002": [{ type: "text", sub_type: "message", message: "Eye (boss to banana)", message_RU: "Глазик (подвести босса к банану)" }], + "qb-994-1000-994008": [{ type: "text", sub_type: "message", message: "Push (Kaia)", message_RU: "Откид (кайа)" }], + + // 2 BOSS + "nd-994-2000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "s-994-2000-111-0": [{ type: "text", sub_type: "message", message: "Bait (2 stones)", message_RU: "Байт (2 камня)" }], + "s-994-2000-112-0": [{ type: "text", sub_type: "message", message: "Bait (3 stones)", message_RU: "Байт (3 камня)" }], + "s-994-2000-106-0": [{ type: "text", sub_type: "message", message: "Bait (Rock)", message_RU: "Байт (глыба)" }], + "s-994-2000-108-0": [{ type: "text", sub_type: "message", message: "Jump to Tank", message_RU: "Прыжок в танка" }], + "s-994-2000-307-0": [{ type: "text", sub_type: "message", message: "Stones", message_RU: "Камни" }], + "ae-0-0-9942006": [{ type: "text", sub_type: "message", message: "Stone on you", message_RU: "Камень на тебе", delay: 1000 }], + "s-994-2000-117-0": [{ type: "text", sub_type: "message", message: "Inward Wave", message_RU: "Волна к нему", delay: 1000 }], + "s-994-2000-118-0": [{ type: "text", sub_type: "message", message: "Outward Wave", message_RU: "Волна от него" }], + "s-994-2000-114-0": [{ type: "text", sub_type: "message", message: "Together", message_RU: "Собраться" }], + "s-994-2000-113-0": [ + { type: "text", sub_type: "message", message: "Donut (In > Out)", message_RU: "Бублик (к нему > от него)", delay: 1500 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 225, 1500, 2000] }, + { type: "text", sub_type: "message", message: "Out / Dodge", message_RU: "От него / Эвейд", delay: 3500 }, + { type: "spawn", func: "circle", args: [false, 553, 0, 0, null, 325, 3500, 3000] } + ], + "s-994-2000-110-0": [{ type: "text", sub_type: "message", message: "Hit in dd", message_RU: "Удар в дд" }], + + // 3 BOSS + "die": [{ type: "func", func: () => have_buff = null }], + "ns-994-3000": [{ type: "func", func: () => temperature_boss = null }], + "nd-994-3000": [ + { type: "stop_timers" }, + { type: "despawn_all" } + ], + "ns-994-3002": [{ type: "func", func: ent => road_from_gameId = ent.gameId }], // Колба с мобом + "ns-994-3003": [{ type: "func", func: ent => road_from_gameId = ent.gameId, delay: 1000 }], // Эксперимент(моб) + "nd-994-3003": [{ type: "func", func: () => road_from_gameId = null }], + "ns-994-3004": [{ type: "func", func: ent => blue_vaccine_loc = ent.pos }], // Синий + "ns-994-3005": [{ type: "func", func: ent => red_vaccine_loc = ent.pos }], // Красный + "s-994-3000-103-0": [{ type: "text", sub_type: "message", message: "Pushback", message_RU: "Откид назад" }], + "s-994-3000-107-0": [ + { type: "spawn", func: "vector", args: [553, 0, 0, 90, 500, 0, 5500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, -90, 500, 0, 5500] }, + { type: "text", sub_type: "message", message: "Front (Dodge)", message_RU: "Удар вперед (эвейд)", check_func: () => !temperature_boss }, + { type: "text", sub_type: "message", message: "Front | Back (Dodge)", message_RU: "Удар вперед | Удар назад (эвейд)", check_func: () => temperature_boss === "fire" }, + { type: "text", sub_type: "message", message: "Front x2 (Dodge)", message_RU: "Удар вперед x2 (эвейд)", check_func: () => temperature_boss === "ice" } + ], + "s-994-3000-108-0": [ + { type: "spawn", func: "vector", args: [553, 0, 0, 90, 500, 0, 5500] }, + { type: "spawn", func: "vector", args: [553, 0, 0, -90, 500, 0, 5500] }, + { type: "text", sub_type: "message", message: "Back (Dodge)", message_RU: "Удар назад (эвейд)", check_func: () => !temperature_boss }, + { type: "text", sub_type: "message", message: "Back x2 (Dodge)", message_RU: "Удар назад x2 (эвейд)", check_func: () => temperature_boss === "fire" }, + { type: "text", sub_type: "message", message: "Back | Front (Dodge)", message_RU: "Удар назад | Удар вперед (эвейд)", check_func: () => temperature_boss === "ice" } + ], + "s-994-3000-104-0": [{ type: "text", sub_type: "message", message: "Bait", message_RU: "Байт" }], + "s-994-3000-111-0": [ + { type: "text", sub_type: "message", message: "Out Safe", message_RU: "Снаружи сейв", check_func: () => have_buff === "ice" || !have_buff }, // ice default + { type: "text", sub_type: "message", message: "In Safe", message_RU: "Внутри сейв", check_func: () => have_buff === "fire" } + ], + "s-994-3000-112-0": [ + { type: "text", sub_type: "message", message: "In Safe", message_RU: "Внутри сейв", check_func: () => have_buff === "fire" || !have_buff }, // fire default + { type: "text", sub_type: "message", message: "Out Safe", message_RU: "Снаружи сейв", check_func: () => have_buff === "ice" } + ], + "s-994-3000-113-0": [ + { type: "text", sub_type: "message", message: "Donut (In)", message_RU: "Бублик (к нему)", check_func: () => have_buff === "ice" || !have_buff }, // ice default + { type: "text", sub_type: "message", message: "Donut (Middle)", message_RU: "Бублик (между)", check_func: () => have_buff === "fire" } + ], + "s-994-3000-114-0": [ + { type: "text", sub_type: "message", message: "Donut (Middle)", message_RU: "Бублик (между)", check_func: () => have_buff === "fire" || !have_buff }, // fire default + { type: "text", sub_type: "message", message: "Donut (In)", message_RU: "Бублик (к нему)", check_func: () => have_buff === "ice" } + ], + "s-994-3000-116-0": [ + { type: "spawn", func: "vector", args: [553, 0, 0, 90, 500, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, -90, 500, 0, 3000] }, + { type: "text", sub_type: "message", message: "Front", message_RU: "Удар вперед", check_func: () => !temperature_boss } + ], + "s-994-3000-118-0": [ + { type: "spawn", func: "vector", args: [553, 0, 0, 90, 500, 0, 3000] }, + { type: "spawn", func: "vector", args: [553, 0, 0, -90, 500, 0, 3000] }, + { type: "text", sub_type: "message", message: "Back", message_RU: "Удар назад", check_func: () => !temperature_boss } + ], + "s-994-3000-122-0": [{ type: "text", sub_type: "message", message: "Gather!", message_RU: "Собраться!" }], + "s-994-3000-125-0": [{ type: "text", sub_type: "message", message: "Bait (Puddle)", message_RU: "Байт (лужа)" }], + "s-994-3000-126-0": "s-994-3000-111-0", + "s-994-3000-127-0": "s-994-3000-112-0", + "s-994-3000-128-0": "s-994-3000-113-0", + "s-994-3000-129-0": "s-994-3000-114-0", + "s-994-3000-130-0": "s-994-3000-116-0", + "s-994-3000-301-0": [ + { type: "text", sub_type: "message", message: "Line up the puddles to blue", message_RU: "Выстроить лужи к синему" }, + { type: "func", func: () => spawn_road(blue_vaccine_loc) } + ], + "s-994-3000-302-0": [ + { type: "text", sub_type: "message", message: "Line up the puddles to red", message_RU: "Выстроить лужи к красному" }, + { type: "func", func: () => spawn_road(red_vaccine_loc) } + ], + "s-994-3000-315-0": [{ type: "text", sub_type: "message", message: "Pull", message_RU: "Стяжка" }], + "s-994-3000-316-0": "s-994-3000-315-0", + "am-994-3000-9943045": [{ type: "func", func: () => have_buff = "ice", delay: 1000 }], + "am-994-3000-9943046": [{ type: "func", func: () => have_buff = "fire", delay: 1000 }], + "ae-0-0-9943045": "am-994-3000-9943045", + "ae-0-0-9943046": "am-994-3000-9943046", + "ar-0-0-9943045": [{ type: "func", func: () => have_buff = null }], + "ar-0-0-9943046": "ar-0-0-9943045", + "ar-994-3000-9943045": "ar-0-0-9943045", + "ar-994-3000-9943046": "ar-0-0-9943045", + "qb-994-3000-994022": [{ type: "func", func: () => temperature_boss = "ice" }], + "qb-994-3000-994024": [{ type: "func", func: () => temperature_boss = "fire" }], + "qb-994-3000-994064": [{ type: "text", sub_type: "message", message: "Give stun!", message_RU: "Дать стан!" }], + "qb-994-3000-994065": [{ type: "text", sub_type: "message", message: "Gather!", message_RU: "Собраться!" }] + }; +}; \ No newline at end of file diff --git a/guides/_3016.js b/guides/_3016.js deleted file mode 100644 index f56b8d2e..00000000 --- a/guides/_3016.js +++ /dev/null @@ -1,39 +0,0 @@ -// RMHM - -let debuff_tracker_started = false; - -let debuffs_hand = { - 8888888: 3, -}; - -function start_debuffs(handlers, event, entity, dispatch) { - - const abnormality_change = (added, event) => { - if ( debuffs_hand[event.id]) { - - if (added) { - - console.log('\n ------添加------- -> ' + event.id); - } else { - // console.log('\n ----------- -> ' + bossBuffs); - } - - } - }; - if (!debuff_tracker_started) { - dispatch.hook('S_ABNORMALITY_BEGIN', 3, abnormality_change.bind(null, true)); - dispatch.hook('S_ABNORMALITY_END', 1, abnormality_change.bind(null, false)); - debuff_tracker_started = true; - } -} - - - -module.exports = { - // First boss - "h-3016- 76901-100": [{"type": "text","sub_type": "message","message": 'Throw',"message_TW": "大跳 " }, - {"type": "func","func": start_debuffs} - ], - - -}; \ No newline at end of file diff --git a/guides/_7011.js b/guides/_7011.js deleted file mode 100644 index 09275183..00000000 --- a/guides/_7011.js +++ /dev/null @@ -1,39 +0,0 @@ -// RMHM - -let debuff_tracker_started = false; - -let debuffs_hand = { - 8888888: 3, -}; - -function start_debuffs(handlers, event, entity, dispatch) { - - const abnormality_change = (added, event) => { - if ( debuffs_hand[event.id]) { - - if (added) { - - console.log('\n ------添加------- -> ' + event.id); - } else { - // console.log('\n ----------- -> ' + bossBuffs); - } - - } - }; - if (!debuff_tracker_started) { - dispatch.hook('S_ABNORMALITY_BEGIN', 3, abnormality_change.bind(null, true)); - dispatch.hook('S_ABNORMALITY_END', 1, abnormality_change.bind(null, false)); - debuff_tracker_started = true; - } -} - - - -module.exports = { - // First boss - "h-3016- 76901-100": [{"type": "text","sub_type": "message","message": 'Throw',"message_TW": "大跳 " }, - {"type": "func","func": start_debuffs} - ], - - -}; \ No newline at end of file diff --git a/guides/_7015.js b/guides/_7015.js deleted file mode 100644 index 90c4e592..00000000 --- a/guides/_7015.js +++ /dev/null @@ -1,45 +0,0 @@ -// RMHM - -let debuff_tracker_started = false; - -let debuffs_hand = { - 8888888: 3, -}; - -function start_debuffs(handlers, event, entity, dispatch) { - - const abnormality_change = (added, event) => { - if ( debuffs_hand[event.id]) { - - if (added) { - - console.log('\n ------添加------- -> ' + event.id); - } else { - // console.log('\n ----------- -> ' + bossBuffs); - } - - } - }; - if (!debuff_tracker_started) { - dispatch.hook('S_ABNORMALITY_BEGIN', 3, abnormality_change.bind(null, true)); - dispatch.hook('S_ABNORMALITY_END', 1, abnormality_change.bind(null, false)); - debuff_tracker_started = true; - } -} - - - -module.exports = { - // First boss - "h-3016- 76901-100": [{"type": "text","sub_type": "message","message": 'Throw',"message_TW": "大跳 " }, - {"type": "func","func": start_debuffs} - ], - - "h-620-1000-50": [{"type": "text","sub_type": "message","message": 'Throw',"message_TW": "大跳 " }, - {"type": "func","func": start_debuffs} - ], - - - - -}; \ No newline at end of file diff --git a/guides/_7031.js b/guides/_7031.js deleted file mode 100644 index 0d2eacc0..00000000 --- a/guides/_7031.js +++ /dev/null @@ -1,205 +0,0 @@ - -//made by michengs - -let player, entity, library, effect; -let bossBuffs = [], - meterValue = 13; - - -const BossActions = { - 208: {truth: 'Truth -> Break shield', lie: 'Lie -> Puddles (run away)'}, // "My shield will save me!" (shield) - 212: {truth: 'Truth -> Stay outside', lie: 'Lie -> Stay inside'}, // "I will kill you all!" (aoe around boss) - 218: {truth: 'Truth -> Stay outside', lie: 'Lie -> Stay inside'} // "One of you must die!" (aoe around player) -}; - -const secondBossActions = -{ - 1104: {msg: 'Frontal Spin!'}, - 2104: {msg: 'Frontal Spin!'}, - 2102: {msg: 'Back Slip (Fast)'}, - 1102: {msg: 'Back Slip (Slow)'}, - 2105: {msg: 'Tail'}, -}; - - -function skilld_event(skillid, handlers, event, ent, dispatch) { - - - if (skillid === 208 ) { - -handlers['text']({ -"sub_type": "message", -"message": (isTellingTruth() ? BossActions[208].truth : BossActions[208].lie) -}); -handlers['text']({ -"sub_type": "message", -"message": bossBuffs -}); -} - - - - - - -} - - - - - - - - - function isTellingTruth() { - let ones = meterValue % 10; - let tens = Math.floor((meterValue % 100) / 10); - - if (bossBuffs.includes(ones) || bossBuffs.includes(tens)) - { - return false; - } - return true; - } - -let debuffs_hand = { - 3000012: {truth: 'Truth -> Break shield', lie: 'Lie -> Puddles (run away)'} -}; -//let debuff_tracker_started = false; - -function start_debuffs(handlers, event, entity, dispatch) { - const abnormality_change = (added, event) => { - - debuffs = event.id - - console.log('\n S_ABNORMALITY_REFRESH -> ' + event.id); - - - - }; - - - dispatch.hook('S_ABNORMALITY_BEGIN', 3, abnormality_change.bind(null, true)); - //dispatch.hook('S_ABNORMALITY_END', 1, abnormality_change.bind(null, false)); - -} - - - - - -/* - -function start_debuffs(handlers, event, entity, dispatch) { - const abnormality_change = (added, event) => { - if ((player.isMe(event.target) || player.playersInParty.includes(event.target.toString())) && debuffs_hand[event.id]) { - - if (added) { - handlers['text']({ - "sub_type": "notification", - "message": debuffs_hand[event.id].lie - }); - } else { - handlers['text']({ - "sub_type": "notification", - "message": "ICE" - }); - } - - } - }; - - - dispatch.hook('S_ABNORMALITY_BEGIN', 3, abnormality_change.bind(null, true)); - dispatch.hook('S_ABNORMALITY_END', 1, abnormality_change.bind(null, false)); - -} - - -/* - - - dispatch.hook('S_ABNORMALITY_BEGIN', 3, (event) => { - if (!enabled || !boss) return; - - if (boss.id - event.target == 0) { - //console.log('\n S_ABNORMALITY_BEGIN -> ' + event.id); - - if (BossAbnormals[event.id]) { - if (!bossBuffs.includes(BossAbnormals[event.id])) bossBuffs.push(BossAbnormals[event.id]); - } - } - }) - - dispatch.hook('S_ABNORMALITY_END', 1, (event) => { - if (!enabled || !boss) return; - - if (boss.id - event.target == 0) { - //console.log('\n S_ABNORMALITY_END -> ' + event.id); - - let index = bossBuffs.indexOf(BossAbnormals[event.id]); - if (index > -1) bossBuffs.splice(index, 1); - } - }) - - - - - -let BossAbnormals = { - 470046: 3, - 470047: 6, - 470048: 9 -}; -let debuff_tracker_started = false; -function start_debuffs(handlers, event, entity, dispatch) { - const abnormality_change = (added, event) => { - if ((player.isMe(event.target) || player.playersInParty.includes(event.target.toString())) && BossAbnormals[event.id]) { - - if (added) { - if (!bossBuffs.includes(BossAbnormals[event.id])) bossBuffs.push(BossAbnormals[event.id]); - } else { - let index = bossBuffs.indexOf(BossAbnormals[event.id]); - if (index > -1) bossBuffs.splice(index, 1); - } - - } - }; - - if (!debuff_tracker_started) { - dispatch.hook('S_ABNORMALITY_BEGIN', 3, abnormality_change.bind(null, true)); - dispatch.hook('S_ABNORMALITY_END', 1, abnormality_change.bind(null, false)); - debuff_tracker_started = true; - } -} - - - -*/ - - - - - -module.exports = { - load(dispatch) { - ({ player, entity, library, effect } = dispatch.require.library); - }, - - // "ae-0-0-70330": [ {"type": "func","func": back_attack_HM}], - - - //不死 - "ae-0-0-3000022": [{"type": "text","sub_type": "msgcp","message_TW": '666'}, - {"type": "func","func": start_debuffs} - - ], - - //飛馬 - "ae-0-0-3000012": [{"type": "text","sub_type": "msgcp","message_TW": '6776'}, - {"type": "func","func": skilld_event.bind(null, 207)} - - ] - - -}; \ No newline at end of file diff --git a/index.js b/index.js index 1028e0e6..b9fb9e90 100644 --- a/index.js +++ b/index.js @@ -1,811 +1,15 @@ -const DispatchWrapper = require('./dispatch'); -const fs = require('fs'); -const path = require('path'); -const dbg = require('./dbg'); -// Tank class ids(brawler + lancer) -const TANK_CLASS_IDS = [1, 10]; -// Dps class ids(not counting warrior) -const DPS_CLASS_IDS = [2, 3, 4, 5, 8, 9, 11, 12]; -const MapID_RU = require('./StrSheet_RU_Dungeon.json').String; -const MapID = require('./StrSheet_Dungeon.json').String; -// Healer class ids -const HEALER_CLASS_IDS = [6, 7]; -// Warrior Defence stance abnormality ids -const WARRIOR_TANK_IDS = [100200, 100201]; -const cr = '';//RED 红色 -const co = '';//ORANGE 橘色 -const cy = '';//YELLOW 黄色 -const cg = '';//GREEN 绿色 -const cdb = '';//DARK BLUE 深蓝 -const cb = '';//BLUE 蓝色 -const cv = '';//VIOLET 紫色 -const cp = '';//PINK 粉红 -const clp = '';//LIGHT PINK 浅粉色 -const clb = '';//LIGHT BLUE 浅蓝色 -const cbl = '';//BLACK 黑色 -const cgr = '';//GRAY 灰色 -const cw = '';//WHITE 白色 -const rate1 = 1; -const rate2 = 2; -const rate3 = 3; -const rate4 = 4; -const rate5 = 5; -const rate6 = 6; -const rate7 = 7; -const rate8 = 8; -const rate9 = 9; -const rate10 = 10; - -class TeraGuide{ - constructor(dispatch) { - const fake_dispatch = new DispatchWrapper(dispatch); - const { player, entity, library, effect } = dispatch.require.library; - const command = dispatch.command; - - // An object of types and their corresponding function handlers - const function_event_handlers = { - "spawn": spawn_handler, - "despawn": despawn_handler, - "text": text_handler, - "sound": sound_handler, - "stop_timer": stop_timer_handler, - "func": func_handler, - "lib": require('./lib') - }; - if (dispatch.proxyAuthor !== 'caali') { - const options = require('./module').options; - if (options) { - const settingsVersion = options.settingsVersion; - if (settingsVersion) { - dispatch.settings = require('./' + (options.settingsMigrator || 'settings_migrator.js'))(dispatch.settings._version, settingsVersion, dispatch.settings); - dispatch.settings._version = settingsVersion; - } - } - } - - // export functionality for 3rd party modules - this.handlers = function_event_handlers; - - // A boolean for if the module is enabled or not - - // A boolean for the debugging settings - let debug = dbg['debug']; - - // A boolean indicating if a guide was found - let guide_found = false; - let spguide = false; - let esguide = false; - //let cc = cg; - // The guide settings for the current zone - let active_guide = {}; - // All of the timers, where the key is the id - let random_timer_id = 0xFFFFFFFA; // Used if no id is specified - let timers = {}; - let StrSheet_Dungeon_String = []; - let StrSheet_RU_Dungeon_String = []; - /** HELPER FUNCTIONS **/ - - // Write generic debug message used when creating guides - function debug_message(d, ...args) { - if(d) { - console.log(`[${Date.now() % 100000}][Guide]`, ...args); - - if(debug.chat) command.message(args.toString()); - } - } - - // Makes sure the event passes the class position check - function class_position_check(class_position) { - // if it's not defined we assume that it's for everyone - if(!class_position) return true; - // If it's an array - if(Array.isArray(class_position)) { - // If one of the class_positions pass, we can accept it - for(let ent of class_position) if(class_position_check(ent)) return true; - - // All class_positions failed, so we return false - return false; - } - - switch(class_position) { - case "tank": { - // if it's a warrior with dstance abnormality - if(player.job === 0) { - // Loop thru tank abnormalities - for(let id of WARRIOR_TANK_IDS) { - // if we have the tank abnormality return true - if(effect.hasAbnormality(id)) return true; - } - } - - // if it's a tank return true - if(TANK_CLASS_IDS.includes(player.job)) return true; - break; - } - case "dps": { - // If it's a warrior with dstance abnormality - if(player.job === 0) { - // Loop thru tank abnormalities - for(let id of WARRIOR_TANK_IDS) { - // if we have the tank abnormality return false - if(effect.hasAbnormality(id)) return false; - } - // warrior didn't have tank abnormality - return true; - } - - // if it's a dps return true - if(DPS_CLASS_IDS.includes(player.job)) return true; - break; - } - case "heal": { - // if it's a healer return true - if(HEALER_CLASS_IDS.includes(player.job)) return true; - break; - } - default: { - debug_message(true, "Failed to find class_position value:", class_position); - } - } - return false; - } - - // Handle events such as boss skill and abnormalities triggered - function handle_event(ent, id, called_from_identifier, prefix_identifier, d, speed=1.0, stage=false) { - const unique_id = `${prefix_identifier}-${ent['huntingZoneId']}-${ent['templateId']}`; - const key = `${unique_id}-${id}`; - const stage_string = (stage===false ? '' : `-${stage}`); - - debug_message(d, `${called_from_identifier}: ${id} | Started by: ${unique_id} | key: ${key + stage_string}`); - - if(stage !== false) { - const entry = active_guide[key + stage_string]; - if(entry) start_events(entry, ent, speed); - } - - const entry = active_guide[key]; - if(entry) start_events(entry, ent, speed); - } - - // This is where all the magic happens - function start_events(events=[], ent, speed=1.0) { - // Loop over the events - for(let event of events) { - const func = function_event_handlers[event['type']]; - // The function couldn't be found, so it's an invalid type - if(!func) debug_message(true, "An event has invalid type:", event['type']); - // If the function is found and it passes the class position check, we start the event - else if(class_position_check(event['class_position'])) func(event, ent, speed=1.0); - } - } - - /** S_ACTION_STAGE **/ - - // Boss skill action - function s_action_stage(e) { - let skillid = e.skill.id % 1000; - let eskillid; - if (e.skill.id > 3000){ eskillid = e.skill.id}else{eskillid = e.skill.id % 1000} - // If the guide module is active and a guide for the current dungeon is found - if(dispatch.settings.enabled && guide_found) { - - const ent = entity['mobs'][e.gameId.toString()]; - // Due to a bug for some bizare reason(probably proxy fucking itself) we do this ugly hack - e.loc.w = e.w; - // We've confirmed it's a mob, so it's plausible we want to act on this - if ( spguide ) { - if(ent) return handle_event(Object.assign({}, ent, e), e.skill.id, 'Skill', 's', debug.debug || debug.skill || (ent['templateId'] % 1 === 0 ? debug.boss : false), e.speed, e.stage); - } - else if ( esguide ) { - if(ent) return handle_event(Object.assign({}, ent, e), eskillid, 'Skill', 's', debug.debug || debug.skill || (ent['templateId'] % 1 === 0 ? debug.boss : false), e.speed, e.stage); - } - else{ - if(ent) return handle_event(Object.assign({}, ent, e), skillid, 'Skill', 's', debug.debug || debug.skill || (ent['templateId'] % 1 === 0 ? debug.boss : false), e.speed, e.stage); - } - } - } - dispatch.hook('S_ACTION_STAGE', 9, {order: 15}, s_action_stage); - - /** ABNORMALITY **/ - - // Boss abnormality triggered - function abnormality_triggered(e) { - // If the guide module is active and a guide for the current dungeon is found - if(dispatch.settings.enabled && guide_found) { - // avoid errors ResidentSleeper (neede for abnormality refresh) - if(!e.source) e.source = 0n; - - // If the boss/mob get's a abnormality applied to it - const target_ent = entity['mobs'][e.target.toString()]; - - // If the boss/mob is the cause for the abnormality - const source_ent = entity['mobs'][e.source.toString()]; - - // If the mob/boss applies an abnormality to me, it's plausible we want to act on this - if(source_ent && player.isMe(e.target)) handle_event(source_ent, e.id, 'Abnormality', 'am', debug.debug || debug.abnormal); - - // If "nothing"/server applies an abnormality to me, it's plausible we want to act on this. (spam rip) - if(player.isMe(e.target) && 0 == (e.source || 0)) handle_event({ - huntingZoneId: 0, - templateId: 0 - }, e.id, 'Abnormality', 'ae', debug.debug || debug.abnormal); - - // If it's a mob/boss getting an abnormality applied to itself, it's plausible we want to act on it - if(target_ent) handle_event(target_ent, e.id, 'Abnormality', 'ab', debug.debug || debug.abnormal); - } - } - dispatch.hook('S_ABNORMALITY_BEGIN', 4, {order: 15}, abnormality_triggered); - dispatch.hook('S_ABNORMALITY_REFRESH', 2, {order: 15}, abnormality_triggered); - - /** HEALTH **/ - - // Boss health bar triggered - dispatch.hook('S_BOSS_GAGE_INFO', 3, e=> { - // If the guide module is active and a guide for the current dungeon is found - if(dispatch.settings.enabled && guide_found) { - const ent = entity['mobs'][e.id.toString()]; - // We've confirmed it's a mob, so it's plausible we want to act on this - if(ent) return handle_event(ent, Math.floor(Number(e.curHp) / Number(e.maxHp) * 100), 'Health', 'h', debug.debug || debug.hp); - } - }); - - /** S_DUNGEON_EVENT_MESSAGE **/ - - dispatch.hook('S_DUNGEON_EVENT_MESSAGE', 2, e=> { - if (dispatch.settings.enabled && guide_found) { - const result = /@dungeon:(\d+)/g.exec(e.message); - if (result) { - handle_event({ - huntingZoneId: 0, - templateId: 0 - }, parseInt(result[1]), 'Dungeon Message', 'dm', debug.debug || debug.dm); - } - } - }); - - /** S_QUEST_BALLOON **/ - - dispatch.hook('S_QUEST_BALLOON', 1, e=> { - if (dispatch.settings.enabled && guide_found) { - const source_ent = entity['mobs'][e.source.toString()]; - const result = /@monsterBehavior:(\d+)/g.exec(e.message); - if (result && source_ent) { - handle_event(source_ent, parseInt(result[1]), 'Quest Balloon', 'qb', debug.debug || debug.qb); - } - } - }); - - /** MISC **/ - - // Load guide and clear out timers - dispatch.hook('S_LOAD_TOPO', 3, e=> { - // Clear out the timers - for(let key in timers) clearTimeout(timers[key]); - timers = {}; - - // Clear out previous hooks, that our previous guide module hooked - fake_dispatch._remove_all_hooks(); - - // Send debug message - debug_message(debug.debug, 'Entered zone:', e.zone); - - // Remove potential cached guide from require cache, so that we don't need to relog to refresh guide - try { - delete require.cache[require.resolve('./guides/' + e.zone)]; - }catch(e) {} - - // Try loading a guide - try { - active_guide = require('./guides/' + e.zone); - //奧盧卡 暴風拉斯 - if (3126 == e.zone || 3026 == e.zone || 9750 == e.zone || 9066 == e.zone || 9050 == e.zone || 9054 == e.zone || 9754 == e.zone || 9916 == e.zone || 9781 == e.zone || 3017 == e.zone || 9044 == e.zone || 9070 == e.zone || 9920 == e.zone || 9970 == e.zone || 9981 == e.zone) { - spguide = true; - // 技能1000 - } else if( 9000 == e.zone || 3023 == e.zone || 9759 == e.zone ) { - esguide = true; - // 技能100-200 + 3000 - } - else{ - spguide = false; - esguide = false; - // 技能100-200 - } - guide_found = true; - StrSheet_Dungeon_String = MapID.find(obj => obj.id === e.zone); - StrSheet_RU_Dungeon_String = MapID_RU.find(obj => obj.id === e.zone); - if (StrSheet_RU_Dungeon_String) { - if( spguide ) { - text_handler({"sub_type": "alert","delay": 8000,"message_RU": 'Вы вошли в ' + cr + StrSheet_RU_Dungeon_String.string, "message": ' Enter SP Dungeon: ' + cr + StrSheet_Dungeon_String.string}); - } - else if( esguide ) { - text_handler({"sub_type": "alert","delay": 8000,"message_RU": 'Вы вошли в ' + cr + StrSheet_RU_Dungeon_String.string, "message": ' Enter ES Dungeon: ' + cr + StrSheet_Dungeon_String.string}); - } - else{ - text_handler({"sub_type": "alert","delay": 8000,"message_RU": 'Вы вошли в ' + cr + StrSheet_RU_Dungeon_String.string, "message": ' Enter Dungeon: ' + cr + StrSheet_Dungeon_String.string}); - } - - } - }catch(e) { - active_guide = {}; - guide_found = false; - debug_message(debug.debug, e); - } - - // Try calling the "load" function - try { - active_guide.load(fake_dispatch); - }catch(e) { debug_message(debug.debug, e); } - }); - - // Guide command - command.add(['guide','補助','辅助'], { - // Toggle debug settings - debug(arg1) { - if(!arg1 || debug[arg1] === undefined) return command.message(`Invalid sub command for debug mode. ${arg1}`); - debug[arg1] = !debug[arg1]; - command.message(`Guide module debug(${arg1}) mode has been ${debug[arg1]?"enabled":"disabled"}.`); - }, - // Testing events - event(arg1, arg2) { - // If we didn't get a second argument or the argument value isn't an event type, we return - if(arg1 === "trigger" ? (!active_guide[arg2]) : (!arg1 || !function_event_handlers[arg1] || !arg2)) return command.message(`Invalid values for sub command "event" ${arg1} | ${arg2}`); - - // if arg2 is "trigger". It means we want to trigger a event - if(arg1 === "trigger") - start_events(active_guide[arg2], player); - else - // Call a function handler with the event we got from arg2 with yourself as the entity - function_event_handlers[arg1](JSON.parse(arg2), player); - }, - - stream() { - dispatch.settings.stream = !dispatch.settings.stream; - command.message(`仅声音提示 ${dispatch.settings.stream?"开启":"关闭"}.`); - command.message(`stream ${dispatch.settings.stream?"on":"off"}.`); - }, - - 組隊長通知() { - dispatch.settings.notice = !dispatch.settings.notice; - command.message(`虚拟队长通知已 ${dispatch.settings.notice?"开启":"关闭"}.`); - }, - 组队长通知() { - dispatch.settings.notice = !dispatch.settings.notice; - command.message(`虚拟队长通知已 ${dispatch.settings.notice?"开启":"关闭"}.`); - }, - alert() { - dispatch.settings.notice = !dispatch.settings.notice; - command.message(`Virtual captain has been ${dispatch.settings.notice?"on":"off"}.`); - }, - 組隊通知() { - dispatch.settings.systemNotice = !dispatch.settings.systemNotice; - command.message(`组队通知已 ${dispatch.settings.systemNotice?"开启":"关闭"}.`); - }, - systemNotice() { - dispatch.settings.systemNotice = !dispatch.settings.systemNotice; - command.message(`system Notice ${dispatch.settings.systemNotice?"on":"off"}.`); - }, - - cr() { - command.message( cr +"系统消息通知颜色红色"); - command.message(cr + ' system message notification color is red '); - dispatch.settings.cc.splice(0,1, cr ); - }, - cc() { - - command.message( dispatch.settings.cc +"查看系统消息通知颜色"); - command.message(dispatch.settings.cc + 'View the current system message notification color'); - }, - co() { - command.message( co +"系统消息通知颜色橘色"); - command.message(co + ' system message notification color is ORANGE '); - dispatch.settings.cc.splice(0,1, co); - }, - cy() { - command.message( cy +"系统消息通知颜色黄色"); - command.message(cy + ' system message notification color is YELLOW '); - dispatch.settings.cc.splice(0,1, cy); - }, - cg() { - command.message( cg +"系统消息通知颜色绿色"); - command.message(cg + ' system message notification color is GREEN '); - dispatch.settings.cc.splice(0,1, cg); - }, - cdb() { - - command.message( cdb +"系统消息通知颜色深蓝色"); - command.message(cdb + ' system message notification color is DARK BLUE '); - dispatch.settings.cc.splice(0,1, cr); - }, - cb() { - - command.message( cb +"系统消息通知颜色蓝色"); - command.message(cb + ' system message notification color is BLUE '); - dispatch.settings.cc.splice(0,1, cb); - }, - cv() { - command.message( cv +"系统消息通知颜色紫色"); - command.message(cv + ' system message notification color is VIOLET '); - dispatch.settings.cc.splice(0,1, cv); - }, - cp() { - - command.message( cp +"系统消息通知颜色粉色"); - command.message(cp + ' system message notification color is PINK '); - dispatch.settings.cc.splice(0,1, cp); - }, - clp() { - - command.message( clp +"系统消息通知颜色浅粉色"); - command.message(clp + ' system message notification color is LIGHT PINK '); - dispatch.settings.cc.splice(0,1, clp); - }, - clb() { - - command.message( clb +"系统消息通知颜色浅蓝色"); - command.message(clb + ' system message notification color is LIGHT BLUE '); - dispatch.settings.cc.splice(0,1, clb); - }, - cbl() { - - command.message( cbl +"系统消息通知颜色黑色"); - command.message(cbl + ' system message notification color is BLACK '); - dispatch.settings.cc.splice(0,1, cbl); - }, - cgr() { - command.message(cgr + ' system message notification color is GRAY '); - command.message( cgr +"系统消息通知颜色灰色"); - dispatch.settings.cc.splice(0,1, cgr); - }, - cw() { - - command.message( cw +"系统消息通知颜色白色"); - command.message(cw + ' system message notification color is WHITE '); - dispatch.settings.cc.splice(0,1, cw); - }, - - help() { - command.message('補助 ,副本補助开/关 ,默认系统通知,通知颜色为绿色'); - command.message('補助 语音,副本補助语音开/关'); - command.message('補助 组队通知, 组队通知开/关'); - command.message('補助 组队长通知,组队长通知开/关'); - command.message('補助 1~10,调节语音速度10为最快语速,默认为1正常速度'); - command.message(dispatch.settings.cc + '補助 cc,查看当前系统消息通知颜色'); - command.message(cr + '補助 cr,系统消息通知颜色为红色 '); - command.message(co + '補助 co,系统消息通知颜色为橙色 '); - command.message(cy + '補助 cy,系统消息通知颜色为黄色 '); - command.message(cg + '補助 cg,系统消息通知颜色为绿色 '); - command.message(cdb + '補助 cdb,系统消息通知颜色为青色 '); - command.message(cb + '補助 cb,系统消息通知颜色为蓝色 '); - command.message(cv + '補助 cv,系统消息通知颜色为紫色 '); - command.message(cp + '補助 cp,系统消息通知颜色为粉红色 '); - command.message(clp + '補助 clp,系统消息通知颜色为浅粉色 '); - command.message(clb + '補助 clb,系统消息通知颜色为浅蓝色 '); - command.message(cbl + '補助 cbl,系统消息通知颜色为黑色 '); - command.message(cgr + '補助 cgr,系统消息通知颜色为灰色 '); - command.message(cw + '補助 cw,系统消息通知颜色为白色 '); - command.message('guide stream,主播模式(stream)on/off'); - command.message('guide, on/off, default system notification, notification color green '); - command.message('guide voice,text-to-speech on/off'); - command.message('guide alert, Virtual captain notifie on/off'); - command.message('guide systemNotice,system Notice on/off'); - command.message('guide 1~10,to settings Voice speed'); - command.message(dispatch.settings.cc + 'guide cc,View the current system message notification color'); - command.message(cr + 'guide cr, system message notification color is red '); - command.message(co + 'guide co, system message notification color is ORANGE '); - command.message(cy + 'guide cy, system message notification color is YELLOW '); - command.message(cg + 'guide cg, system message notification color is GREEN '); - command.message(cdb + 'guide cdb, system message notification color is DARK BLUE '); - command.message(cb + 'guide cb, system message notification color is BLUE '); - command.message(cv + 'guide cv, system message notification color is VIOLET '); - command.message(cp + 'guide cp, system message notification color is PINK '); - command.message(clp + 'guide clp, system message notification color is LIGHT PINK '); - command.message(clb + 'guide clb, system message notification color is LIGHT BLUE '); - command.message(cbl + 'guide cbl, system message notification color is BLACK '); - command.message(cgr + 'guide cgr, system message notification color is GRAY '); - command.message(cw + 'guide cw, system message notification color is WHITE '); - }, - $default() { - dispatch.settings.enabled = !dispatch.settings.enabled; - command.message(`副本補助已 ${dispatch.settings.enabled?"on":"off"}.`); - command.message(`guide ${dispatch.settings.enabled?"on":"off"}.`); - } - }); - - /** Function/event handlers for types **/ - - // Spawn handler - function spawn_handler(event, ent, speed=1.0) { - if(dispatch.settings.stream) return; - // Make sure id is defined - if(!event['id']) return debug_message(true, "Spawn handler needs a id"); - // Make sure sub_delay is defined - if(!event['sub_delay']) return debug_message(true, "Spawn handler needs a sub_delay"); - // Make sure distance is defined - //if(!event['distance']) return debug_message(true, "Spawn handler needs a distance"); - // Ignore if dispatch.settings.streamer mode is enabled - - - // Set sub_type to be collection as default for backward compatibility - const sub_type = event['sub_type'] || 'collection'; - - // The unique spawned id this item will be using. - const item_unique_id = event['force_gameId'] || random_timer_id--; - - // The location of the item spawned - let loc = ent['loc'].clone(); - - // if pos is set, we use that - if(event['pos']) loc = event['pos']; - - loc.w = (ent['loc'].w || 0) + (event['offset'] || 0); - library.applyDistance(loc, event['distance'] || 0 ,event['degrees'] || 0); - - let sending_event = { - gameId: item_unique_id, - loc: loc, - w: loc.w - }; - - const despawn_event = { - gameId: item_unique_id, - unk: 0, // used in S_DESPAWN_BUILD_OBJECT - collected: false // used in S_DESPAWN_COLLECTION - }; - - // Create the sending event - switch(sub_type) { - // If it's type collection, it's S_SPAWN_COLLECTION - case "collection": { - Object.assign(sending_event, { - id: event['id'], - amount: 1, - extractor: false, - extractorDisabled: false, - extractorDisabledTime: 0 - }); - break; - } - // If it's type item, it's S_SPAWN_DROPITEM - case "item": { - Object.assign(sending_event, { - item: event['id'], - amount: 1, - expiry: 0, - explode: false, - masterwork: false, - enchant: 0, - debug: false, - owners: [] - }); - break; - } - // If it's type build_object, it's S_SPAWN_BUILD_OBJECT - case "build_object": { - Object.assign(sending_event, { - itemId : event['id'], - unk : 0, - ownerName : event['ownerName'] || '', - message : event['message'] || '' - }); - break; - } - // If we haven't implemented the sub_type the event asks for - default: { - return debug_message(true, "Invalid sub_type for spawn handler:", event['sub_type']); - } - } - - // Create the timer for spawning the item - timers[item_unique_id] = setTimeout(()=> { - switch(sub_type) { - case "collection": return dispatch.toClient('S_SPAWN_COLLECTION', 4, sending_event); - case "item": return dispatch.toClient('S_SPAWN_DROPITEM', 8, sending_event); - case "build_object": return dispatch.toClient('S_SPAWN_BUILD_OBJECT', 2, sending_event); - } - }, event['delay'] || 0 / speed); - - // Create the timer for despawning the item - timers[random_timer_id--] = setTimeout(()=> { - switch(sub_type) { - case "collection": return dispatch.toClient('S_DESPAWN_COLLECTION', 2, despawn_event); - case "item": return dispatch.toClient('S_DESPAWN_DROPITEM', 4, despawn_event); - case "build_object": return dispatch.toClient('S_DESPAWN_BUILD_OBJECT', 2, despawn_event); - } - }, event['sub_delay'] / speed); - } - - // Despawn handler - function despawn_handler(event) { - // Make sure id is defined - if(!event['id']) return debug_message(true, "Spawn handler needs a id"); - // Ignore if dispatch.settings.streamer mode is enabled - - if(dispatch.settings.stream) return; - // Set sub_type to be collection as default for backward compatibility - const sub_type = event['sub_type'] || 'collection'; - - const despawn_event = { - gameId: event['id'], - unk: 0, // used in S_DESPAWN_BUILD_OBJECT - collected: false // used in S_DESPAWN_COLLECTION - }; - - switch(sub_type) { - case "collection": return dispatch.toClient('S_DESPAWN_COLLECTION', 2, despawn_event); - case "item": return dispatch.toClient('S_DESPAWN_DROPITEM', 4, despawn_event); - case "build_object": return dispatch.toClient('S_DESPAWN_BUILD_OBJECT', 2, despawn_event); - default: return debug_message(true, "Invalid sub_type for despawn handler:", event['sub_type']); - } - } - // Text handler - function text_handler(event, ent, speed=1.0) { - // Fetch the message(with region tag) - const message = event[`message_${dispatch.region}`] || event[`message_${dispatch.region.toUpperCase()}`] || event['message']; - // Make sure sub_type is defined - if(!event['sub_type']) return debug_message(true, "Text handler needs a sub_type"); - // Make sure message is defined - if(!message) return debug_message(true, "Text handler needs a message"); - - let sending_event = {}; - let sending_events = {}; - // Create the sending event - switch(event['sub_type']) { - // If it's type message, it's S_DUNGEON_EVENT_MESSAGE with type 41 - //混合通知 - case "message": { - timers[event['id'] || random_timer_id--] = setTimeout(()=> { - - sendMessage(message); - }, (event['delay'] || 0 ) /speed); - break; - } - case "msgcp": { - timers[event['id'] || random_timer_id--] = setTimeout(()=> { - - - sendspMessage(message,cp); - }, (event['delay'] || 0 ) /speed); - break; - } - case "msgcg": { - timers[event['id'] || random_timer_id--] = setTimeout(()=> { - - - sendspMessage(message,cg); - }, (event['delay'] || 0 ) /speed); - break; - } - - //组队长通知 - case "alert": { - if(dispatch.settings.stream) return; - sending_event = { - channel: 21, - authorName: 'guide', - message - }; - break; - } - case "MSG": { - if(dispatch.settings.stream) return; - timers[event['id'] || random_timer_id--] = setTimeout(()=> { - command.message( cr + message ); - console.log( cr + message ); - }, (event['delay'] || 0 ) - 600 /speed); - - break; - } - case "PRMSG": { - if(dispatch.settings.stream) return; - command.message( cr + message ); - break; - } - //团队长通知 - case "notification": { - if(dispatch.settings.stream) return; - sending_event = { - channel: 25, - authorName: 'guide', - message - }; - break; - } - default: { - return debug_message(true, "Invalid sub_type for text handler:", event['sub_type']); - } - } - - // Create the timer - timers[event['id'] || random_timer_id--] = setTimeout(()=> { - - switch(event['sub_type']) { - // case "message": return dispatch.toClient('S_DUNGEON_EVENT_MESSAGE', 2, sending_events); - case "notification": return dispatch.toClient('S_CHAT', 3, sending_event); - case "alert": return dispatch.toClient('S_CHAT', 3, sending_event); - - } - - /* - else { - // If dispatch.settings.streamer mode is enabled, send message all messages to party chat instead - // return dispatch.toClient('S_CHAT', 2, { channel: 1, authorName: config['chat-name'], message }); - } - */ - }, (event['delay'] || 0 ) / speed); - } - function sendMessage(message) { - if(dispatch.settings.stream){ - command.message( dispatch.settings.cc + message ); - return; - } - if (dispatch.settings.notice) { - dispatch.toClient('S_CHAT', 3, { - channel: 21, //21 = p-notice, 1 = party, 2 = guild - message - }); - } else if(dispatch.settings.systemNotice) { - dispatch.toClient('S_CHAT', 3, { - channel: 1, //21 = p-notice, 1 = party, 2 = guild - message - }); - } else { - - dispatch.toClient('S_DUNGEON_EVENT_MESSAGE', 2, { - type: 42, - chat: 0, - channel: 27, - message: ( dispatch.settings.cc + message ) //---------------------------------------------------------------------- - }); - } - } - function sendspMessage(message,spcc) { - if(dispatch.settings.stream) return; - dispatch.toClient('S_DUNGEON_EVENT_MESSAGE', 2, { - type: 42, - chat: 0, - channel: 27, - message: ( spcc + message ) //---------------------------------------------------------------------- - }); - - } - // Sound handler - function sound_handler(event, ent, speed=1.0) { - // Make sure id is defined - if(!event['id']) return debug_message(true, "Sound handler needs a id"); - // Ignore if dispatch.settings.streamer mode is enabled - if(dispatch.settings.stream) return; - - // Create the timer - timers[event['id']] = setTimeout(()=> { - // Send the sound - dispatch.toClient('S_PLAY_SOUND', 1, { - SoundID: event['id'] - }); - }); - } - - // Stop timer handler - function stop_timer_handler(event, ent, speed=1.0) { - // Make sure id is defined - if(!event['id']) return debug_message(true, "Stop timer handler needs a id"); - - // Check if that entry exists, if it doesn't print out a debug message. This is because users can make mistakes - if(!timers[event['id']]) return debug_message(true, `There isn't a timer with tie id: ${event['id']} active`); - - // clearout the timer - clearTimeout(timers[event['id']]); - } - - // Func handler - function func_handler(event, ent, speed=1.0) { - // Make sure func is defined - if(!event['func']) return debug_message(true, "Func handler needs a func"); - - // Start the timer for the function call - timers[event['id'] || random_timer_id--] = setTimeout(event['func'], (event['delay'] || 0) / speed, function_event_handlers, event, ent, fake_dispatch); - } - - } -} - -module.exports = TeraGuide; +"use strict"; + +module.exports.NetworkMod = function (mod) { + try { + mod.require["tera-guide-core"].load(mod, { + languages: ["en", "ru"], // supported languages + colors: { gui: {}, general: {} }, // color settings + command: ["guide"], // module command + chat_name: "Guide", // set chat author name for notices + }); + } catch (e) { + mod.error("Warning!\nDepended module \"tera-guide-core\" needed for TERA-Guide is not installed!\nPlease download and install: https://github.com/hsdn/tera-guide-core\n"); + throw e; + } +}; \ No newline at end of file diff --git a/lang/dungeons.js b/lang/dungeons.js new file mode 100644 index 00000000..aa279a78 --- /dev/null +++ b/lang/dungeons.js @@ -0,0 +1,29 @@ +"use strict"; + +// Available names for additional languages +module.exports = { + 7011: { + "en": "Shadow of the Gutrends (Guardian)", + "ru": "Живодеры и черная тень (хранитель)" + }, + 7015: { + "en": "Escape from Balder's Refuge (Guardian)", + "ru": "Спасти Убежище Балдера (хранитель)" + }, + 3040: { + "en": "Lumikan's Trial", + "ru": "Сонный паралич Лукмии (Подземелье испытаний)" + }, + 3042: { + "en": "Gardan's Trial", + "ru": "Место казни (Подземелье испытаний)" + }, + 3043: { + "en": "Harnovog's Trial", + "ru": "Крепость Тенебриса (Подземелье испытаний)" + }, + 3046: { + "en": "Rogash's Trial", + "ru": "Лаборатория слияния (Подземелье испытаний)" + } +}; \ No newline at end of file diff --git a/lang/strings.js b/lang/strings.js new file mode 100644 index 00000000..0851bc10 --- /dev/null +++ b/lang/strings.js @@ -0,0 +1,67 @@ +"use strict"; + +// Available strings for additional languages +// If no language is found, the default language (English) will be displayed +module.exports.general = { + + // Русский + ru: { + unknowncommand: "Невереная команда, введите guide help", + helpheader: "Введите \"guide help\" для вывода справки", + helpbody: [ + ["guide, вкл./выкл. модуля", "PRMSG"], + ["guide gui, показать графический интерфейс", "PRMSG"], + ["guide voice, вкл./выкл. голосовые сообщения", "PRMSG"], + ["guide lNotice, вкл./выкл. отправки уведомлений в чата вместо экранных", "PRMSG"], + ["guide gNotice, вкл./выкл. отправки сообщений в чат группы", "PRMSG"], + ["guide auto~en~ru, выбор языка перевода", "PRMSG"], + ["guide male~female, выбор пола диктора голосовых сообщений (если доступно)", "PRMSG"], + ["guide 1~10, регулировка скорости чтения голосовых сообщений", "PRMSG"], + ["guide spawnObject, вкл./выкл. спауна маркировочных объектов", "PRMSG"], + ["guide stream, вкл./выкл. режима стрима (скрытие сообщений и объектов)", "PRMSG"], + ["guide dungeons, список всех поддерживаемых данжей и их id", "PRMSG"], + ["guide verbose id, вкл./выкл. всех сообщений для данжа, где id - идентификатор данжа", "PRMSG"], + ["guide spawnObject id, вкл./выкл. спауна объектов для данжа, где id - идентификатор данжа", "PRMSG"], + ["guide cr, установить цвет сообщения: красный", "CRMSG"], + ["guide co, установить цвет сообщения: оранжевый", "COMSG"], + ["guide cy, установить цвет сообщения: желтый", "CYMSG"], + ["guide cg, установить цвет сообщения: зеленый", "CGMSG"], + ["guide cdb, установить цвет сообщения: темно-синий", "CDBMSG"], + ["guide cb, установить цвет сообщения: синий", "CBMSG"], + ["guide cv, установить цвет сообщения: фиолетовый", "CVMSG"], + ["guide cp, установить цвет сообщения: розовый", "CPMSG"], + ["guide clp, установить цвет сообщения: светло-розовый", "CLPMSG"], + ["guide clb, установить цвет сообщения: светло-синий", "CLBMSG"], + ["guide cbl, установить цвет сообщения: черный", "CBLMSG"], + ["guide cgr, установить цвет сообщения: серый", "CGRMSG"], + ["guide cw, установить цвет сообщения: белый", "CWMSG"] + ], + red: "Красный", + green: "Зеленый", + settings: "Настройки", + spawnObject: "Спаун маркировочных объектов", + speaks: "Голосовые сообщения", + lNotice: "Уведомления в чат вместо экранных", + gNotice: "Сообщения в канал чата группы", + stream: "Режим стримера (скрытие сообщений и объектов)", + language: "Выбор языка", + voice: "Голос (пол)", + rate: "Скорость речи", + color: "Выбор цвета", + dungeons: "Настройки данжей", + verbose: "Сообщения", + objects: "Объекты", + test: "Проверка", + module: "Модуль TERA-Guide", + enabled: "Вкл.", + disabled: "Выкл.", + male: "Мужской", + female: "Женский", + voicetest: "[Проверка скорости чтения сообщений]", + colorchanged: "Цвет текста сообщений изменен", + dgnotfound: "Данж с таким id не найден.", + dgnotspecified: "Не указан id данжа.", + enterdg: "Вы вошли в данж", + fordungeon: "для данжа" + } +}; \ No newline at end of file diff --git a/lib.js b/lib.js deleted file mode 100644 index f8d52ea6..00000000 --- a/lib.js +++ /dev/null @@ -1,37 +0,0 @@ -const {Vec3} = require('tera-data-parser').types; - -let global_gameId_tracker = 1; - -/** - * Create entities in a circle - * @param {*} handlers handlers reference passed from main - * @param {*} event_data parameteres for the data - see docs - * @param {*} entity_count how many of the entity to spawn - * @param {*} center where the center location is - * @param {*} distance_from_center how far from center the entity should be spawned - * - * Returns an array of all the gameIds used to spawn these entities - */ -function create_entities_in_circle(handlers, event_data, entity_count, center, distance_from_center) { - center = new Vec3(center); - let ret = []; - - for(let angle = -Math.PI; angle <= Math.PI; angle += (2 * Math.PI / entity_count)) { - const gameId = global_gameId_tracker++; - ret.push(gameId); - - handlers['spawn'](Object.assign(event_data, { - offset: angle, - distance: distance_from_center, - force_gameId: gameId - }), { - loc: center - }); - } - - return ret; -} - -module.exports = { - create_entities_in_circle -}; \ No newline at end of file diff --git a/manifest.json b/manifest.json index 1789187e..f70aeecb 100644 --- a/manifest.json +++ b/manifest.json @@ -1,73 +1,74 @@ { "files": { - "dbg.json": "443a13a9da6c4f3139d2e85726ea9f6ea8f6b32cd16db3e38723de97117a9df6", - "dispatch.js": "8550f756e05b171839867491a9f52385f1aef8bfbbed3c80e0afe6aff1d53902", - "guides/3017.js": "cf369ac4389dfba436cf837cbb5698f1a6ba11fd9deaf7dd464ecf8fb9610ab2", - "guides/3018.js": "484be76558c5b01388221fe9cbe75195437332dc2cedba5f1a45c415b8fa4953", - "guides/3019.js": "77404459171b7cef74f7b9325937add345f28a1aaa72b85f2ac11d82be2bbd71", - "guides/3020.js": "912f7f4c469a6f809c77ce55ab0d789a0c22dfd14b37ec5f51862def636ba031", - "guides/3023.js": "2c8903fe00182d08d2af0166ecfe455cdfe09657fd3f39b3b39a2bab6490598e", - "guides/3026.js": "e9905149be051c59fd2ec85ce0f6084356e16df6fbce031f12bd76b8534da6d1", - "guides/3027.js": "94e72c8dc32eac9c5a4e831a4d6e8083edc86b4fb44cd32df03748fcc77404bc", - "guides/3101.js": "e3db5ac49c639cb69905df225f9feec838a539e4c92341224b6840dc18028802", - "guides/3126.js": "fcae11af73d979042d5ba222f1ef9e01b87ee06494b351482c13687b5cc5d221", - "guides/3201.js": "512c36f497f4b448d6905ca1aa58058567265c27fd8d72166fa1f15f4702aaa5", - "guides/9034.js": "e6aa63be7be3c4efb0c87daa7c294c8dfc762c7e61cac5a1ba50e2b679bab78a", - "guides/9044.js": "74b9213c6c13976459ca9c011f70a76aa0962c86d6e3c72b78b20927d185c0ef", - "guides/9050.js": "1689bb3305b9789458651943d68342ec330448346de1c7649b1cf84707613dcd", - "guides/9054.js": "b601d3f33859c26f1dee73abe201495da942fb04b2ec6cb6e2890f47f985c005", - "guides/9059.js": "628e3d4b7db8e75b04eb2ba0b6e65b1d8c1edb55710d2d10b4cdbb617bf4ffb9", - "guides/9066.js": "8c3e962b743d4c15a67eb9a3de965c8558f27ace4e2d08305bdfe22518d4179b", - "guides/9067.js": "d0c0861124905e967d311c36a875ffc1743f5d605165f768fccf4a43d08e10b9", - "guides/9070.js": "af0d8d83f69477edbbca8bc074df84235864c6cc8ca6179bd0d56e83603633f7", - "guides/9720.js": "11e2e0e123974a6702f32d224957fbc5b7645abbaee529ea5476faf4766063e4", - "guides/9735.js": "4708a9d7231c0922ea63bd0a1851d4f704bb22197d9816233da0e4a0b3229e6e", - "guides/9750.js": "db7b7a402df472f0e8cb4b9817dbb2dfd61116e0d7d41cc51363b2b33e05aaaa", - "guides/9754.js": "fef79b45660ee202deabf1bfdc816f632b0612fcc11ea61636cd77f5ae9bdc74", - "guides/9759.js": "2e52ccf29ad5a02d14a6e64d0eff4674d118ea57ada431254db671c1d6e30e8b", - "guides/9781.js": "f58c838e2cbf4f9a1653ae12629d6eb1837e557cdbbbb49669bc0695765a7919", - "guides/9782.js": "946649b88bbb5fee6e1fe605eba39489a4f6767d4fc2bd4f667a000d97d4dd69", - "guides/9783.js": "7e83d7ffa2dd668c0902f9b1d8741edcdaa8a80373e2ef30716550dd683c8e57", - "guides/9916.js": "89157ff3372477ce7452cb5feb62212b1b6f482cdab3ea6b96d63c749972b9d3", - "guides/9920.js": "886efee410d6849df04b99be93bdbf87a091b7857436058bf104a4a014b5b367", - "guides/9935.js": "ecada2ab44cb716ec972c420232daa5708c4ad6837908c71b7320831391936d3", - "guides/9939.js": "03b379b5719192e6dfb588cd94e4b66d8ec49207fceadb139ab31e2ae97ad636", - "guides/9950.js": "0fb0b498014e40cd09ccf6436f2a61f60fa600936b8ecb77a42cbc2bab891093", - "guides/9970.js": "c37bc9a3a2086d0172c79df15489f9034344bcedcc19e9ea657de5951d204a53", - "guides/9981.js": "0bfdb67a9dcefc6c7a424fde86e3b78b3584a669e5cdb1293cb176d2fafda8e3", - "guides/9982.js": "e25cb415edfc87e6d7bc565bcb976702aa7800bebbf0a950159a7f7afc6e14e2", - "guides/9983.js": "2de12f1cd045b64cdae998c72866b6d5ea4891e2f34d77cb6b7b23ddde2328a2", - "guides/_3016.js": "cfcca547ceffd87dc8e6d2f62148fabba2fbd6fc6414f338ee15ba32f6082069", - "guides/_7011.js": "f6cf9a717b2f6ad06c04626690b0fe087adb4ac2f2d72f9f925691cd5e605369", - "guides/_7015.js": "ba2cd4143171cd421f6f501da440bcd5239287001d8e942a7b351f67e9bf7644", - "guides/_7031.js": "cb969c697d9c461a38426d45c378650aa4116bf8ef642bb24f4963168bd2787a", - "index.js": "be31b1bc2feb583f136dc41d1c85b1cdfb40e5e71bd077db430b80f05892a87d", - "lib.js": "513df666094c096340348f1c87acef9b7406c30f0873f267d207824c89193d40", - "LICENSE": "7f2ae2125b491e75c546a5d538f82ad4431d5d6b1bbd4aea724864a21daeca63", - "module.json": "349ea753f5f267dca98c7e9a0620be1cf6bc1bcecb426730626fc597ee61e57f", - "README.md": "270e6bd034c3cdb1b48e18a5607bec84cedaaf000757ba34ea4e3242046d9454", - "settings_migrator.js": "29f0155aa11d5f8c8012c65ff022f229e29c0e2ce5d791032c789bca6b5956ba", - "StrSheet_Dungeon.json": "d8aaf4687808bf20d37ec9209cef4acbda91c389b599203469786e964a8600c6", - "StrSheet_RU_Dungeon.json": "44fafd827be76d9f3dbd4ecfd1fc67beab14527463f79ead063e1ffa261f3806" - - }, - "defs": { - "S_ABNORMALITY_BEGIN": 4, - "S_ABNORMALITY_END": 1, - "S_ABNORMALITY_REFRESH": 2, - "S_ACTION_STAGE": 9, - "S_BOSS_GAGE_INFO": 3, - "S_CHAT": 3, - "S_DESPAWN_BUILD_OBJECT": 2, - "S_DESPAWN_COLLECTION": 2, - "S_DESPAWN_DROPITEM": 4, - "S_DUNGEON_EVENT_GAGE": 1, - "S_DUNGEON_EVENT_MESSAGE": 2, - "S_LOAD_TOPO": 3, - "S_PLAY_SOUND": 1, - "S_QUEST_BALLOON": 1, - "S_SPAWN_BUILD_OBJECT": 2, - "S_SPAWN_COLLECTION": 4, - "S_SPAWN_DROPITEM": 8 + "LICENSE": "7fbe35da1c4792b039cd14af60048ea6813b743bd6e05ecef7a68023b50f5a43", + "README.md": "49921a111b40e1204e07adad329edc76b5ebf7ca5337bff49a3ded5ed27a0567", + "guides/2800.js": "69985782d759b407f53cf6d5c92e9d9b89aab9118be48ee49a6762debea861a8", + "guides/3023.js": "1959f9a885606ea64f207184bd38e860196a6eff8b10ba332644416b4ceea7ad", + "guides/3026.js": "ff23485206605241aa049b2080b7fbc67ad756be9ad3101f1615b131ec96e9e5", + "guides/3027.js": "83dc96046c91eaa5dc9d18d9f649642e9c0e7f7154ecbcb373c9269faf16af63", + "guides/3030.js": "e3180ff65a1ed4bf269b1164719d86cc44c3151e24b4e59b948abcbdd8384a84", + "guides/3032.js": "336996a4a3fabeef4b6d90c77fb0b84a5f696fb9b019716bf1b37b04e37003ab", + "guides/3034.js": "eff4e8f10579c0ff255ebbe327d6bbe2c565ddad7905d262e8e7c67cda76853d", + "guides/3036.js": "1c096dae175d8d7831196387924bda4a33b307bd3045a839f73bfd7da27be4f4", + "guides/3037.js": "3f1d726379080a7a014eeec14e0c757d22ff8e4923fa6d395d6a8f2e52d23afa", + "guides/3101.js": "8a384ed3f777a90351ab8d903492ee2054462b0ce6b0894aeeac395ab22c6a8f", + "guides/3102.js": "5725a922a78cae3f5215f9f44e1fec9319160e3f65e225c45568b86c1a9f600e", + "guides/3103.js": "9a42e4b66954b95d99469001e1857f818fb9443cafe0dc2ed4dea34047c377cc", + "guides/3104.js": "47aeff6d9ae5f7bbc2e1d0fc7e29fdbc58d7b5f51240843600d9900cb3b6b3e2", + "guides/3106.js": "a5485af91dc71c2ff4ca3d83e3469043d787b1d121110885139ee3fa47e55072", + "guides/3107.js": "dae1d54d414143a6d98d3a0c8ceb8d06b490fb3a8d0da625ba3713654941680f", + "guides/3123.js": "d061aa0b3bf4115700c4763a73babaab0ea19a28c4661e07e92a5890f5498fc8", + "guides/3126.js": "16717e0725fd0b9364ca5afa6bc077d9503b900d80abf88f72cd2db83d449cc1", + "guides/3201.js": "36cbea3cc5c258d4c244659c4fe01eeecdb5dcef21cd3ab1bb81cf6a1d73ec6e", + "guides/3202.js": "b30a66b3f95cbf712140b15e73e525535aae29bb519f8bc2fa19c20dd67f39c2", + "guides/3203.js": "e48fe4b22ab154d5882bbc1ba2081c2ca4b29c1fc42d8fb1e1642238d30d6049", + "guides/3204.js": "f72578b0517b790cdb3fdbac9d30fd14294787d99740d130be4db1af69b7ef26", + "guides/3206.js": "a1444026e0000907cde174aafeb9c7898bfb5ccf0bb373f05519495951b56faa", + "guides/7011.js": "a8bec81fe8d60268568425dc5ce47779b2e1897406db0b51bdcfe042c14132b1", + "guides/7015.js": "f559103c9ac65a9f10f907f75bf5bb44a5e0ba700626a379411899d70057e179", + "guides/9027.js": "f37cffceebc7baa3c6eb8dd3ee011e6a457c09afae5756f7e4ecbc0ed0727001", + "guides/9034.js": "580a7c43c07ff02e5f49ad451f96fceca8c4af335898595a0abf00f48022a4a6", + "guides/9044.js": "fd02f263aed242f1d360eba462c6a6aea9e89ce9c5b50c415c6624ff35cd435c", + "guides/9050.js": "7d2216728bdf6b09b83c192a58a621272c11fccb0fed92eac3712af2be9de50d", + "guides/9053.js": "dc9c5b647d622ad700437c067fc53e4689c39621863d9da9dff15ad73fd1b554", + "guides/9054.js": "8b512dfddcf1b9a91dca04a119b43ddfc2b4147db7592eeba96ff2390a17111d", + "guides/9056.js": "fc5cb5dc1c6e6621ea0522235593262be89b2f3297b14200ec06edc3a56a539d", + "guides/9057.js": "f4573b62d83d332c25209db4858faafd9da3e7e2ea32fc4a1bfa2e90dcf88e8a", + "guides/9066.js": "fcbd27cc95fc3b3e3bd5354412c9448a1941207f424ed442b36c4202beba87ef", + "guides/9067.js": "a72f4442d0754a5ad0db52503c5e0a30bf30ecd6c3da85c21212a5b854338041", + "guides/9068.js": "58b27bdb409dac63e71f4db0ccccbbcf78e04df93745939f84a90a8b06e9b338", + "guides/9070.js": "c69224e5118184c330b792986c12ed0b82b6f27992d375b17d5e6c45bbbed9eb", + "guides/9710.js": "42c3bef1a896deb4cc2212e773cddc7fc257ba94bba39f2bf77b24ca0a0fb73f", + "guides/9716.js": "b7b344c88f650292e7bb2abd71445c5b695f5f22d6785b5ea9e55bffcfd3dcb3", + "guides/9720.js": "8b208a163e80de0ed668bb3e53fcde7c4d1312aeb03ea74089b45c3861c3571a", + "guides/9735.js": "c4ff6f7fd3108f309d0b7377b6f77ec2fef85372c19e23033c3ec7f1202d93dd", + "guides/9739.js": "9b3c7b7b710272808146808e7754313707e60b0be09d3fad1da2e84d0d4469c4", + "guides/9750.js": "8cd2ec8652ab5b3b252d8c17a9cf6e79ef01852db842c8bb6196af3560fe51ae", + "guides/9754.js": "58d16663e92e4296af1de04427cce2316bb8fce550982c0106c5a754dc0535b3", + "guides/9756.js": "1084ff11b5eb4f1502462c09532574236b11790e2def40157be6d0faa2aa6d58", + "guides/9757.js": "281bfd592710f46ca06d8ef5994ef06c641bca4066164fd6b55dbe5d25b5df6f", + "guides/9759.js": "258308cfec24b109f0a04e29275de1ca17860fba85ea172aa2b48269f542f63a", + "guides/9768.js": "f9bc7b5cf768273ac5bff03d5b3e20dd95fd6ccf58d7fa951e33c60c2d42ace8", + "guides/9770.js": "e07f4cdba1b094a070926f926ea1b176d6403261241d680329724b0fe285eefb", + "guides/9780.js": "acda91fbf120174d39a8f0728ee76bae1c805c70c20e8d0f8786cd794f86598f", + "guides/9781.js": "14f91b5616b8fdac151986e130bbf29400dd06b84dfcd1a636cfc5eb1d6a7784", + "guides/9782.js": "ffca08c5348963ca6b9b3a72acdaea25fa77a194602538ec371d5a7806b29708", + "guides/9783.js": "121572271b47cd209365c4d84811d9e64cbd527b2f8fb7eb6009785f498d2226", + "guides/9794.js": "a44ccdebf43fea73072785ba8523481b7a5690fd2e9859aa082b4470ab3741af", + "guides/9916.js": "a556d7f4cb670f170d977fde78918c5e320da2d96986bec647d1ed87f2912b10", + "guides/9920.js": "3967e251360f8f935cbcde14fa675984cdd34d492ec5ac5f25acfdd8c951cebe", + "guides/9935.js": "45e3fcbf902e8c8e1d80809c5ac21b0873e414850a3c3f16b96c3cdda5be6471", + "guides/9939.js": "a576eec125f006a59363ec011802c4138441d5957149f015b41ef895875d8d0d", + "guides/9970.js": "9d2e3e6af84a63225385df069e74b4446db1eb7d088951b0024b201a0e55ceb3", + "guides/9980.js": "b8a60de17408e5b4083caa68ab71f1792ebb7ff1220926b9f530f0f0e5b6f52a", + "guides/9981.js": "127bbad9b8147a9bf513affd03edd8ee284d7a496be13d1d9711c0b949cab926", + "guides/9982.js": "1191feebeaeb9a229fce64cdd944ed21203b3154f905020a4e8fc127e5a4ea06", + "guides/9983.js": "77e84398481812d3fbf88a666601b2c62ea2179d939e1d06dca9d12f22dba698", + "guides/9994.js": "915575da2f6005446fa2b330707efbe75b21c8ba91f658dd916901f4a2d734d1", + "index.js": "e96e5d5833e0c28967b3ac43f017af0e0c0a33ffa686f20c4398d86222eba491", + "lang/dungeons.js": "4c4a16197bf9898e0a420c082c67457b007253db9a125cfe875e69c0fd0b16d9", + "lang/strings.js": "33e95fa48d7a386620e561e696e52d7f72253bb1b2de749a99336110aaaade34", + "module.json": "ba320e318c3186f9da48ef95323d88f865ae1f551d1a068083124f4809a5a045", + "settings_migrator.js": "febf6c909b0bcfb5ce27c8336ddd6fb6fdf83d7f0549516e9cddc740f72b8ea6" } -} +} \ No newline at end of file diff --git a/module.json b/module.json index 20d0396d..dbc21c17 100644 --- a/module.json +++ b/module.json @@ -1,19 +1,19 @@ { - "disableAutoUpdate": false, - "name": "TERA-Guide", + "name": "tera-guide", "options": { - "niceName": "TERA-Guide", + "niceName": "Guide", "guiName": "TERA-Guide", "settingsFile": "config.json", "settingsMigrator": "settings_migrator.js", - "settingsVersion": "1.01" + "settingsVersion": 1.19 }, - "author": "Kasea/michengs/ITunk", - "description": "Советы по данжам", - "servers": ["https://raw.githubusercontent.com/GrafNikola/tera-guide/master/"], - "supportUrl": "https://github.com/GrafNikola/tera-guide/pulls", + "author": "HSDN", + "description": "The dungeon guide module with TTS notifications. Display hints on screen and drawing zones of bosses attacks and mechanics.", + "servers": ["https://raw.githubusercontent.com/hsdn/tera-guide/master/"], + "supportUrl": "https://github.com/hsdn/tera-guide/issues", "dependencies": { - "library": "https://raw.githubusercontent.com/tera-toolbox-mods/library/master/module.json" + "tera-guide-core": "https://raw.githubusercontent.com/hsdn/tera-guide-core/master/module.json" }, - "version": "91.03" + "disableAutoUpdate": false, + "version": "9/8/2024" } \ No newline at end of file diff --git a/settings_migrator.js b/settings_migrator.js index a38f7113..e463166b 100644 --- a/settings_migrator.js +++ b/settings_migrator.js @@ -1,52 +1,115 @@ -"use strict" +"use strict"; + const DefaultSettings = { - "enabled": true, - "systemNotice": false, - "notice": false, - "stream": false, + "enabled": true, + "stream": false, + "lNotice": false, + "gNotice": false, + "spawnObject": true, + "speech": { + "enabled": false, + "rate": 2, + "volume": 100, + "gender": "female" + }, "cc": [ "" ], - "rate": [ - 1 - ], - "speaks": true, - "chat-name": "Guide" + "language": "auto", + "dungeons": {}, + "debug": { + "chat": true, + "all": false, + "s": false, + "e": false, + "am": false, + "ae": false, + "ab": false, + "ar": false, + "ad": false, + "h": false, + "ns": false, + "nd": false, + "rb": false, + "re": false, + "dm": false, + "qb": false + } }; module.exports = function MigrateSettings(from_ver, to_ver, settings) { - if (from_ver === undefined) { - // Migrate legacy config file - return Object.assign(Object.assign({}, DefaultSettings), settings); - } else if (from_ver === null) { - // No config file exists, use default settings - return DefaultSettings; - } else { - // Migrate from older version (using the new system) to latest one - if (from_ver + 1 < to_ver) { - // Recursively upgrade in one-version steps - settings = MigrateSettings(from_ver, from_ver + 1, settings); - return MigrateSettings(from_ver + 1, to_ver, settings); - } - - // If we reach this point it's guaranteed that from_ver === to_ver - 1, so we can implement - // a switch for each version step that upgrades to the next version. This enables us to - // upgrade from any version to the latest version without additional effort! - switch(to_ver) { - default: - let oldsettings = settings - - settings = Object.assign(DefaultSettings, {}); - - for(let option in oldsettings) { - if(settings[option]) { - settings[option] = oldsettings[option] - } - } - - break; - } - - return settings; - } -} + if (from_ver === undefined) return { ...DefaultSettings, ...settings }; + else if (from_ver === null) return DefaultSettings; + else { + from_ver = Number(from_ver); + to_ver = Number(to_ver); + + if (from_ver + 0.01 < to_ver) { + settings = MigrateSettings(from_ver, from_ver + 0.01, settings); + return MigrateSettings(from_ver + 0.01, to_ver, settings); + } + + const oldsettings = settings; + settings = Object.assign(DefaultSettings, {}); + + to_ver = Math.round(to_ver * 100) / 100; + + switch (to_ver) { + case 1.12: + for (const option in oldsettings) { + if (option === "dungeons" && Array.isArray(oldsettings[option])) { + settings[option] = {}; + for (const element of oldsettings[option]) { + const id = element.id; + delete element.id; + settings[option][id] = element; + } + continue; + } else + settings[option] = oldsettings[option]; + } + return settings; + + case 1.13: + remove(["dbg.json", "lib.js", "dispatch.js", "voice/index.js", "voice"]); + break; + + case 1.14: + oldsettings["debug"] = settings["debug"]; + break; + + case 1.15: + for (const option in oldsettings) { + if (option === "speaks") + settings["speech"]["enabled"] = oldsettings["speaks"]; + else if (option === "rate") + settings["speech"]["rate"] = parseInt(oldsettings["rate"]); + else + settings[option] = oldsettings[option]; + } + return settings; + } + + for (const option in oldsettings) { + if (settings[option] !== undefined) + settings[option] = oldsettings[option]; + } + + return settings; + } + + function remove(files) { + const fs = require("fs"), path = require("path"); + try { + for (const file of files) { + const filePath = path.join(__dirname, file); + if (fs.existsSync(filePath)) { + if (fs.lstatSync(filePath).isDirectory()) + fs.rmdirSync(filePath); + else + fs.unlinkSync(filePath); + } + } + } catch (e) {} + } +}; \ No newline at end of file