From 1c72e68144555ecf7f580ee85d23711723f4adbf Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 19 Nov 2024 07:14:03 +0000 Subject: [PATCH] triggers build: build: Bump version to 0.33.1 (#504) Hold merge for #503. e6d6cfe5f9f70a7c4ae44155ea01bcb515124468 --- 04-sb/trial/byakko-ex.js | 116 +++--- 04-sb/trial/byakko-ex.txt | 59 +-- 07-dt/trial/byakko-un.js | 403 +++++++++++++++++++++ 07-dt/trial/byakko-un.txt | 151 ++++++++ 07-dt/trial/queen-eternal-ex.js | 603 +++++++++++++++++++++++++++++++ 07-dt/trial/queen-eternal-ex.txt | 212 +++++++++++ 6 files changed, 1453 insertions(+), 91 deletions(-) create mode 100644 07-dt/trial/byakko-un.js create mode 100644 07-dt/trial/byakko-un.txt create mode 100644 07-dt/trial/queen-eternal-ex.js create mode 100644 07-dt/trial/queen-eternal-ex.txt diff --git a/04-sb/trial/byakko-ex.js b/04-sb/trial/byakko-ex.js index e5b04e407c..8f9aced395 100644 --- a/04-sb/trial/byakko-ex.js +++ b/04-sb/trial/byakko-ex.js @@ -3,49 +3,49 @@ Options.Triggers.push({ id: 'TheJadeStoaExtreme', zoneId: ZoneId.TheJadeStoaExtreme, timelineFile: 'byakko-ex.txt', + timelineTriggers: [ + { + id: 'ByakkoEx Fell Swoop', + regex: /Fell Swoop/, + beforeSeconds: 5, + response: Responses.bigAoe('alert'), + }, + ], triggers: [ { - id: 'ByaEx Heavenly Strike', + id: 'ByakkoEx Heavenly Strike', type: 'StartsUsing', netRegex: { id: '27DA', source: 'Byakko' }, - response: Responses.tankBuster(), + response: Responses.tankCleave('alert'), }, { - id: 'ByaEx Flying Donut', + id: 'ByakkoEx Sweep The Leg Intermission', type: 'StartsUsing', netRegex: { id: '27F4', source: 'Byakko', capture: false }, response: Responses.getIn(), }, { - id: 'ByaEx Sweep The Leg', + id: 'ByakkoEx Sweep The Leg Standard', type: 'StartsUsing', netRegex: { id: '27DB', source: 'Byakko', capture: false }, response: Responses.getBehind(), }, { - id: 'ByaEx Storm Pulse', + id: 'ByakkoEx Storm Pulse', type: 'StartsUsing', netRegex: { id: '27DC', source: 'Byakko', capture: false }, response: Responses.aoe(), }, { - id: 'ByaEx Distant Clap', + id: 'ByakkoEx Distant Clap', type: 'StartsUsing', netRegex: { id: '27DD', source: 'Byakko', target: 'Byakko', capture: false }, - alertText: (_data, _matches, output) => output.text(), - outputStrings: { - text: { - en: 'Distant Clap', - de: 'Donnergrollen', - fr: 'Tonnerre lointain', - ja: '遠雷', - cn: '月环', - ko: '원뢰', - }, - }, + condition: (data) => data.flareMarker !== data.me, + delaySeconds: 0.1, + response: Responses.getUnder(), }, { - id: 'ByaEx State Of Shock Tank 1', + id: 'ByakkoEx State Of Shock Tank 1', type: 'StartsUsing', netRegex: { id: '27E0', source: 'Byakko' }, condition: (data, matches) => data.role === 'tank' && matches.target !== data.me, @@ -62,7 +62,7 @@ Options.Triggers.push({ }, }, { - id: 'ByaEx State Of Shock Tank 2', + id: 'ByakkoEx State Of Shock Tank 2', type: 'StartsUsing', netRegex: { id: '27E0', source: 'Byakko' }, condition: (data, matches) => data.role === 'tank' && matches.target === data.me, @@ -80,7 +80,7 @@ Options.Triggers.push({ }, }, { - id: 'ByaEx Roar Counter', + id: 'ByakkoEx Roar Counter', type: 'StartsUsing', netRegex: { id: '27F9', source: 'Hakutei', capture: false }, run: (data) => { @@ -88,7 +88,7 @@ Options.Triggers.push({ }, }, { - id: 'ByaEx Roar of Thunder', + id: 'ByakkoEx Roar Of Thunder', type: 'StartsUsing', netRegex: { id: '27F9', source: 'Hakutei', capture: false }, delaySeconds: 14, @@ -110,11 +110,11 @@ Options.Triggers.push({ }, }, { - id: 'ByaEx Bubble', + id: 'ByakkoEx Gale Force', type: 'HeadMarker', netRegex: { id: '0065' }, condition: Conditions.targetIsYou(), - infoText: (_data, _matches, output) => output.text(), + alertText: (_data, _matches, output) => output.text(), outputStrings: { text: { en: 'Drop bubble outside', @@ -127,11 +127,11 @@ Options.Triggers.push({ }, }, { - id: 'ByaEx Ominous Wind', + id: 'ByakkoEx Ominous Wind', type: 'GainsEffect', netRegex: { effectId: '5C9' }, condition: Conditions.targetIsYou(), - infoText: (_data, _matches, output) => output.text(), + alertText: (_data, _matches, output) => output.text(), outputStrings: { text: { en: 'Pink bubble', @@ -144,7 +144,7 @@ Options.Triggers.push({ }, }, { - id: 'ByaEx Puddle Marker', + id: 'ByakkoEx Aratama', type: 'HeadMarker', netRegex: { id: '0004' }, condition: Conditions.targetIsYou(), @@ -161,26 +161,23 @@ Options.Triggers.push({ }, }, { - id: 'ByaEx G100', + id: 'ByakkoEx White Herald', type: 'HeadMarker', netRegex: { id: '0057' }, condition: Conditions.targetIsYou(), - infoText: (_data, _matches, output) => output.text(), - outputStrings: { - text: { - en: 'Get away', - de: 'Weg da', - fr: 'Éloignez-vous', - ja: '離れる', - cn: '远离人群', - ko: '멀리가기', - }, - }, + response: Responses.awayFrom(), + run: (data, matches) => data.flareMarker = matches.target, + }, + { + id: 'ByakkoEx White Herald Cleanup', + type: 'Ability', + netRegex: { id: '9C1A', source: 'Hakutei', capture: false }, + run: (data) => delete data.flareMarker, }, // https://xivapi.com/InstanceContentTextData/18606 // en: Twofold is my wrath, twice-cursed my foes! { - id: 'ByaEx Tiger Add', + id: 'ByakkoEx Tiger Add', type: 'BattleTalk2', netRegex: { instanceContentTextId: '48AE', capture: false }, condition: (data) => data.role === 'tank' || data.job === 'BLU', @@ -197,7 +194,7 @@ Options.Triggers.push({ }, }, { - id: 'ByaEx Stake Counter', + id: 'ByakkoEx Stake Counter', type: 'StartsUsing', netRegex: { id: '27E2', source: 'Byakko', capture: false }, run: (data) => { @@ -205,14 +202,14 @@ Options.Triggers.push({ }, }, { - id: 'ByaEx Stake Counter Cleanup', + id: 'ByakkoEx Stake Counter Cleanup', type: 'StartsUsing', netRegex: { id: '27E2', source: 'Byakko', capture: false }, delaySeconds: 20, run: (data) => delete data.stakeCount, }, { - id: 'ByaEx Highest Stakes', + id: 'ByakkoEx Highest Stakes', type: 'StartsUsing', netRegex: { id: '27E2', source: 'Byakko', capture: false }, infoText: (data, _matches, output) => output.text({ num: data.stakeCount }), @@ -238,7 +235,6 @@ Options.Triggers.push({ }, 'replaceText': { '--Hakutei Add--': '--Hakutei Add--', - '--leap north--': '--Sprung nach Norden--', '--tiger targetable--': '--Tiger anvisierbar--', '--tiger untargetable--': '--Tiger nicht anvisierbar--', 'Answer On High': 'Himmlische Antwort', @@ -247,17 +243,17 @@ Options.Triggers.push({ 'Dance Of The Incomplete': 'Tanz der zwei Gesichter', 'Distant Clap': 'Donnergrollen', 'Fell Swoop': 'Auf einen Streich', - 'Fire and Lightning': 'Feuer und Blitz', + 'Fire And Lightning': 'Feuer und Blitz', 'Gale Force': 'Orkan', 'Heavenly Strike': 'Himmlischer Schlag', 'Highest Stakes': 'Höchstes Risiko', 'Hundredfold Havoc': 'Hundertfache Verwüstung', 'Imperial Guard': 'Herbststurm', 'Ominous Wind': 'Unheilvoller Wind', - 'State of Shock': 'Bannblitze', + 'State Of Shock': 'Bannblitze', 'Steel Claw': 'Stahlklaue', 'Storm Pulse': 'Gewitterwelle', - 'Sweep the Leg': 'Vertikalität', + 'Sweep The Leg': 'Vertikalität', 'The Roar Of Thunder': 'Brüllen des Donners', 'The Voice Of Thunder': 'Stimme des Donners', 'Unrelenting Anguish': 'Pandämonium', @@ -273,7 +269,6 @@ Options.Triggers.push({ }, 'replaceText': { '--Hakutei Add--': '--Add Hakutei--', - '--leap north--': '--saut au nord--', '--tiger targetable--': '--tigre ciblable--', '--tiger untargetable--': '--tigre non ciblable--', 'Answer On High': 'Foudre céleste', @@ -282,17 +277,17 @@ Options.Triggers.push({ 'Dance Of The Incomplete': 'Danse semi-bestiale', 'Distant Clap': 'Tonnerre lointain', 'Fell Swoop': 'Éléments déchaînés', - 'Fire and Lightning': 'Feu et foudre', + 'Fire And Lightning': 'Feu et foudre', 'Gale Force': 'Coup de rafale', 'Heavenly Strike': 'Frappe céleste', 'Highest Stakes': 'Tout pour le tout', 'Hundredfold Havoc': 'Ravages centuples', 'Imperial Guard': 'Garde impériale', 'Ominous Wind': 'Vent mauvais', - 'State of Shock': 'Foudroiement brutal', + 'State Of Shock': 'Foudroiement brutal', 'Steel Claw': 'Griffe d\'acier', 'Storm Pulse': 'Pulsion de tempête', - 'Sweep the Leg': 'Verticalité', + 'Sweep The Leg': 'Verticalité', 'The Roar Of Thunder': 'Rugissement du tonnerre', 'The Voice Of Thunder': 'Voix du tonnerre', 'Unrelenting Anguish': 'Douleur continuelle', @@ -308,7 +303,6 @@ Options.Triggers.push({ 'Twofold is my wrath, twice-cursed my foes!': '駆けろ、我が半身ッ!歯向かう者どもに、牙と爪を突き立ててやれ!', }, 'replaceText': { - '--leap north--': '--北に飛ぶ--', '--tiger untargetable--': '--白帝タゲ不可--', 'Answer On High': '天つ雷', 'Bombogenesis': '爆弾低気圧', @@ -316,17 +310,17 @@ Options.Triggers.push({ 'Dance Of The Incomplete': '半獣舞踏', 'Distant Clap': '遠雷', 'Fell Swoop': '迅雷風烈波', - 'Fire and Lightning': '雷火一閃', + 'Fire And Lightning': '雷火一閃', 'Gale Force': '暴風', 'Heavenly Strike': '天雷掌', 'Highest Stakes': '乾坤一擲', 'Hundredfold Havoc': '百雷繚乱', 'Imperial Guard': '白帝一陣', 'Ominous Wind': '祟り風', - 'State of Shock': '呪縛雷', + 'State Of Shock': '呪縛雷', 'Steel Claw': '鉄爪斬', 'Storm Pulse': '風雷波動', - 'Sweep the Leg': '旋体脚', + 'Sweep The Leg': '旋体脚', 'The Roar Of Thunder': '雷轟', 'The Voice Of Thunder': '雷声', 'Unrelenting Anguish': '無間地獄', @@ -342,7 +336,6 @@ Options.Triggers.push({ }, 'replaceText': { '--Hakutei Add--': '--白帝出现--', - '--leap north--': '--跳北--', '--tiger targetable--': '--白帝可选中--', '--tiger untargetable--': '--白帝无法选中--', 'Answer On High': '天雷', @@ -351,17 +344,17 @@ Options.Triggers.push({ 'Dance Of The Incomplete': '半兽舞蹈', 'Distant Clap': '远雷', 'Fell Swoop': '迅雷风烈波', - 'Fire and Lightning': '雷火一闪', + 'Fire And Lightning': '雷火一闪', 'Gale Force': '暴风', 'Heavenly Strike': '天雷掌', 'Highest Stakes': '乾坤一掷', 'Hundredfold Havoc': '百雷缭乱', 'Imperial Guard': '白帝降临', 'Ominous Wind': '妖风', - 'State of Shock': '咒缚雷', + 'State Of Shock': '咒缚雷', 'Steel Claw': '铁爪斩', 'Storm Pulse': '风雷波动', - 'Sweep the Leg': '旋体脚', + 'Sweep The Leg': '旋体脚', 'The Roar Of Thunder': '雷轰', 'The Voice Of Thunder': '雷声', 'Unrelenting Anguish': '无间地狱', @@ -377,7 +370,6 @@ Options.Triggers.push({ }, 'replaceText': { '--Hakutei Add--': '--하얀 제왕 등장--', - '--leap north--': '--보스 북쪽으로 이동--', '--tiger targetable--': '--호랑이 타겟가능--', '--tiger untargetable--': '--호랑이 타겟불가--', 'Answer On High': '하늘의 번개', @@ -386,17 +378,17 @@ Options.Triggers.push({ 'Dance Of The Incomplete': '반수의 춤', 'Distant Clap': '원뢰', 'Fell Swoop': '신뢰풍렬파', - 'Fire and Lightning': '뇌화일섬', + 'Fire And Lightning': '뇌화일섬', 'Gale Force': '폭풍', 'Heavenly Strike': '천뢰장', 'Highest Stakes': '건곤일척', 'Hundredfold Havoc': '백뢰요란', 'Imperial Guard': '제왕의 진격', 'Ominous Wind': '불길한 바람', - 'State of Shock': '주박뢰', + 'State Of Shock': '주박뢰', 'Steel Claw': '강철 발톱', 'Storm Pulse': '풍뢰파동', - 'Sweep the Leg': '돌려차기', + 'Sweep The Leg': '돌려차기', 'The Roar Of Thunder': '뇌굉', 'The Voice Of Thunder': '뇌성', 'Unrelenting Anguish': '무간지옥', diff --git a/04-sb/trial/byakko-ex.txt b/04-sb/trial/byakko-ex.txt index fb560fc5a9..172ebeb712 100644 --- a/04-sb/trial/byakko-ex.txt +++ b/04-sb/trial/byakko-ex.txt @@ -12,19 +12,19 @@ hideall "Answer On High" 0.0 "--sync--" InCombat { inGameCombat: "1" } window 0,1 10.9 "Storm Pulse" Ability { id: "27DC", source: "Byakko" } window 11,5 17.1 "Heavenly Strike" Ability { id: "27DA", source: "Byakko" } -27.3 "State of Shock 1" Ability { id: "27E0", source: "Byakko" } +27.3 "State Of Shock 1" Ability { id: "27E0", source: "Byakko" } 28.5 "Clutch" Ability { id: "27E1", source: "Byakko" } 34.7 "Highest Stakes" Ability { id: "27E2", source: "Byakko" } -37.5 "State of Shock 2" Ability { id: "2756", source: "Byakko" } +37.5 "State Of Shock 2" Ability { id: "2756", source: "Byakko" } 38.5 "Clutch" Ability { id: "27E1", source: "Byakko" } 44.7 "Highest Stakes" Ability { id: "27E2", source: "Byakko" } -55.5 "--middle--" Ability { id: "2757", source: "Byakko" } +55.5 "--center--" Ability { id: "2757", source: "Byakko" } 59.6 "Unrelenting Anguish" Ability { id: "27ED", source: "Byakko" } 65.8 "Storm Pulse" Ability { id: "27DC", source: "Byakko" } 68.0 "Ominous Wind" Ability { id: "27EB", source: "Byakko" } -77.4 "Fire and Lightning" Ability { id: "27D9", source: "Byakko" } -85.7 "--leap north--" Ability { id: "2757", source: "Byakko" } +77.4 "Fire And Lightning" Ability { id: "27D9", source: "Byakko" } +85.7 "--north--" Ability { id: "2757", source: "Byakko" } 87.3 "Dance Of The Incomplete" Ability { id: "25D1", source: "Byakko" } 92.2 "--Hakutei Add--" 103.4 "Storm Pulse" Ability { id: "27DC", source: "Byakko" } @@ -35,7 +35,7 @@ hideall "Answer On High" 122.4 "White Herald" Ability { id: "27FA", source: "Hakutei" } 124.4 "--tiger targetable--" 124.8 "Distant Clap" Ability { id: "27DD", source: "Byakko" } -128.6 "Fire and Lightning" Ability { id: "27DE", source: "Hakutei" } +128.6 "Fire And Lightning" Ability { id: "27DE", source: "Hakutei" } 133.0 "Storm Pulse" Ability { id: "27DC", source: "Byakko" } 135.1 "--untargetable--" 135.2 "--sync--" Ability { id: "265E", source: "Hakutei" } @@ -46,50 +46,51 @@ hideall "Answer On High" ### Phase 2: zzz x infinity 191.1 "--sync--" Ability { id: "27EE", source: "Byakko" } window 200,5 -197.2 "Sweep the Leg" Ability { id: "27F3", source: "Byakko" } +197.2 "Sweep The Leg" Ability { id: "27F3", source: "Byakko" } 208.1 "Imperial Guard" Ability { id: "27F1", source: "Hakutei" } 208.4 "--sync--" Ability { id: "27EE", source: "Byakko" } 220.2 "Imperial Guard" Ability { id: "27F1", source: "Hakutei" } 222.6 "--sync--" Ability { id: "27EE", source: "Byakko" } -228.7 "Sweep the Leg" Ability { id: "27F3", source: "Byakko" } +228.7 "Sweep The Leg" Ability { id: "27F3", source: "Byakko" } 237.3 "Imperial Guard" Ability { id: "27F1", source: "Hakutei" } ### Phase 3: More Bubbles 250.1 "--sync--" Ability { id: "2A2A", source: "Byakko" } 265.1 "Fell Swoop" Ability { id: "27FB", source: "Byakko" } window 300,10 +273.1 "--targetable--" 284.4 "Heavenly Strike" Ability { id: "27DA", source: "Byakko" } 290.5 "Answer On High" Ability { id: "27E4", source: "Byakko" } 295.6 "Hundredfold Havoc" Ability { id: "27E5", source: "Byakko" } duration 3.2 -296.6 "State of Shock 1" Ability { id: "27E0", source: "Byakko" } +296.6 "State Of Shock 1" Ability { id: "27E0", source: "Byakko" } 297.7 "Clutch" Ability { id: "27E1", source: "Byakko" } 298.6 "Hundredfold Havoc" Ability { id: "27E5", source: "Byakko" } duration 3.2 304.0 "Highest Stakes" Ability { id: "27E2", source: "Byakko" } -306.9 "State of Shock 2" Ability { id: "2756", source: "Byakko" } +306.9 "State Of Shock 2" Ability { id: "2756", source: "Byakko" } 307.9 "Clutch" Ability { id: "27E1", source: "Byakko" } 314.1 "Highest Stakes" Ability { id: "27E2", source: "Byakko" } -320.8 "Sweep the Leg" Ability { id: "27DB", source: "Byakko" } +320.8 "Sweep The Leg" Ability { id: "27DB", source: "Byakko" } -330.9 "--sync--" Ability { id: "2757", source: "Byakko" } window 10,10 +330.9 "--center--" Ability { id: "2757", source: "Byakko" } window 10,10 335.2 "Unrelenting Anguish" Ability { id: "27ED", source: "Byakko" } 341.4 "Storm Pulse x2" Ability { id: "27DC", source: "Byakko" } 345.6 "Bombogenesis" Ability { id: "27E7", source: "Byakko" } 351.6 "Ominous Wind" Ability { id: "27EB", source: "Byakko" } 353.6 "Gale Force" Ability { id: "27E8", source: "Byakko" } -361.0 "Fire and Lightning" Ability { id: "27D9", source: "Byakko" } +361.0 "Fire And Lightning" Ability { id: "27D9", source: "Byakko" } 364.1 "--north--" Ability { id: "2757", source: "Byakko" } -369.9 "Fire and Lightning" Ability { id: "27D9", source: "Byakko" } +369.9 "Fire And Lightning" Ability { id: "27D9", source: "Byakko" } -373.1 "--sync--" Ability { id: "2757", source: "Byakko" } +373.1 "--north--" Ability { id: "2757", source: "Byakko" } 374.5 "Dance Of The Incomplete" Ability { id: "25D1", source: "Byakko" } 379.5 "--tiger targetable--" 388.8 "--tiger untargetable--" 394.5 "White Herald" Ability { id: "27FA", source: "Hakutei" } 396.5 "--tiger targetable--" 396.8 "Distant Clap" Ability { id: "27DD", source: "Byakko" } -400.7 "Fire and Lightning" Ability { id: "27DE", source: "Hakutei" } +400.7 "Fire And Lightning" Ability { id: "27DE", source: "Hakutei" } 405.0 "Distant Clap" Ability { id: "27DD", source: "Byakko" } -408.9 "Fire and Lightning" Ability { id: "27DE", source: "Hakutei" } +408.9 "Fire And Lightning" Ability { id: "27DE", source: "Hakutei" } 416.1 "Steel Claw" Ability { id: "27DF", source: "Hakutei" } 416.4 "Heavenly Strike" Ability { id: "27DA", source: "Byakko" } 422.4 "--sync--" Ability { id: "265E", source: "Hakutei" } @@ -99,47 +100,47 @@ hideall "Answer On High" 450.6 "--sync--" Ability { id: "29E5", source: "Hakutei" } 451.5 "--sync--" Ability { id: "29E4", source: "Byakko" } -453.5 "--sync--" Ability { id: "2757", source: "Byakko" } -459.3 "Fire and Lightning" Ability { id: "27D9", source: "Byakko" } +453.5 "--jump--" Ability { id: "2757", source: "Byakko" } +459.3 "Fire And Lightning" Ability { id: "27D9", source: "Byakko" } 474.5 "Storm Pulse x2" Ability { id: "27DC", source: "Byakko" } 484.8 "Bombogenesis" Ability { id: "27E7", source: "Byakko" } 487.0 "Answer On High" Ability { id: "27E4", source: "Byakko" } 492.0 "Hundredfold Havoc" Ability { id: "27E5", source: "Byakko" } duration 3.2 492.9 "Gale Force" Ability { id: "27E8", source: "Byakko" } 495.1 "Hundredfold Havoc" Ability { id: "27E5", source: "Byakko" } duration 3.2 -495.8 "State of Shock 1" Ability { id: "27E0", source: "Byakko" } +495.8 "State Of Shock 1" Ability { id: "27E0", source: "Byakko" } 496.9 "Clutch" Ability { id: "27E1", source: "Byakko" } 503.2 "Highest Stakes" Ability { id: "27E2", source: "Byakko" } -505.8 "State of Shock 2" Ability { id: "2756", source: "Byakko" } +505.8 "State Of Shock 2" Ability { id: "2756", source: "Byakko" } 506.9 "Clutch" Ability { id: "27E1", source: "Byakko" } 513.2 "Highest Stakes" Ability { id: "27E2", source: "Byakko" } -519.7 "Sweep the Leg" Ability { id: "27DB", source: "Byakko" } +519.7 "Sweep The Leg" Ability { id: "27DB", source: "Byakko" } 534.2 "Heavenly Strike" Ability { id: "27DA", source: "Byakko" } 544.5 "Storm Pulse x2" Ability { id: "27DC", source: "Byakko" } 557.9 "Distant Clap" Ability { id: "27DD", source: "Byakko" } 564.1 "Heavenly Strike" Ability { id: "27DA", source: "Byakko" } -572.2 "--middle--" Ability { id: "2757", source: "Byakko" } +572.2 "--center--" Ability { id: "2757", source: "Byakko" } 576.3 "Unrelenting Anguish" Ability { id: "27ED", source: "Byakko" } 582.4 "Storm Pulse x2" Ability { id: "27DC", source: "Byakko" } 586.7 "Bombogenesis" Ability { id: "27E7", source: "Byakko" } 592.8 "Ominous Wind" Ability { id: "27EB", source: "Byakko" } 594.7 "Gale Force" Ability { id: "27E8", source: "Byakko" } -602.1 "Fire and Lightning" Ability { id: "27D9", source: "Byakko" } +602.1 "Fire And Lightning" Ability { id: "27D9", source: "Byakko" } 605.3 "--north--" Ability { id: "2757", source: "Byakko" } -611.0 "Fire and Lightning" Ability { id: "27D9", source: "Byakko" } +611.0 "Fire And Lightning" Ability { id: "27D9", source: "Byakko" } 626.2 "Storm Pulse x2" Ability { id: "27DC", source: "Byakko" } 634.4 "Answer On High" Ability { id: "27E4", source: "Byakko" } 639.4 "Hundredfold Havoc" Ability { id: "27E5", source: "Byakko" } -640.5 "State of Shock 1" Ability { id: "27E0", source: "Byakko" } +640.5 "State Of Shock 1" Ability { id: "27E0", source: "Byakko" } 641.6 "Clutch" Ability { id: "27E1", source: "Byakko" } 642.5 "Hundredfold Havoc" Ability { id: "27E5", source: "Byakko" } 647.9 "Highest Stakes" Ability { id: "27E2", source: "Byakko" } -650.8 "State of Shock 2" Ability { id: "2756", source: "Byakko" } +650.8 "State Of Shock 2" Ability { id: "2756", source: "Byakko" } 651.8 "Clutch" Ability { id: "27E1", source: "Byakko" } 658.1 "Highest Stakes" Ability { id: "27E2", source: "Byakko" } -664.8 "Sweep the Leg" Ability { id: "27DB", source: "Byakko" } +664.8 "Sweep The Leg" Ability { id: "27DB", source: "Byakko" } -674.9 "--middle--" Ability { id: "2757", source: "Byakko" } +674.9 "--center--" Ability { id: "2757", source: "Byakko" } 680.2 "Storm Pulse x4" Ability { id: "27DC", source: "Byakko" } 696.3 "Storm Pulse Enrage" Ability { id: "2A09", source: "Byakko" } diff --git a/07-dt/trial/byakko-un.js b/07-dt/trial/byakko-un.js new file mode 100644 index 0000000000..e9e352b206 --- /dev/null +++ b/07-dt/trial/byakko-un.js @@ -0,0 +1,403 @@ +// This file was autogenerated from running npm run sync-files. +// DO NOT EDIT THIS FILE DIRECTLY. +// Edit the source file below and then run `npm run sync-files` +// Source: ui/raidboss/data/04-sb/trial/byakko-ex.ts +// Byakko Unreal +Options.Triggers.push({ + id: 'TheJadeStoaUnreal', + zoneId: ZoneId.TheJadeStoaUnreal, + timelineFile: 'byakko-un.txt', + timelineTriggers: [ + { + id: 'ByakkoUn Fell Swoop', + regex: /Fell Swoop/, + beforeSeconds: 5, + response: Responses.bigAoe('alert'), + }, + ], + triggers: [ + { + id: 'ByakkoUn Heavenly Strike', + type: 'StartsUsing', + netRegex: { id: '9BFB', source: 'Byakko' }, + response: Responses.tankCleave('alert'), + }, + { + id: 'ByakkoUn Sweep The Leg Intermission', + type: 'StartsUsing', + netRegex: { id: '9C15', source: 'Byakko', capture: false }, + response: Responses.getIn(), + }, + { + id: 'ByakkoUn Sweep The Leg Standard', + type: 'StartsUsing', + netRegex: { id: '9BFC', source: 'Byakko', capture: false }, + response: Responses.getBehind(), + }, + { + id: 'ByakkoUn Storm Pulse', + type: 'StartsUsing', + netRegex: { id: '9BFD', source: 'Byakko', capture: false }, + response: Responses.aoe(), + }, + { + id: 'ByakkoUn Distant Clap', + type: 'StartsUsing', + netRegex: { id: '9BFE', source: 'Byakko', target: 'Byakko', capture: false }, + condition: (data) => data.flareMarker !== data.me, + delaySeconds: 0.1, + response: Responses.getUnder(), + }, + { + id: 'ByakkoUn State Of Shock Tank 1', + type: 'StartsUsing', + netRegex: { id: '9C01', source: 'Byakko' }, + condition: (data, matches) => data.role === 'tank' && matches.target !== data.me, + alertText: (_data, _matches, output) => output.text(), + outputStrings: { + text: { + en: 'Provoke Boss', + de: 'Boss abspotten', + fr: 'Provoquez le Boss', + ja: '挑発', + cn: '挑衅', + ko: '보스 도발', + }, + }, + }, + { + id: 'ByakkoUn State Of Shock Tank 2', + type: 'StartsUsing', + netRegex: { id: '9C01', source: 'Byakko' }, + condition: (data, matches) => data.role === 'tank' && matches.target === data.me, + delaySeconds: 12, + alertText: (_data, _matches, output) => output.text(), + outputStrings: { + text: { + en: 'Provoke Boss', + de: 'Boss abspotten', + fr: 'Provoquez le Boss', + ja: '挑発', + cn: '挑衅', + ko: '보스 도발', + }, + }, + }, + { + id: 'ByakkoUn Roar Counter', + type: 'StartsUsing', + netRegex: { id: '9C19', source: 'Hakutei', capture: false }, + run: (data) => { + data.roarCount = (data.roarCount ?? 0) + 1; + }, + }, + { + id: 'ByakkoUn Roar Of Thunder', + type: 'StartsUsing', + netRegex: { id: '9C19', source: 'Hakutei', capture: false }, + delaySeconds: 14, + alarmText: (data, _matches, output) => { + if (data.roarCount !== 2) + return; + if (data.role === 'tank' || data.job === 'BLU') + return output.text(); + }, + outputStrings: { + text: { + en: 'Tank LB NOW', + de: 'JETZT Tank LB', + fr: 'Transcendance Tank maintenant !', + ja: '今タンクLB', + cn: '坦克LB', + ko: '탱리밋', + }, + }, + }, + { + id: 'ByakkoUn Gale Force', + type: 'HeadMarker', + netRegex: { id: '0065' }, + condition: Conditions.targetIsYou(), + alertText: (_data, _matches, output) => output.text(), + outputStrings: { + text: { + en: 'Drop bubble outside', + de: 'Blase außen ablegen', + fr: 'Déposez la bulle à l\'extérieur', + ja: '外にマーカーを置く', + cn: '边缘放点名', + ko: '장판 바깥에 깔기', + }, + }, + }, + { + id: 'ByakkoUn Ominous Wind', + type: 'GainsEffect', + netRegex: { effectId: '5C9' }, + condition: Conditions.targetIsYou(), + alertText: (_data, _matches, output) => output.text(), + outputStrings: { + text: { + en: 'Pink bubble', + de: 'Pinke Blase', + fr: 'Bulle violette', + ja: '祟り目', + cn: '和其他泡泡散开', + ko: '핑크 구슬', + }, + }, + }, + { + id: 'ByakkoUn Aratama', + type: 'HeadMarker', + netRegex: { id: '0004' }, + condition: Conditions.targetIsYou(), + alarmText: (_data, _matches, output) => output.text(), + outputStrings: { + text: { + en: 'Puddles on YOU', + de: 'Pfützen auf DIR', + fr: 'Zones au sol sur VOUS', + ja: '自分に床範囲', + cn: '放圈点名', + ko: '장판 바깥에 깔기 (3번)', + }, + }, + }, + { + id: 'ByakkoUn White Herald', + type: 'HeadMarker', + netRegex: { id: '0057' }, + condition: Conditions.targetIsYou(), + response: Responses.awayFrom(), + run: (data, matches) => data.flareMarker = matches.target, + }, + { + id: 'ByakkoUn White Herald Cleanup', + type: 'Ability', + netRegex: { id: '9C1A', source: 'Hakutei', capture: false }, + run: (data) => delete data.flareMarker, + }, + // https://xivapi.com/InstanceContentTextData/18606 + // en: Twofold is my wrath, twice-cursed my foes! + { + id: 'ByakkoUn Tiger Add', + type: 'BattleTalk2', + netRegex: { instanceContentTextId: '48AE', capture: false }, + condition: (data) => data.role === 'tank' || data.job === 'BLU', + infoText: (_data, _matches, output) => output.text(), + outputStrings: { + text: { + en: 'Tiger Add', + de: 'Tiger Add', + fr: 'Add Tigre', + ja: '虎分離', + cn: '小老虎出现', + ko: '호랑이 쫄', + }, + }, + }, + { + id: 'ByakkoUn Stake Counter', + type: 'StartsUsing', + netRegex: { id: '9C03', source: 'Byakko', capture: false }, + run: (data) => { + data.stakeCount = (data.stakeCount ?? 0) + 1; + }, + }, + { + id: 'ByakkoUn Stake Counter Cleanup', + type: 'StartsUsing', + netRegex: { id: '9C03', source: 'Byakko', capture: false }, + delaySeconds: 20, + run: (data) => delete data.stakeCount, + }, + { + id: 'ByakkoUn Highest Stakes', + type: 'StartsUsing', + netRegex: { id: '9C03', source: 'Byakko', capture: false }, + infoText: (data, _matches, output) => output.text({ num: data.stakeCount }), + outputStrings: { + text: { + en: 'Stack #${num}', + de: 'Stack #${num}', + fr: 'Packez-vous #${num}', + ja: '頭割り #${num}', + cn: '分摊 #${num}', + ko: '쉐어 #${num}', + }, + }, + }, + ], + timelineReplace: [ + { + 'locale': 'de', + 'replaceSync': { + 'Byakko': 'Byakko', + 'Hakutei': 'Hakutei', + 'Twofold is my wrath, twice-cursed my foes!': 'Stürmt los, meine zwei Gesichter!', + }, + 'replaceText': { + '--Hakutei Add--': '--Hakutei Add--', + '--tiger targetable--': '--Tiger anvisierbar--', + '--tiger untargetable--': '--Tiger nicht anvisierbar--', + 'Answer On High': 'Himmlische Antwort', + 'Bombogenesis': 'Plötzliches Orkantief', + 'Clutch': 'Umklammerung', + 'Dance Of The Incomplete': 'Tanz der zwei Gesichter', + 'Distant Clap': 'Donnergrollen', + 'Fell Swoop': 'Auf einen Streich', + 'Fire And Lightning': 'Feuer und Blitz', + 'Gale Force': 'Orkan', + 'Heavenly Strike': 'Himmlischer Schlag', + 'Highest Stakes': 'Höchstes Risiko', + 'Hundredfold Havoc': 'Hundertfache Verwüstung', + 'Imperial Guard': 'Herbststurm', + 'Ominous Wind': 'Unheilvoller Wind', + 'State Of Shock': 'Bannblitze', + 'Steel Claw': 'Stahlklaue', + 'Storm Pulse': 'Gewitterwelle', + 'Sweep The Leg': 'Vertikalität', + 'The Roar Of Thunder': 'Brüllen des Donners', + 'The Voice Of Thunder': 'Stimme des Donners', + 'Unrelenting Anguish': 'Pandämonium', + 'White Herald': 'Herbstböe', + }, + }, + { + 'locale': 'fr', + 'replaceSync': { + 'Byakko': 'Byakko', + 'Hakutei': 'Hakutei', + 'Twofold is my wrath, twice-cursed my foes!': 'Ma colère devient double !', + }, + 'replaceText': { + '--Hakutei Add--': '--Add Hakutei--', + '--tiger targetable--': '--tigre ciblable--', + '--tiger untargetable--': '--tigre non ciblable--', + 'Answer On High': 'Foudre céleste', + 'Bombogenesis': 'Bombogénèse', + 'Clutch': 'Empoignement', + 'Dance Of The Incomplete': 'Danse semi-bestiale', + 'Distant Clap': 'Tonnerre lointain', + 'Fell Swoop': 'Éléments déchaînés', + 'Fire And Lightning': 'Feu et foudre', + 'Gale Force': 'Coup de rafale', + 'Heavenly Strike': 'Frappe céleste', + 'Highest Stakes': 'Tout pour le tout', + 'Hundredfold Havoc': 'Ravages centuples', + 'Imperial Guard': 'Garde impériale', + 'Ominous Wind': 'Vent mauvais', + 'State Of Shock': 'Foudroiement brutal', + 'Steel Claw': 'Griffe d\'acier', + 'Storm Pulse': 'Pulsion de tempête', + 'Sweep The Leg': 'Verticalité', + 'The Roar Of Thunder': 'Rugissement du tonnerre', + 'The Voice Of Thunder': 'Voix du tonnerre', + 'Unrelenting Anguish': 'Douleur continuelle', + 'White Herald': 'Héraut blanc', + }, + }, + { + 'locale': 'ja', + 'missingTranslations': true, + 'replaceSync': { + 'Byakko': '白虎', + 'Hakutei': '白帝', + 'Twofold is my wrath, twice-cursed my foes!': '駆けろ、我が半身ッ!歯向かう者どもに、牙と爪を突き立ててやれ!', + }, + 'replaceText': { + '--tiger untargetable--': '--白帝タゲ不可--', + 'Answer On High': '天つ雷', + 'Bombogenesis': '爆弾低気圧', + 'Clutch': '掌握', + 'Dance Of The Incomplete': '半獣舞踏', + 'Distant Clap': '遠雷', + 'Fell Swoop': '迅雷風烈波', + 'Fire And Lightning': '雷火一閃', + 'Gale Force': '暴風', + 'Heavenly Strike': '天雷掌', + 'Highest Stakes': '乾坤一擲', + 'Hundredfold Havoc': '百雷繚乱', + 'Imperial Guard': '白帝一陣', + 'Ominous Wind': '祟り風', + 'State Of Shock': '呪縛雷', + 'Steel Claw': '鉄爪斬', + 'Storm Pulse': '風雷波動', + 'Sweep The Leg': '旋体脚', + 'The Roar Of Thunder': '雷轟', + 'The Voice Of Thunder': '雷声', + 'Unrelenting Anguish': '無間地獄', + 'White Herald': '白帝衝', + }, + }, + { + 'locale': 'cn', + 'replaceSync': { + 'Byakko': '白虎', + 'Hakutei': '白帝', + 'Twofold is my wrath, twice-cursed my foes!': '半身分离,助我杀敌!向胆敢抵抗的家伙们露出你的爪牙!', + }, + 'replaceText': { + '--Hakutei Add--': '--白帝出现--', + '--tiger targetable--': '--白帝可选中--', + '--tiger untargetable--': '--白帝无法选中--', + 'Answer On High': '天雷', + 'Bombogenesis': '炸弹低气压', + 'Clutch': '紧握', + 'Dance Of The Incomplete': '半兽舞蹈', + 'Distant Clap': '远雷', + 'Fell Swoop': '迅雷风烈波', + 'Fire And Lightning': '雷火一闪', + 'Gale Force': '暴风', + 'Heavenly Strike': '天雷掌', + 'Highest Stakes': '乾坤一掷', + 'Hundredfold Havoc': '百雷缭乱', + 'Imperial Guard': '白帝降临', + 'Ominous Wind': '妖风', + 'State Of Shock': '咒缚雷', + 'Steel Claw': '铁爪斩', + 'Storm Pulse': '风雷波动', + 'Sweep The Leg': '旋体脚', + 'The Roar Of Thunder': '雷轰', + 'The Voice Of Thunder': '雷声', + 'Unrelenting Anguish': '无间地狱', + 'White Herald': '白帝冲', + }, + }, + { + 'locale': 'ko', + 'replaceSync': { + 'Byakko': '백호', + 'Hakutei': '하얀 제왕', + 'Twofold is my wrath, twice-cursed my foes!': '달려라! 나의 반신이여! 맞서는 자들에게 이빨과 발톱을 찔러넣어라!', + }, + 'replaceText': { + '--Hakutei Add--': '--하얀 제왕 등장--', + '--tiger targetable--': '--호랑이 타겟가능--', + '--tiger untargetable--': '--호랑이 타겟불가--', + 'Answer On High': '하늘의 번개', + 'Bombogenesis': '폭탄 저기압', + 'Clutch': '장악', + 'Dance Of The Incomplete': '반수의 춤', + 'Distant Clap': '원뢰', + 'Fell Swoop': '신뢰풍렬파', + 'Fire And Lightning': '뇌화일섬', + 'Gale Force': '폭풍', + 'Heavenly Strike': '천뢰장', + 'Highest Stakes': '건곤일척', + 'Hundredfold Havoc': '백뢰요란', + 'Imperial Guard': '제왕의 진격', + 'Ominous Wind': '불길한 바람', + 'State Of Shock': '주박뢰', + 'Steel Claw': '강철 발톱', + 'Storm Pulse': '풍뢰파동', + 'Sweep The Leg': '돌려차기', + 'The Roar Of Thunder': '뇌굉', + 'The Voice Of Thunder': '뇌성', + 'Unrelenting Anguish': '무간지옥', + 'White Herald': '제왕의 충격', + }, + }, + ], +}); diff --git a/07-dt/trial/byakko-un.txt b/07-dt/trial/byakko-un.txt new file mode 100644 index 0000000000..40b47f814f --- /dev/null +++ b/07-dt/trial/byakko-un.txt @@ -0,0 +1,151 @@ +# This file was autogenerated from running npm run sync-files. +# DO NOT EDIT THIS FILE DIRECTLY. +# Edit the source file below and then run `npm run sync-files` +# Source: ui/raidboss/data/04-sb/trial/byakko-ex.txt + +### Byakko Unreal +# -p 9BFD:10.9 +# -it Hakutei / -it Byakko +# -ii 9C04 9C16 265D 29A3 27EF 27F0 25CF 9C15 9C07 2944 9C0A + +hideall "--sync--" +hideall "--Reset--" +# not useful to see +hideall "Answer On High" + +### Phase 1 +0.0 "--sync--" InCombat { inGameCombat: "1" } window 0,1 +10.9 "Storm Pulse" Ability { id: "9BFD", source: "Byakko" } window 11,5 +17.1 "Heavenly Strike" Ability { id: "9BFB", source: "Byakko" } +27.3 "State Of Shock 1" Ability { id: "9C01", source: "Byakko" } +28.5 "Clutch" Ability { id: "9C02", source: "Byakko" } +34.7 "Highest Stakes" Ability { id: "9C03", source: "Byakko" } +37.5 "State Of Shock 2" Ability { id: "9BF8", source: "Byakko" } +38.5 "Clutch" Ability { id: "9C02", source: "Byakko" } +44.7 "Highest Stakes" Ability { id: "9C03", source: "Byakko" } + +55.5 "--center--" Ability { id: "9BF9", source: "Byakko" } +59.6 "Unrelenting Anguish" Ability { id: "9C0E", source: "Byakko" } +65.8 "Storm Pulse" Ability { id: "9BFD", source: "Byakko" } +68.0 "Ominous Wind" Ability { id: "9C0C", source: "Byakko" } +77.4 "Fire And Lightning" Ability { id: "9BFA", source: "Byakko" } +85.7 "--north--" Ability { id: "9BF9", source: "Byakko" } +87.3 "Dance Of The Incomplete" Ability { id: "9BF4", source: "Byakko" } +92.2 "--Hakutei Add--" +103.4 "Storm Pulse" Ability { id: "9BFD", source: "Byakko" } +103.4 "Steel Claw" Ability { id: "9C00", source: "Hakutei" } +109.6 "Steel Claw" Ability { id: "9C00", source: "Hakutei" } +113.7 "Heavenly Strike" Ability { id: "9BFB", source: "Byakko" } +116.6 "--tiger untargetable--" +122.4 "White Herald" Ability { id: "9C1A", source: "Hakutei" } +124.4 "--tiger targetable--" +124.8 "Distant Clap" Ability { id: "9BFE", source: "Byakko" } +128.6 "Fire And Lightning" Ability { id: "9BFF", source: "Hakutei" } +133.0 "Storm Pulse" Ability { id: "9BFD", source: "Byakko" } +135.1 "--untargetable--" +135.2 "--sync--" Ability { id: "9BF7", source: "Hakutei" } +136.6 "The Voice Of Thunder" Ability { id: "9C17", source: "Hakutei" } +159.8 "The Roar Of Thunder" Ability { id: "9C19", source: "Hakutei" } +162.9 "--untargetable--" + + +### Phase 2: zzz x infinity +191.1 "--sync--" Ability { id: "9C0F", source: "Byakko" } window 200,5 +197.2 "Sweep The Leg" Ability { id: "9C14", source: "Byakko" } +208.1 "Imperial Guard" Ability { id: "9C12", source: "Hakutei" } +208.4 "--sync--" Ability { id: "9C0F", source: "Byakko" } +220.2 "Imperial Guard" Ability { id: "9C12", source: "Hakutei" } +222.6 "--sync--" Ability { id: "9C0F", source: "Byakko" } +228.7 "Sweep The Leg" Ability { id: "9C14", source: "Byakko" } +237.3 "Imperial Guard" Ability { id: "9C12", source: "Hakutei" } + + +### Phase 3: More Bubbles +250.1 "--sync--" Ability { id: "9C22", source: "Byakko" } +265.1 "Fell Swoop" Ability { id: "9C1B", source: "Byakko" } window 300,10 +273.1 "--targetable--" +284.4 "Heavenly Strike" Ability { id: "9BFB", source: "Byakko" } +290.5 "Answer On High" Ability { id: "9C05", source: "Byakko" } +295.6 "Hundredfold Havoc" Ability { id: "9C06", source: "Byakko" } duration 3.2 +296.6 "State Of Shock 1" Ability { id: "9C01", source: "Byakko" } +297.7 "Clutch" Ability { id: "9C02", source: "Byakko" } +298.6 "Hundredfold Havoc" Ability { id: "9C06", source: "Byakko" } duration 3.2 +304.0 "Highest Stakes" Ability { id: "9C03", source: "Byakko" } +306.9 "State Of Shock 2" Ability { id: "9BF8", source: "Byakko" } +307.9 "Clutch" Ability { id: "9C02", source: "Byakko" } +314.1 "Highest Stakes" Ability { id: "9C03", source: "Byakko" } +320.8 "Sweep The Leg" Ability { id: "9BFC", source: "Byakko" } + +330.9 "--center--" Ability { id: "9BF9", source: "Byakko" } window 10,10 +335.2 "Unrelenting Anguish" Ability { id: "9C0E", source: "Byakko" } +341.4 "Storm Pulse x2" Ability { id: "9BFD", source: "Byakko" } +345.6 "Bombogenesis" Ability { id: "9C08", source: "Byakko" } +351.6 "Ominous Wind" Ability { id: "9C0C", source: "Byakko" } +353.6 "Gale Force" Ability { id: "9C09", source: "Byakko" } +361.0 "Fire And Lightning" Ability { id: "9BFA", source: "Byakko" } +364.1 "--north--" Ability { id: "9BF9", source: "Byakko" } +369.9 "Fire And Lightning" Ability { id: "9BFA", source: "Byakko" } + +373.1 "--north--" Ability { id: "9BF9", source: "Byakko" } +374.5 "Dance Of The Incomplete" Ability { id: "9BF4", source: "Byakko" } +379.5 "--tiger targetable--" +388.8 "--tiger untargetable--" +394.5 "White Herald" Ability { id: "9C1A", source: "Hakutei" } +396.5 "--tiger targetable--" +396.8 "Distant Clap" Ability { id: "9BFE", source: "Byakko" } +400.7 "Fire And Lightning" Ability { id: "9BFF", source: "Hakutei" } +405.0 "Distant Clap" Ability { id: "9BFE", source: "Byakko" } +408.9 "Fire And Lightning" Ability { id: "9BFF", source: "Hakutei" } +416.1 "Steel Claw" Ability { id: "9C00", source: "Hakutei" } +416.4 "Heavenly Strike" Ability { id: "9BFB", source: "Byakko" } +422.4 "--sync--" Ability { id: "9BF7", source: "Hakutei" } +423.9 "The Voice Of Thunder" Ability { id: "9C17", source: "Hakutei" } +436.5 "Storm Pulse x2" Ability { id: "9BFD", source: "Byakko" } +447.1 "The Roar Of Thunder" Ability { id: "9C19", source: "Hakutei" } +450.6 "--sync--" Ability { id: "9C20", source: "Hakutei" } + +451.5 "--sync--" Ability { id: "9C1F", source: "Byakko" } +453.5 "--jump--" Ability { id: "9BF9", source: "Byakko" } +459.3 "Fire And Lightning" Ability { id: "9BFA", source: "Byakko" } +474.5 "Storm Pulse x2" Ability { id: "9BFD", source: "Byakko" } +484.8 "Bombogenesis" Ability { id: "9C08", source: "Byakko" } +487.0 "Answer On High" Ability { id: "9C05", source: "Byakko" } +492.0 "Hundredfold Havoc" Ability { id: "9C06", source: "Byakko" } duration 3.2 +492.9 "Gale Force" Ability { id: "9C09", source: "Byakko" } +495.1 "Hundredfold Havoc" Ability { id: "9C06", source: "Byakko" } duration 3.2 +495.8 "State Of Shock 1" Ability { id: "9C01", source: "Byakko" } +496.9 "Clutch" Ability { id: "9C02", source: "Byakko" } +503.2 "Highest Stakes" Ability { id: "9C03", source: "Byakko" } +505.8 "State Of Shock 2" Ability { id: "9BF8", source: "Byakko" } +506.9 "Clutch" Ability { id: "9C02", source: "Byakko" } +513.2 "Highest Stakes" Ability { id: "9C03", source: "Byakko" } +519.7 "Sweep The Leg" Ability { id: "9BFC", source: "Byakko" } +534.2 "Heavenly Strike" Ability { id: "9BFB", source: "Byakko" } +544.5 "Storm Pulse x2" Ability { id: "9BFD", source: "Byakko" } +557.9 "Distant Clap" Ability { id: "9BFE", source: "Byakko" } +564.1 "Heavenly Strike" Ability { id: "9BFB", source: "Byakko" } + +572.2 "--center--" Ability { id: "9BF9", source: "Byakko" } +576.3 "Unrelenting Anguish" Ability { id: "9C0E", source: "Byakko" } +582.4 "Storm Pulse x2" Ability { id: "9BFD", source: "Byakko" } +586.7 "Bombogenesis" Ability { id: "9C08", source: "Byakko" } +592.8 "Ominous Wind" Ability { id: "9C0C", source: "Byakko" } +594.7 "Gale Force" Ability { id: "9C09", source: "Byakko" } +602.1 "Fire And Lightning" Ability { id: "9BFA", source: "Byakko" } +605.3 "--north--" Ability { id: "9BF9", source: "Byakko" } +611.0 "Fire And Lightning" Ability { id: "9BFA", source: "Byakko" } +626.2 "Storm Pulse x2" Ability { id: "9BFD", source: "Byakko" } +634.4 "Answer On High" Ability { id: "9C05", source: "Byakko" } +639.4 "Hundredfold Havoc" Ability { id: "9C06", source: "Byakko" } +640.5 "State Of Shock 1" Ability { id: "9C01", source: "Byakko" } +641.6 "Clutch" Ability { id: "9C02", source: "Byakko" } +642.5 "Hundredfold Havoc" Ability { id: "9C06", source: "Byakko" } +647.9 "Highest Stakes" Ability { id: "9C03", source: "Byakko" } +650.8 "State Of Shock 2" Ability { id: "9BF8", source: "Byakko" } +651.8 "Clutch" Ability { id: "9C02", source: "Byakko" } +658.1 "Highest Stakes" Ability { id: "9C03", source: "Byakko" } +664.8 "Sweep The Leg" Ability { id: "9BFC", source: "Byakko" } + +674.9 "--center--" Ability { id: "9BF9", source: "Byakko" } +680.2 "Storm Pulse x4" Ability { id: "9BFD", source: "Byakko" } +696.3 "Storm Pulse Enrage" Ability { id: "9C21", source: "Byakko" } diff --git a/07-dt/trial/queen-eternal-ex.js b/07-dt/trial/queen-eternal-ex.js new file mode 100644 index 0000000000..7029989ab2 --- /dev/null +++ b/07-dt/trial/queen-eternal-ex.js @@ -0,0 +1,603 @@ +Options.Triggers.push({ + id: 'TheMinstrelsBalladSphenesBurden', + zoneId: ZoneId.TheMinstrelsBalladSphenesBurden, + timelineFile: 'queen-eternal-ex.txt', + initData: () => ({ + absoluteAuthorityDebuff: 'stack', + gravitationalEmpireMech: 'tower', + phase: 'p1', + actorPositions: {}, + coronationLasers: [], + }), + triggers: [ + // Phase trackers + { + id: 'QueenEternal Ex Phase Tracker Elemental', + type: 'StartsUsing', + netRegex: { id: ['A019', 'A01A', 'A01B'], source: 'Queen Eternal', capture: true }, + run: (data, matches) => { + switch (matches.id) { + case 'A019': + data.phase = 'wind'; + break; + case 'A01A': + data.phase = 'earth'; + break; + case 'A01B': + data.phase = 'ice'; + break; + } + }, + }, + { + id: 'QueenEternal Ex Phase Tracker P1', + type: 'StartsUsing', + netRegex: { id: 'A01C', source: 'Queen Eternal', capture: false }, + run: (data) => data.phase = 'p1', + }, + { + id: 'QueenEternal Ex Phase Tracker P2', + type: 'Ability', + netRegex: { id: 'A04B', source: 'Queen Eternal', capture: false }, + run: (data) => data.phase = 'p2', + }, + // General triggers + { + id: 'QueenEternal Ex General ActorSetPos Tracker', + type: 'ActorSetPos', + netRegex: { id: '4[0-9A-F]{7}', capture: true }, + run: (data, matches) => { + data.actorPositions[matches.id] = { + x: parseFloat(matches.x), + y: parseFloat(matches.y), + }; + }, + }, + { + id: 'QueenEternal Ex General Legitimate Force East Safe First', + type: 'StartsUsing', + netRegex: { id: 'A01E', source: 'Queen Eternal', capture: false }, + condition: (data) => ['p1', 'earth', 'ice'].includes(data.phase), + response: Responses.goRightThenLeft(), + }, + { + id: 'QueenEternal Ex General Legitimate Force West Safe First', + type: 'StartsUsing', + netRegex: { id: 'A020', source: 'Queen Eternal', capture: false }, + condition: (data) => ['p1', 'earth', 'ice'].includes(data.phase), + response: Responses.goLeftThenRight(), + }, + { + id: 'QueenEternal Ex World Shatter', + type: 'StartsUsing', + netRegex: { id: ['7692', 'A01C'], source: 'Queen Eternal', capture: false }, + response: Responses.aoe(), + }, + { + id: 'QueenEternal Ex Prosecution of War', + type: 'StartsUsing', + netRegex: { id: 'A00A', source: 'Queen Eternal', capture: true }, + response: Responses.tankBusterSwap(), + }, + { + id: 'QueenEternal Ex Royal Domain', + type: 'StartsUsing', + netRegex: { id: 'A04E', source: 'Queen Eternal', capture: false }, + response: Responses.aoe(), + }, + { + id: 'QueenEternal Ex Virtual Shift', + type: 'StartsUsing', + netRegex: { id: ['A019', 'A01A', 'A01B'], source: 'Queen Eternal', capture: false }, + response: Responses.bigAoe(), + }, + // Before wind + { + id: 'QueenEternal Ex Aethertithe Safe Parties', + type: 'MapEffect', + netRegex: { flags: ['04000100', '08000100', '10000100'], location: '00', capture: true }, + infoText: (_data, matches, output) => { + const dirMap = { + '04000100': 'west', + '08000100': 'middle', + '10000100': 'east', + }; + const dirs = Object.entries(dirMap).filter((entry) => entry[0] !== matches.flags).map(( + entry, + ) => entry[1]); + const [dir1, dir2] = dirs; + if (dirs.length !== 2 || dir1 === undefined || dir2 === undefined) { + return output.unknownCombo({ + unk: output.unknown(), + groups: output.healerGroups(), + }); + } + return output.combo({ + dir1: output[dir1](), + dir2: output[dir2](), + groups: output.healerGroups(), + }); + }, + outputStrings: { + east: Outputs.east, + middle: Outputs.middle, + west: Outputs.west, + healerGroups: Outputs.healerGroups, + combo: { + en: '${dir1}/${dir2}, ${groups}', + de: '${dir1}/${dir2}, ${groups}', + fr: '${dir1}/${dir2}, ${groups}', + ja: '${dir1}/${dir2}, ${groups}', + cn: '${dir1}/${dir2}, ${groups}', + ko: '${dir1}/${dir2}, ${groups}', + }, + unknown: Outputs.unknown, + unknownCombo: { + en: '${unk} => ${groups}', + de: '${unk} => ${groups}', + fr: '${unk} => ${groups}', + ja: '${unk} => ${groups}', + cn: '${unk} => ${groups}', + ko: '${unk} => ${groups}', + }, + }, + }, + // Wind phase + { + id: 'QueenEternal Ex Wind Phase Aeroquell', + type: 'StartsUsing', + netRegex: { id: 'A025', source: 'Queen Eternal', capture: false }, + suppressSeconds: 1, + infoText: (_data, _matches, output) => output.stacks(), + outputStrings: { + stacks: Outputs.healerGroups, + }, + }, + { + id: 'QueenEternal Ex Wind Phase Debuff Collector', + type: 'GainsEffect', + netRegex: { effectId: ['105D', '105E'], capture: true }, + condition: Conditions.targetIsYou(), + run: (data, matches) => + data.windKnockbackDir = matches.effectId === '105E' ? 'right' : 'left', + }, + { + id: 'QueenEternal Ex Wind Phase Legitimate Force', + type: 'StartsUsing', + netRegex: { id: ['A01E', 'A020'], source: 'Queen Eternal', capture: true }, + condition: (data) => data.phase === 'wind', + delaySeconds: 0.5, + durationSeconds: 13.3, + infoText: (data, matches, output) => { + const safeDir = matches.id === 'A01E' + ? 'rightLeft' + : 'leftRight'; + const kbDir = data.windKnockbackDir; + if (kbDir === undefined) { + return output.comboUnknown({ + break: output.break(), + safe: output[safeDir](), + unk: output.unknown(), + }); + } + return output.combo({ + break: output.break(), + safe: output[safeDir](), + kbDir: output[kbDir](), + }); + }, + outputStrings: { + leftRight: Outputs.leftThenRight, + rightLeft: Outputs.rightThenLeft, + left: { + en: 'Knockback Left', + cn: '向左击退', + }, + right: { + en: 'Knockback Right', + cn: '向右击退', + }, + break: Outputs.breakChains, + unknown: Outputs.unknown, + combo: { + en: '${break} => ${safe} => ${kbDir}', + de: '${break} => ${safe} => ${kbDir}', + fr: '${break} => ${safe} => ${kbDir}', + ja: '${break} => ${safe} => ${kbDir}', + cn: '${break} => ${safe} => ${kbDir}', + ko: '${break} => ${safe} => ${kbDir}', + }, + comboUnknown: { + en: '${break} => ${safe} => ${unk}', + de: '${break} => ${safe} => ${unk}', + fr: '${break} => ${safe} => ${unk}', + ja: '${break} => ${safe} => ${unk}', + cn: '${break} => ${safe} => ${unk}', + ko: '${break} => ${safe} => ${unk}', + }, + }, + }, + // After wind + { + id: 'QueenEternal Ex Divide and Conquer', + type: 'StartsUsing', + netRegex: { id: 'A017', source: 'Queen Eternal', capture: false }, + response: Responses.spread(), + }, + // Earth phase + { + id: 'QueenEternal Ex Earth Phase Initial Up', + type: 'Ability', + netRegex: { id: 'A01A', capture: false }, + suppressSeconds: 1, + infoText: (_data, _matches, output) => output.up(), + outputStrings: { + up: { + en: 'Up', + cn: '上浮', + }, + }, + }, + { + id: 'QueenEternal Ex Earth Phase First Towers', + type: 'Ability', + netRegex: { id: 'A028', capture: false }, + delaySeconds: 14.3, + infoText: (_data, _matches, output) => output.downSoak(), + outputStrings: { + downSoak: { + en: 'Down, soak tower', + cn: '下降 => 踩塔', + }, + }, + }, + { + id: 'QueenEternal Ex Earth Phase Gravitational Empire Pillar Collector', + type: 'StartsUsing', + netRegex: { id: 'A02C', capture: true }, + condition: Conditions.targetIsYou(), + response: Responses.spread(), + run: (data) => data.gravitationalEmpireMech = 'spread', + }, + { + id: 'QueenEternal Ex Earth Phase Gravitational Empire Ray Collector', + type: 'Tether', + netRegex: { id: '0011', capture: true }, + condition: (data, matches) => matches.source === data.me, + infoText: (_data, _matches, output) => output.cone(), + run: (data) => data.gravitationalEmpireMech = 'cone', + outputStrings: { + cone: { + en: 'Cone on YOU', + cn: '扇形点名', + }, + }, + }, + { + id: 'QueenEternal Ex Earth Phase Gravitational Empire Towers', + type: 'StartsUsing', + netRegex: { id: 'A02B', capture: false }, + delaySeconds: 0.5, + infoText: (data, _matches, output) => { + if (data.gravitationalEmpireMech !== 'tower') + return; + return output.downSoak(); + }, + outputStrings: { + downSoak: { + en: 'Down, soak tower', + cn: '下降 => 踩塔', + }, + }, + }, + { + id: 'QueenEternal Ex Earth Phase Boulder', + type: 'HeadMarker', + netRegex: { id: '022F', capture: false }, + suppressSeconds: 1, + response: Responses.spread(), + }, + { + id: 'QueenEternal Ex Earth Phase Weighty Blow', + type: 'StartsUsing', + netRegex: { id: 'A033', source: 'Queen Eternal', capture: false }, + infoText: (_data, _matches, output) => output.text(), + outputStrings: { + text: { + en: 'Hide behind rocks', + cn: '躲在石头后', + }, + }, + }, + // After earth + { + id: 'QueenEternal Ex Coronation Laser Collector', + type: 'StartsUsing', + netRegex: { id: 'A013', source: 'Queen Eternal', capture: false }, + promise: async (data) => { + const combatants = (await callOverlayHandler({ + call: 'getCombatants', + })); + if (combatants === null) { + console.error(`Coronation Laser Collector: null data`); + return; + } + const lasers = combatants.combatants.filter((c) => c.BNpcID === 18043); + if (lasers.length !== 4) { + console.error( + `Coronation Laser Collector: expected 4, got ${combatants.combatants.length}`, + ); + return; + } + for (const laser of lasers) { + data.actorPositions[laser.ID?.toString(16).toUpperCase() ?? ''] = { + x: laser.PosX, + y: laser.PosY, + }; + } + }, + }, + { + id: 'QueenEternal Ex Coronation Laser Tether Collector', + type: 'Tether', + netRegex: { id: ['010E', '010F'], capture: true }, + infoText: (data, matches, output) => { + const idToSideMap = { + '010E': -1, + '010F': 1, // 'right', + }; + const offset = idToSideMap[matches.id]; + const pos = data.actorPositions[matches.targetId]; + if (offset === undefined || pos === undefined) { + console.error( + `Coronation Laser Tether Collector: ${offset ?? 'undefined'}, ${JSON.stringify(pos)}`, + ); + return output.unknown(); + } + const laserDirNum = Directions.xyTo4DirNum(pos.x, pos.y, 100.0, 100.0); + const sideDirNum = (4 + laserDirNum + offset) % 4; + const laserDir = Directions.outputFromCardinalNum(laserDirNum); + const sideDir = Directions.outputFromCardinalNum(sideDirNum); + if (laserDir === 'unknown' || sideDir === 'unknown') { + console.error( + `Coronation Laser Tether Collector: laserDir = ${laserDir}, sideDir = ${sideDir}`, + ); + return output.unknown(); + } + data.coronationLasers.push({ + dir: laserDir, + side: sideDir, + name: matches.source, + }); + if (data.coronationLasers.length < 8) + return; + const myLaser = data.coronationLasers.find((laser) => laser.name === data.me); + if (myLaser === undefined) + throw new UnreachableCode(); + const partnerLaser = data.coronationLasers.find((laser) => + laser.dir === myLaser.dir && laser !== myLaser + ); + return output.text({ + laserDir: output[myLaser.dir](), + sideDir: output[myLaser.side](), + partner: data.party.member(partnerLaser?.name), + }); + }, + outputStrings: { + ...Directions.outputStringsCardinalDir, + text: { + en: '${laserDir} laser, ${sideDir} side, w/ ${partner}', + cn: '${laserDir} 激光, ${sideDir} 侧, 和 ${partner}', + }, + unknown: Outputs.unknown, + }, + }, + { + id: 'QueenEternal Ex Absolute Authority', + type: 'StartsUsing', + netRegex: { id: 'A041', source: 'Queen Eternal', capture: false }, + infoText: (_data, _matches, output) => output.bait(), + outputStrings: { + bait: Outputs.baitPuddles, + }, + }, + { + id: 'QueenEternal Ex Absolute Authority Debuff Collector', + type: 'GainsEffect', + netRegex: { effectId: '105A', capture: true }, + condition: Conditions.targetIsYou(), + run: (data) => data.absoluteAuthorityDebuff = 'spread', + }, + { + id: 'QueenEternal Ex Absolute Authority Debuff Mechanics', + type: 'GainsEffect', + netRegex: { effectId: '105A', capture: false }, + delaySeconds: 1, + suppressSeconds: 1, + infoText: (data, _matches, output) => { + return output.combo({ + stackSpread: output[data.absoluteAuthorityDebuff](), + dorito: output.dorito(), + }); + }, + outputStrings: { + spread: { + en: 'Flare Marker Spread', + cn: '核爆点名分散', + }, + stack: Outputs.stackMarker, + dorito: Outputs.doritoStack, + combo: { + en: '${stackSpread} => ${dorito}', + de: '${stackSpread} => ${dorito}', + fr: '${stackSpread} => ${dorito}', + ja: '${stackSpread} => ${dorito}', + cn: '${stackSpread} => ${dorito}', + ko: '${stackSpread} => ${dorito}', + }, + }, + }, + // Ice phase + { + id: 'QueenEternal Ex Ice Phase Motion Headmarker', + type: 'HeadMarker', + netRegex: { id: '022A', capture: false }, + suppressSeconds: 1, + response: Responses.moveAround(), + }, + { + id: 'QueenEternal Ex Ice Phase Icecicles', + type: 'Tether', + netRegex: { id: '0039', capture: true }, + condition: Conditions.targetIsYou(), + promise: async (data, matches) => { + const combatants = (await callOverlayHandler({ + call: 'getCombatants', + ids: [parseInt(matches.sourceId, 16)], + })); + if (combatants === null) { + console.error(`Ice Phase Icecicles: null data`); + return; + } + if (combatants.combatants.length !== 1) { + console.error(`Ice Phase Icecicles: expected 1, got ${combatants.combatants.length}`); + return; + } + const icecicle = combatants.combatants[0]; + if (!icecicle) + return; + data.actorPositions[matches.sourceId] = { + x: icecicle.PosX, + y: icecicle.PosY, + }; + }, + infoText: (data, matches, output) => { + const iceciclePos = data.actorPositions[matches.sourceId]; + if (iceciclePos === undefined) { + return output.unknown(); + } + if (iceciclePos.x < 100.0) { + return output.east(); + } + return output.west(); + }, + outputStrings: { + unknown: { + en: 'Spread ???, stretch tethers', + cn: '???分散, 拉线至变色', + }, + west: { + en: 'Spread West, stretch tethers', + cn: '左分散, 拉线至变色', + }, + east: { + en: 'Spread East, stretch tethers', + cn: '右分散, 拉线至变色', + }, + }, + }, + // Phase two + { + id: 'QueenEternal Ex Platform Tracker', + type: 'MapEffect', + netRegex: { location: ['09', '0A', '0B'], capture: true }, + run: (data, matches) => { + const flags = { + '00200010': 'ccw', + '00020001': 'cw', + }; + const slots = { + '09': 'wind', + '0A': 'earth', + '0B': 'ice', + }; + const dir = flags[matches.flags]; + const element = slots[matches.location]; + if (dir === undefined || element === undefined) { + return; + } + if (dir === 'cw') { + data.radicalShiftCWPlatform = element; + } else { + data.radicalShiftCCWPlatform = element; + } + }, + }, + { + id: 'QueenEternal Ex Rotation Direction + Spread', + type: 'MapEffect', + netRegex: { flags: ['08000400', '01000080'], location: '0C', capture: true }, + infoText: (data, matches, output) => { + const dir = matches.flags === '08000400' ? 'cw' : 'ccw'; + let elem = data.radicalShiftCWPlatform; + if (dir === 'ccw') { + elem = data.radicalShiftCCWPlatform; + } + if (elem === undefined) { + return output.combo({ + elem: output.unknown(), + spread: output.spread(), + }); + } + return output.combo({ + elem: output[elem](), + spread: output.spread(), + }); + }, + outputStrings: { + spread: Outputs.spread, + unknown: Outputs.unknown, + wind: { + en: 'Wind/Green', + cn: '风/绿地板', + }, + earth: { + en: 'Earth/Yellow', + cn: '土/黄地板', + }, + ice: { + en: 'Ice/Blue', + cn: '冰/蓝地板', + }, + combo: { + en: '${elem} => ${spread}', + de: '${elem} => ${spread}', + fr: '${elem} => ${spread}', + ja: '${elem} => ${spread}', + cn: '${elem} => ${spread}', + ko: '${elem} => ${spread}', + }, + }, + }, + { + id: 'QueenEternal Ex Radical Shift', + type: 'StartsUsing', + netRegex: { id: 'A04F', source: 'Queen Eternal', capture: false }, + response: Responses.bigAoe(), + }, + { + id: 'QueenEternal Ex Dying Memory', + type: 'StartsUsing', + netRegex: { id: 'A059', source: 'Queen Eternal', capture: false }, + response: Responses.aoe(), + }, + { + id: 'QueenEternal Ex Royal Banishment', + type: 'StartsUsing', + netRegex: { id: 'A05A', source: 'Queen Eternal', capture: false }, + response: Responses.aoe(), + }, + { + id: 'QueenEternal Ex Tyranny\'s Grasp', + type: 'StartsUsing', + netRegex: { id: 'A055', source: 'Queen Eternal', capture: false }, + infoText: (_data, _matches, output) => output.back(), + outputStrings: { + back: { + en: 'Back, Tank Towers => AoE', + cn: '去后半场, 坦克踩塔 => AoE', + }, + }, + }, + ], +}); diff --git a/07-dt/trial/queen-eternal-ex.txt b/07-dt/trial/queen-eternal-ex.txt new file mode 100644 index 0000000000..72bd0e6559 --- /dev/null +++ b/07-dt/trial/queen-eternal-ex.txt @@ -0,0 +1,212 @@ +# -p A04B:1000.0 -ii A008 A009 A00D A00E A00F A010 A011 A018 A026 A027 A02F A030 A053 A054 A056 + +# Phase one pulled from -r XwHyk2NAKnbzZLf7 -rf 3 +# Phase two pulled from -r GBaArv7yzHnXck8D -rf 17 +# A lot of manual cleanup applied + +hideall "--Reset--" +hideall "--sync--" + +# Phase one +0.0 "--sync--" InCombat { inGameCombat: "1" } window 0,1 +13.1 "--sync--" StartsUsing { id: "A00C", source: "Queen Eternal" } +15.8 "Aethertithe" Ability { id: "A00C", source: "Queen Eternal" } duration 27.8 +28.9 "Retribute" Ability { id: "A012", source: "Queen Eternal" } +38.1 "Retribute" Ability { id: "A012", source: "Queen Eternal" } +47.3 "Retribute" Ability { id: "A012", source: "Queen Eternal" } +59.7 "Virtual Shift" Ability { id: "A019", source: "Queen Eternal" } window 59.7,10 + +# Wind miniphase +68.8 "Laws of Wind" Ability { id: "A023", source: "Queen Eternal" } +73.8 "Aeroquell" Ability { id: "A025", source: "Queen Eternal" } +86.8 "Legitimate Force" Ability { id: ["A01E", "A020"], source: "Queen Eternal" } +89.9 "Legitimate Force" Ability { id: ["A021", "A022"], source: "Queen Eternal" } +93.0 "Wind of Change" #Ability { id: "A024", source: "Queen Eternal" } +100.9 "World Shatter" Ability { id: "A01C", source: "Queen Eternal" } +# End wind miniphase + +113.0 "Prosecution of War 1" Ability { id: "A00A", source: "Queen Eternal" } +116.1 "Prosecution of War 2" Ability { id: "A00B", source: "Queen Eternal" } +126.8 "Divide and Conquer x8" Ability { id: "A017", source: "Queen Eternal" } duration 7 +# TODO: Better timeline name here. +137.9 "Divide and Conquer" Ability { id: "7729", source: "Queen Eternal" } +145.9 "Royal Domain" Ability { id: "A04E", source: "Queen Eternal" } +159.1 "Virtual Shift" Ability { id: "A01A", source: "Queen Eternal" } window 159.1,10 + +# Earth miniphase +168.2 "Laws of Earth" Ability { id: "A028", source: "Queen Eternal" } +179.3 "Legitimate Force Left/Right" Ability { id: ["A01E", "A020"], source: "Queen Eternal" } +182.4 "Legitimate Force Right/Left" Ability { id: ["A021", "A022"], source: "Queen Eternal" } +187.4 "Burst" Ability { id: "A029", source: "Queen Eternal" } +199.5 "Gravitational Empire" Ability { id: "A02B", source: "Queen Eternal" } +200.5 "Gravity Pillar" Ability { id: "A02C", source: "Queen Eternal" } +200.5 "Gravity Ray" Ability { id: "A02D", source: "Queen Eternal" } +201.4 "Burst" Ability { id: "A029", source: "Queen Eternal" } +205.7 "Meteor Impact 1" Ability { id: "A02E", source: "Queen Eternal" } +212.8 "Meteor Impact 2" Ability { id: "A02E", source: "Queen Eternal" } +226.9 "Weighty Blow (cast)" Ability { id: "A033", source: "Queen Eternal" } +226.9 "Weighty Blow 1 (orb)" Ability { id: "A032", source: "Virtual Boulder" } +230.0 "Weighty Blow 2 (orb)" Ability { id: "A032", source: "Virtual Boulder" } +233.1 "Weighty Blow 3 (orb)" Ability { id: "A032", source: "Virtual Boulder" } +236.2 "Weighty Blow 4 (orb)" Ability { id: "A032", source: "Virtual Boulder" } +241.8 "World Shatter" Ability { id: "A01C", source: "Queen Eternal" } +# End earth miniphase + +254.0 "Prosecution of War 1" Ability { id: "A00A", source: "Queen Eternal" } +257.1 "Prosecution of War 2" Ability { id: "A00B", source: "Queen Eternal" } +263.2 "Coronation" Ability { id: "A013", source: "Queen Eternal" } +269.3 "Atomic Ray (cast)" Ability { id: "A015", source: "Queen Eternal" } +275.3 "Ruthless Regalia" Ability { id: "A014", source: "Queen Eternal" } +276.4 "Atomic Ray (damage)" Ability { id: "A016", source: "Queen Eternal" } +292.5 "Absolute Authority" Ability { id: "A041", source: "Queen Eternal" } duration 13.4 +302.4 "Absolute Authority (Flares/Stack)" Ability { id: "A046", source: "Queen Eternal" } +306.6 "Absolute Authority (Dorito Stack)" Ability { id: "A048", source: "Queen Eternal" } +313.5 "Absolute Authority (Knockback)" Ability { id: "A045", source: "Queen Eternal" } +330.7 "Virtual Shift" Ability { id: "A01B", source: "Queen Eternal" } window 330.7,10 + +# Ice miniphase +339.8 "Laws of Ice (motion)" Ability { id: "A035", source: "Queen Eternal" } +340.8 "Laws of Ice (platforms)" Ability { id: "A036", source: "Queen Eternal" } +357.0 "Rush" Ability { id: "A037", source: "Ice Pillar" } +364.8 "Legitimate Force Left/Right" Ability { id: ["A01E", "A020"], source: "Queen Eternal" } +367.9 "Legitimate Force Right/Left" Ability { id: ["A021", "A022"], source: "Queen Eternal" } +378.0 "Laws of Ice (motion)" Ability { id: "A035", source: "Queen Eternal" } +379.0 "Laws of Ice (platforms)" Ability { id: "A036", source: "Queen Eternal" } +384.1 "Drear Rising" Ability { id: "A03E", source: "Queen Eternal" } +385.1 "Ice Dart" #Ability { id: "A03F", source: "Queen Eternal" } +385.1 "Raised Tribute" #Ability { id: "A040", source: "Queen Eternal" } +391.2 "Drear Rising" Ability { id: "A03E", source: "Queen Eternal" } +392.2 "Ice Dart" #Ability { id: "A03F", source: "Queen Eternal" } +392.2 "Raised Tribute" #Ability { id: "A040", source: "Queen Eternal" } +398.3 "Drear Rising" Ability { id: "A03E", source: "Queen Eternal" } +399.3 "Ice Dart" #Ability { id: "A03F", source: "Queen Eternal" } +399.3 "Raised Tribute" #Ability { id: "A040", source: "Queen Eternal" } +405.4 "Drear Rising" Ability { id: "A03E", source: "Queen Eternal" } +406.4 "Ice Dart" #Ability { id: "A03F", source: "Queen Eternal" } +406.4 "Raised Tribute" #Ability { id: "A040", source: "Queen Eternal" } +414.5 "World Shatter" Ability { id: "A01C", source: "Queen Eternal" } +# End ice miniphase + +427.5 "Prosecution of War 1" Ability { id: "A00A", source: "Queen Eternal" } +430.6 "Prosecution of War 2" Ability { id: "A00B", source: "Queen Eternal" } +443.6 "Royal Domain" Ability { id: "A04E", source: "Queen Eternal" } +457.7 "Legitimate Force Left/Right" Ability { id: ["A01E", "A020"], source: "Queen Eternal" } +460.8 "Legitimate Force Right/Left" Ability { id: ["A021", "A022"], source: "Queen Eternal" } +468.8 "Royal Domain" Ability { id: "A04E", source: "Queen Eternal" } +486.9 "Authority Eternal" Ability { id: "A04A", source: "Queen Eternal" } +487.1 "Authority Eternal (Enrage)" Ability { id: "A04C", source: "Queen Eternal" } + +# Phase two +1000.0 "Authority Eternal" Ability { id: "A04B", source: "Queen Eternal" } window 1000.0,0 +1009.8 "--sync--" Ability { id: "A04D", source: "Queen Eternal" } + +# Radical Shift 1 +1039.8 "Radical Shift (rotate)" Ability { id: "A04F", source: "Queen Eternal" } +1044.9 "Radical Shift (spread)" Ability { id: "A050", source: "Queen Eternal" } +1058.9 "Radical Shift (rotate)" Ability { id: "A04F", source: "Queen Eternal" } +1064.0 "Radical Shift (spread)" Ability { id: "A050", source: "Queen Eternal" } +1072.0 "World Shatter" Ability { id: "7692", source: "Queen Eternal" } + +# Exaflares, front aoe + tank towers +1083.0 "Dimensional Distortion" Ability { id: "A052", source: "Queen Eternal" } duration 7.3 +1094.2 "Tyranny's Grasp (front)" Ability { id: "A055", source: "Queen Eternal" } +1095.4 "Tyranny's Grasp (left tower)" Ability { id: "A057", source: "Queen Eternal" } +1098.2 "Tyranny's Grasp (right tower)" Ability { id: "76D2", source: "Queen Eternal" } + +# damage spam +1099.4 "Dying Memory x7" duration 6.6 #Ability { id: "A059", source: "Queen Eternal" } +1107.1 "Dying Memory (big)" Ability { id: "4E4A", source: "Queen Eternal" } +1115.2 "Royal Banishment x7" Ability { id: "A05A", source: "Queen Eternal" } duration 6.9 +1125.1 "Royal Banishment (big)" Ability { id: "A05C", source: "Queen Eternal" } + +# Radical Shift 2 +1147.4 "Radical Shift (rotate)" Ability { id: "A04F", source: "Queen Eternal" } +1152.5 "Radical Shift (spread)" Ability { id: "A050", source: "Queen Eternal" } +1166.5 "Radical Shift (rotate)" Ability { id: "A04F", source: "Queen Eternal" } +1171.6 "Radical Shift (spread)" Ability { id: "A050", source: "Queen Eternal" } +1179.6 "World Shatter" Ability { id: "7692", source: "Queen Eternal" } + +1200.7 "Preservation (Enrage)" Ability { id: "A05D", source: "Queen Eternal" } + +# ALL ENCOUNTER ABILITIES +# 4E4A Dying Memory +# 7692 World Shatter +# 76D2 Tyranny's Grasp +# 7729 Divide and Conquer +# A008 --sync-- __P1 autoattack__ +# A009 --sync-- __P2 autoattack__ +# A00A Prosecution of War __Tankbuster__ +# A00B Prosecution of War __Tankbuster__ +# A00C Aethertithe __Initial Cast__ +# A00D Aethertithe __Repeated Hits__ +# A00E Aethertithe __Last Hit__ +# A00F Aethertithe __Extra damage spike__ +# A010 Aethertithe __Extra damage spike__ +# A011 Retribute __LP line stack__ +# A012 Retribute __LP line stack__ +# A013 Coronation +# A015 Atomic Ray +# A016 Atomic Ray +# A017 Divide and Conquer __Individual lines__ +# A018 Divide and Conquer __All lines re-fire__ +# A019 Virtual Shift +# A01A Virtual Shift +# A01B Virtual Shift +# A01C World Shatter +# A01E Legitimate Force __East safe, then west safe__ +# A020 Legitimate Force __West safe, then east safe__ +# A021 Legitimate Force __Followup hit for A020__ +# A022 Legitimate Force __Followup hit for A01E__ +# A023 Laws of Wind __Does nothing?__ +# A024 --sync-- __East/West Wind of Change knockback__ +# A025 Aeroquell __Healer stacks__ +# A026 Biting Chains __Damage for not breaking chains fast enough__ +# A027 Aero IV __Twister repeated knockback__ +# A028 Laws of Earth __Spawns the gravity pillars__ +# A029 Burst __Tower soak damage__ +# A02B Gravitational Empire +# A02C Gravity Pillar +# A02D Gravity Ray +# A02E Meteor Impact __Cast__ +# A02F Meteor Impact __Actual meteor drops, on platform__ +# A030 Meteor Impact __Actual meteor drops, off platform__ +# A032 --sync-- __Weighty Blow orbs__ +# A033 Weighty Blow __Cast__ +# A035 Laws of Ice __Spawns/respawns bridges__ +# A036 Laws of Ice __Spawns/respawns bridges__ +# A037 Rush +# A038 Rush +# A039 Rush +# A03A Rush +# A03B Rush __Icecicle failure__ +# A03C Rush __Icecicle failure__ +# A03D Shatter __Icecicle failure__ +# A03E Drear Rising +# A03F Ice Dart +# A040 Raised Tribute +# A041 Absolute Authority __Cast__ +# A042 Absolute Authority __Puddles__ +# A043 Absolute Authority __Puddles__ +# A044 Absolute Authority __Repeated small damage__ +# A045 Absolute Authority __Knockback damage__ +# A046 Absolute Authority __Flare marker damage__ +# A047 Absolute Authority __Stack marker damage__ +# A048 Absolute Authority __Dorito stack damage, success__ +# A049 Absolute Authority __Dorito stack damage, failure__ +# A04A Authority Eternal +# A04B Authority Eternal +# A04D --sync-- +# A04E Royal Domain +# A04F Radical Shift +# A050 Radical Shift +# A052 Dimensional Distortion +# A053 Dimensional Distortion +# A054 Dimensional Distortion +# A055 Tyranny's Grasp +# A056 --sync-- +# A057 Tyranny's Grasp +# A059 Dying Memory +# A05A Royal Banishment +# A05B Royal Banishment +# A05C Royal Banishment +# A05D Preservation