-
Notifications
You must be signed in to change notification settings - Fork 383
/
Copy pathzeromus.ts
331 lines (326 loc) · 10.3 KB
/
zeromus.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
import Conditions from '../../../../../resources/conditions';
import Outputs from '../../../../../resources/outputs';
import { Responses } from '../../../../../resources/responses';
import ZoneId from '../../../../../resources/zone_id';
import { RaidbossData } from '../../../../../types/data';
import { TriggerSet } from '../../../../../types/trigger';
// TODO: better positions for 8AFA Abyssal Echoes
// TODO: Dimensional Surge calls (maybe this shares with Extreme)
// Are there other patterns in normal mode???
//
// Dimensional Surge 8B35 tether middle west
// [16:31:35.624] 257 101:80034E7B:00200004:02:00:0000
export type Data = RaidbossData;
const triggerSet: TriggerSet<Data> = {
id: 'TheAbyssalFracture',
zoneId: ZoneId.TheAbyssalFracture,
timelineFile: 'zeromus.txt',
triggers: [
{
id: 'Zeromus Abyssal Nox',
type: 'Ability',
netRegex: { id: '8AF7', source: 'Zeromus', capture: false },
suppressSeconds: 5,
alertText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
en: 'Heal to full',
de: 'Voll heilen',
ja: 'HPを全回復する',
cn: '奶满全队',
ko: '체력 풀피로',
},
},
},
{
id: 'Zeromus Abyssal Echoes',
type: 'Ability',
netRegex: { id: '8AF9', source: 'Zeromus', capture: false },
suppressSeconds: 5,
infoText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
en: 'Away from glowing circles',
de: 'Weg von den leuchtenden Kreisen',
ja: '光っている円から離れる',
cn: '远离黑洞',
ko: '빛나는 원에서 멀리 떨어지기',
},
},
},
{
id: 'Zeromus Sable Thread',
type: 'Ability',
netRegex: { id: '8AEF', source: 'Zeromus' },
alertText: (data, matches, output) => {
return output.lineStackOn!({ player: data.party.member(matches.target) });
},
outputStrings: {
lineStackOn: {
en: '5x line stack on ${player}',
de: '5x in einer Linie Sammeln auf ${player}',
ja: '${player}に5回の直線頭割り',
cn: '${player} 直线分摊 (5次)',
ko: '${player} 직선 쉐어 5번',
},
},
},
{
id: 'Zeromus Visceral Whirl NE Safe',
type: 'StartsUsing',
netRegex: { id: '8AFB', capture: false },
infoText: (_data, _matches, output) => {
return output.text!({ dir1: output.ne!(), dir2: output.sw!() });
},
outputStrings: {
text: {
en: '${dir1} / ${dir2}',
de: '${dir1} / ${dir2}',
ja: '${dir1} / ${dir2}',
cn: '${dir1} / ${dir2}',
ko: '${dir1} / ${dir2}',
},
ne: Outputs.northeast,
sw: Outputs.southwest,
},
},
{
id: 'Zeromus Visceral Whirl NW Safe',
type: 'StartsUsing',
netRegex: { id: '8AFE', source: 'Zeromus', capture: false },
infoText: (_data, _matches, output) => {
return output.text!({ dir1: output.nw!(), dir2: output.se!() });
},
outputStrings: {
text: {
en: '${dir1} / ${dir2}',
de: '${dir1} / ${dir2}',
ja: '${dir1} / ${dir2}',
cn: '${dir1} / ${dir2}',
ko: '${dir1} / ${dir2}',
},
nw: Outputs.northwest,
se: Outputs.southeast,
},
},
{
id: 'Zeromus Dark Matter',
type: 'HeadMarker',
netRegex: { id: '016C' },
response: Responses.tankBuster(),
},
{
id: 'Zeromus Nox',
type: 'HeadMarker',
netRegex: { id: '00C5' },
condition: Conditions.targetIsYou(),
response: Responses.spread(),
},
{
id: 'Zeromus Fractured Eventide NE Safe',
type: 'StartsUsing',
netRegex: { id: '8AF3', source: 'Zeromus', capture: false },
alertText: (_data, _matches, output) => output.ne!(),
outputStrings: {
ne: Outputs.northeast,
},
},
{
id: 'Zeromus Fractured Eventide NW Safe',
type: 'StartsUsing',
netRegex: { id: '8AF4', source: 'Zeromus', capture: false },
alertText: (_data, _matches, output) => output.nw!(),
outputStrings: {
nw: Outputs.northwest,
},
},
{
id: 'Zeromus Flare',
type: 'StartsUsing',
netRegex: { id: '8B12', source: 'Zeromus', capture: false },
alertText: (_data, _matches, output) => output.tower!(),
outputStrings: {
tower: {
en: 'Stand in Tower',
de: 'Steh im Turm',
ja: '塔を踏む',
cn: '踩塔',
ko: '기둥 밟기',
},
},
},
{
id: 'Zeromus Flare Hit',
type: 'Ability',
netRegex: { id: '8B12', source: 'Zeromus', capture: false },
suppressSeconds: 5,
response: Responses.getOut('info'),
},
{
id: 'Zeromus Big Bang',
type: 'StartsUsing',
netRegex: { id: '8B03', source: 'Zeromus', capture: false },
response: Responses.aoe(),
},
{
id: 'Zeromus Acceleration Bomb',
type: 'GainsEffect',
netRegex: { effectId: 'A61' },
condition: Conditions.targetIsYou(),
delaySeconds: (_data, matches) => parseFloat(matches.duration) - 3,
response: Responses.stopEverything(),
},
{
id: 'Zeromus The Dark Divides',
type: 'HeadMarker',
netRegex: { id: '0178' },
condition: Conditions.targetIsYou(),
response: Responses.spread(),
},
{
id: 'Zeromus The Dark Beckons',
type: 'HeadMarker',
netRegex: { id: '0064' },
response: Responses.stackMarkerOn(),
},
{
id: 'Zeromus Big Crunch',
type: 'StartsUsing',
netRegex: { id: '8B04', source: 'Zeromus', capture: false },
response: Responses.aoe(),
},
{
id: 'Zeromus Nostalgia',
type: 'StartsUsing',
netRegex: { id: '8B1A', source: 'Zeromus', capture: false },
response: Responses.bigAoe(),
},
{
id: 'Zeromus Akh Rhai',
type: 'HeadMarker',
netRegex: { id: '0017' },
condition: Conditions.targetIsYou(),
alertText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
en: 'Spread + Stay Out',
de: 'Verteilen + Draußen stehen',
ja: '散開 + 範囲から離れる',
cn: '分散 + 远离',
ko: '산개 + 범위에서 벗어나기',
},
},
},
],
timelineReplace: [
{
'locale': 'de',
'replaceSync': {
'Comet': 'Komet',
'Zeromus': 'Zeromus',
},
'replaceText': {
'\\(cast\\)': '(Wirken)',
'\\(proximity\\)': '(Distanz',
'Abyssal Echoes': 'Abyssal-Echos',
'Abyssal Nox': 'Abyssal-Nox',
'Big Bang': 'Großer Knall',
'Big Crunch': 'Großer Quetscher',
'Black Hole': 'Schwarzes Loch',
'Bury': 'Impakt',
'Chasmic Nails': 'Abyssal-Nagel',
'Dark Matter': 'Dunkelmaterie',
'Dimensional Surge': 'Dimensionsschwall',
'Explosion': 'Explosion',
'Flare': 'Flare',
'Flow of the Abyss': 'Abyssaler Strom',
'Fractured Eventide': 'Abendglut',
'Meteor Impact': 'Meteoreinschlag',
'Nostalgia': 'Heimweh',
'(?<! )Nox': 'Nox',
'Primal Roar': 'Lautes Gebrüll',
'Prominence Spine': 'Ossale Protuberanz',
'Rend the Rift': 'Dimensionsstörung',
'(?<! )Roar': 'Brüllen',
'Sable Thread': 'Pechschwarzer Pfad',
'The Dark Beckons': 'Fressende Finsternis: Last',
'The Dark Divides': 'Fressende Finsternis: Zerschmetterung',
'Visceral Whirl': 'Viszerale Schürfwunden',
'Void Bio': 'Nichts-Bio',
'Void Meteor': 'Nichts-Meteo',
},
},
{
'locale': 'fr',
'missingTranslations': true,
'replaceSync': {
'Comet': 'comète',
'Zeromus': 'Zeromus',
},
'replaceText': {
'Abyssal Echoes': 'Écho abyssal',
'Abyssal Nox': 'Nox abyssal',
'Big Bang': 'Big bang',
'Big Crunch': 'Big crunch',
'Black Hole': 'Trou noir',
'Bury': 'Impact',
'Chasmic Nails': 'Clous abyssaux',
'Dark Matter': 'Matière sombre',
'Dimensional Surge': 'Déferlante dimensionnelle',
'Explosion': 'Explosion',
'Flare': 'Brasier',
'Flow of the Abyss': 'Flot abyssal',
'Fractured Eventide': 'Éclat crépusculaire',
'Meteor Impact': 'Impact de météore',
'Nostalgia': 'Nostalgie',
'(?<! )Nox': 'Nox',
'Primal Roar': 'Rugissement furieux',
'Prominence Spine': 'Évidence ossuaire',
'Rend the Rift': 'Déchirure dimensionnelle',
'(?<! )Roar': 'Rugissement',
'Sable Thread': 'Rayon sombre',
'The Dark Beckons': 'Ténèbres rongeuses : Gravité',
'The Dark Divides': 'Ténèbres rongeuses : Pulvérisation',
'Visceral Whirl': 'Écorchure viscérale',
'Void Bio': 'Bactéries du néant',
'Void Meteor': 'Météores du néant',
},
},
{
'locale': 'ja',
'replaceSync': {
'Comet': 'コメット',
'Zeromus': 'ゼロムス',
},
'replaceText': {
'Abyssal Echoes': 'アビサルエコー',
'Abyssal Nox': 'アビサルノックス',
'Big Bang': 'ビッグバーン',
'Big Crunch': 'ビッグクランチ',
'Black Hole': 'ブラックホール',
'Bury': '衝撃',
'Chasmic Nails': 'アビサルネイル',
'Dark Matter': 'ダークマター',
'Dimensional Surge': 'ディメンションサージ',
'Explosion': '爆発',
'Flare': 'フレア',
'Flow of the Abyss': 'アビサルフロウ',
'Fractured Eventide': '黒竜閃',
'Meteor Impact': 'メテオインパクト',
'Nostalgia': '望郷',
'(?<! )Nox': 'ノックス',
'Primal Roar': '大咆哮',
'Prominence Spine': 'プロミネンススパイン',
'Rend the Rift': '次元干渉',
'(?<! )Roar': '咆哮',
'Sable Thread': '漆黒の熱線',
'The Dark Beckons': '闇の侵食:重',
'The Dark Divides': '闇の侵食:砕',
'Visceral Whirl': 'ヴィセラルワール',
'Void Bio': 'ヴォイド・バイオ',
'Void Meteor': 'ヴォイド・メテオ',
},
},
],
};
export default triggerSet;