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