-
Notifications
You must be signed in to change notification settings - Fork 383
/
Copy patha7s.ts
409 lines (403 loc) · 12.7 KB
/
a7s.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
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
import Conditions from '../../../../../resources/conditions';
import { Responses } from '../../../../../resources/responses';
import ZoneId from '../../../../../resources/zone_id';
import { RaidbossData } from '../../../../../types/data';
import { TriggerSet } from '../../../../../types/trigger';
export interface Data extends RaidbossData {
phase: number;
grabbed: string[];
stickyloom?: string;
}
// TODO: stun call for True Heart sprint ability?
// TODO: can we figure out jails from the location of the tethering gobbie?
// TODO: you can figure out who it is from who the bomb is on, but 8 blu <_<
// Red jail can stay up forever. The same color can be in different spots.
// Is it possible that for each jail phase, each color is in the same spot?
// One data point:
// Jail 1: purple(NE), red (NW), green (SE), white (NE)
// Jail 2: red(NW), green (SW), white (SW), purple (NW)
// Jail 3: green (NE), purple (SE), red (SW), white (SE)
// * in this example jail 1 red persisted through jail 1 green/white, but jail 2 red did not.
// Alarums and Lumbertype Magitek get added too late to be useful.
// Timeline:
// Jail 1:
// Option 1: (bomb on healer)
// green tether / white prey
// purple tether / red prey
// Option 2: (bomb on melee)
// purple tether / red prey
// green tether / white prey
// Cat Phase 1
// Jail 2:
// Option 1: (bomb on healer)
// red tether / green prey
// white tether / purple prey
// Option 2: (bomb on ranged/caster)
// white tether / purple prey
// red tether / green prey
// Hammertime
// Cat Phase 2
// Jail 3:
// Option 1: (2x bombs)
// green tether / purple prey
// red tether / white prey
// Option 2: (sizzlebeam on OT)
// red tether / white prey
// green tether / purple prey
const triggerSet: TriggerSet<Data> = {
id: 'AlexanderTheArmOfTheSonSavage',
zoneId: ZoneId.AlexanderTheArmOfTheSonSavage,
timelineNeedsFixing: true,
timelineFile: 'a7s.txt',
initData: () => {
return {
phase: 0,
grabbed: [],
};
},
triggers: [
{
id: 'A7S Phase Counter',
type: 'AddedCombatant',
netRegex: { name: 'Shanoa', capture: false },
run: (data) => data.phase++,
},
{
id: 'A7S Sizzlebeam',
type: 'HeadMarker',
netRegex: { id: '0018' },
alertText: (data, matches, output) => {
if (matches.target === data.me)
return output.sizzlebeamOnYou!();
},
infoText: (data, matches, output) => {
if (matches.target !== data.me)
return output.sizzlebeamOn!({ player: data.party.member(matches.target) });
},
outputStrings: {
sizzlebeamOn: {
en: 'Sizzlebeam on ${player}',
de: 'Gobpartikelstrahl auf ${player}',
fr: 'Gobrayon sur ${player}',
ja: '${player}にゴブ式波動砲',
cn: '波动炮点${player}',
ko: '"${player}" 고블린식 파동포',
},
sizzlebeamOnYou: {
en: 'Sizzlebeam on YOU',
de: 'Gobpartikelstrahl auf DIR',
fr: 'Gobrayon sur VOUS',
ja: '自分にゴブ式波動砲',
cn: '波动炮点名',
ko: '고블린식 파동포 대상자',
},
},
},
{
id: 'A7S Sizzlespark',
type: 'StartsUsing',
netRegex: { source: 'Quickthinx Allthoughts', id: '16F8', capture: false },
response: Responses.aoe(),
},
{
id: 'A7S Bomb Tether',
type: 'Tether',
netRegex: { source: 'Bomb', id: '001F' },
condition: Conditions.targetIsYou(),
infoText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
en: 'Bomb Spread',
de: 'Bomben verteilen',
fr: 'Bombe, dispersez-vous',
ja: '爆弾、散開',
cn: '炸弹,散开',
ko: '폭탄 뿌리기',
},
},
},
{
id: 'A7S Jail Prey',
type: 'HeadMarker',
netRegex: { id: '0029' },
condition: Conditions.targetIsYou(),
alertText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
en: 'Jail Prey',
de: 'Gefängnis Markierung',
fr: 'Marquage prison',
ja: '隔離部屋',
cn: '监狱点名',
ko: '감옥 징 대상자',
},
},
},
{
id: 'A7S Jail Tether',
type: 'Tether',
// This does not include the initial tether, unfortunately.
// This is another case of "added combatant with initial tether".
netRegex: { source: 'Boomtype Magitek Gobwalker G-VII', id: '0011' },
condition: Conditions.targetIsYou(),
suppressSeconds: 10,
infoText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
en: 'Jail Tether',
de: 'Gefängnis Verbindung',
fr: 'Lien prison',
ja: '隔離部屋線',
cn: '监狱连线',
ko: '감옥 줄 대상자',
},
},
},
{
id: 'A7S Kugelblitz',
type: 'StartsUsing',
netRegex: { source: 'Sturm Doll', id: '16FE' },
condition: (data) => data.CanStun(),
response: Responses.stun(),
},
{
id: 'A7S Zoomdoom Clear',
type: 'StartsUsing',
netRegex: { source: 'Quickthinx Allthoughts', id: '16F4', capture: false },
run: (data) => {
data.grabbed = [];
delete data.stickyloom;
},
},
{
id: 'A7S Gobbie Grab',
type: 'Ability',
netRegex: { source: 'Quickthinx Allthoughts', id: '15C0' },
run: (data, matches) => data.grabbed.push(matches.target),
},
{
id: 'A7S Stickyloom',
type: 'Ability',
netRegex: { source: 'Boomtype Magitek Gobwalker G-VII', id: '16F2' },
run: (data, matches) => data.stickyloom = matches.target,
},
{
id: 'A7S Padlock',
type: 'AddedCombatant',
netRegex: { name: 'Padlock', capture: false },
condition: (data) => {
// If you're not in a jail, kill the padlock.
return !data.grabbed.includes(data.me) && data.stickyloom !== data.me;
},
infoText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
en: 'Break Padlock',
de: 'Schloss zerstören',
fr: 'Cassez le cadenas',
ja: '錠前を破れ',
cn: '打破锁',
ko: '자물쇠 부수기',
},
},
},
{
id: 'A7S True Heart',
type: 'Ability',
netRegex: { source: 'Shanoa', id: '15EC', capture: false },
alertText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
en: 'Kill Heart',
de: 'Herz besiegen',
fr: 'Tuez le cœur',
ja: '真心を倒す',
cn: '击杀真心',
ko: '진심 없애기',
},
},
},
{
id: 'A7S Searing Wind',
type: 'GainsEffect',
netRegex: { effectId: '178' },
condition: Conditions.targetIsYou(),
alarmText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
en: 'Searing Wind on YOU',
de: 'Versengen auf DIR',
fr: 'Fournaise sur VOUS',
ja: '自分に灼熱',
cn: '热风点名',
ko: '뜨거운 바람 대상자',
},
},
},
],
timelineReplace: [
{
'locale': 'de',
'replaceSync': {
'Bomb': 'Bombe',
'Boomtype Magitek Gobwalker G-VII': 'Gob-Stampfer VII-L',
'Frostbite': 'Erfrierung',
'Padlock': 'Vorhängeschloss',
'Pyretic': 'Pyretisch',
'Quickthinx Allthoughts': 'Denkfix',
'Shanoa': 'Schwarz(?:e|er|es|en) Katze',
'Sturm Doll': 'Sturmpuppe',
'The electrocution gallery': 'Platz für Strafezeigen',
},
'replaceText': {
'Big Doll': 'Große Puppe',
'Bomb(?!(s|en))': 'Bombe',
'Bombs': 'Bomben',
'(?<! )Doll': 'Puppe',
'Flamethrower': 'Flammenwerfer',
'Hammertime': 'Hammertime',
'Jails': 'Gefängnisse',
'Get Prey': 'Markierung hohlen',
'Get Tether': 'Verbindung hohlen',
'Kill Heart': 'Herz besiegen',
'Resync': 'Resync',
'Sizzlebeam': 'Gobpartikelstrahl',
'Sizzlespark': 'Brutzelblitz',
'Small Doll(?!s)': 'kleine Puppe',
'Small Dolls': 'kleine Puppen',
'Stun Heart': 'Herz unterbrechen',
'Uplander Doom': 'Knallregen',
'Zoomdoom': 'Gobrakete',
},
},
{
'locale': 'fr',
'missingTranslations': true,
'replaceSync': {
'Bomb': 'bombe',
'Boomtype Magitek Gobwalker G-VII': 'gobblindé magitek G-VII Lamineur',
'Frostbite': 'Gelure',
'Padlock': 'cadenas',
'Pyretic': 'Chaleur',
'Quickthinx Allthoughts': 'Quickthinx le Cerveau',
'Shanoa': 'Chat-noir',
'Sturm Doll': 'poupée sturm',
'The electrocution gallery': 'square d\'exécution publique',
},
'replaceText': {
'Bomb': 'Bombe',
'Flamethrower': 'Lance-flammes',
'Hammertime': 'Coup de marteau',
'Sizzlebeam': 'Gobrayon',
'Sizzlespark': 'Gobétincelle',
'Uplander Doom': 'Fusillade',
'Zoomdoom': 'Gobroquette',
'Jails': 'Prison',
},
},
{
'locale': 'ja',
'missingTranslations': true,
'replaceSync': {
'Bomb': '爆弾',
'Boomtype Magitek Gobwalker G-VII': 'VII号ゴブリウォーカーL型',
'Frostbite': '凍傷',
'Padlock': '錠前',
'Pyretic': 'ヒート',
'Quickthinx Allthoughts': '万能のクイックシンクス',
'Shanoa': 'シャノア',
'Sturm Doll': 'シュツルムドール',
'The electrocution gallery': '公開処刑広場',
},
'replaceText': {
'Big Doll': '大きいドール',
'Bomb(?!s)': '爆弾',
'Bombs': '爆弾',
'(?<! )Doll': 'ドール',
'Flamethrower': 'フレイムスロアー',
'Hammertime': 'オシオキ',
'Jails': '隔離部屋',
'Get Prey': 'マーキングを取る',
'Get Tether': '線を取る',
'Kill Heart': '真心を倒す',
'Resync': 'シンク',
'Sizzlebeam': 'ゴブ式波動砲',
'Sizzlespark': 'ゴブリスパーク',
'Small Doll(?!s)': '小さいドール',
'Small Dolls': '小さいドール',
'Stun Heart': 'スタン: 真心',
'Uplander Doom': '一斉射撃',
'Zoomdoom': 'ゴブロケット',
},
},
{
'locale': 'cn',
'replaceSync': {
'Bomb': '炸弹',
'Boomtype Magitek Gobwalker G-VII': '7号哥布林战车L型',
'Frostbite': '冻伤',
'Padlock': '牢门的锁',
'Pyretic': '热病',
'Quickthinx Allthoughts': '万事通 奎克辛克斯',
'Shanoa': '夏诺雅',
'Sturm Doll': '风暴人偶',
'The electrocution gallery': '公开处刑广场',
},
'replaceText': {
'Big Doll': '大人偶',
'Bomb(?!(s|en))': '炸弹',
'Bombs': '炸弹',
'(?<! )Doll': '人偶',
'Flamethrower': '火焰喷射器',
'Hammertime': '惩戒',
'Jails': '监狱',
'Get Prey': '监狱点名',
'Get Tether': '监狱连线',
'Kill Heart': '击杀真心',
'Resync': '重新同步',
'Sizzlebeam': '哥布式波动炮',
'Sizzlespark': '哥布林火花',
'Small Doll(?!s)': '小人偶',
'Small Dolls': '小人偶',
'Stun Heart': '击晕真心',
'Uplander Doom': '齐射',
'Zoomdoom': '哥布火箭',
},
},
{
'locale': 'ko',
'replaceSync': {
'Bomb': '폭탄',
'Boomtype Magitek Gobwalker G-VII': 'VII호 고블린워커 L형',
'Frostbite': '동상',
'Padlock': '자물쇠',
'Quickthinx Allthoughts': '만능의 퀵싱크스',
'Shanoa': '샤노아',
'Sturm Doll': '인형 폭기병',
'The electrocution gallery': '공개처형 광장',
'Pyretic': '열병',
},
'replaceText': {
'Big Doll': '큰 인형',
'Bomb(?!s)': '폭탄',
'Bombs': '폭탄',
'(?<! )Doll': '인형',
'Flamethrower': '화염 방사',
'Get Prey': '인형뽑기',
'Get Tether': '밧줄',
'Hammertime': '장판',
'Jails': '감옥',
'Kill Heart': '진심 없애기',
'Resync': '재동기화',
'Small Doll(?!s)': '작은 인형',
'Small Dolls': '작은 인형',
'Sizzlebeam': '고블린식 파동포',
'Sizzlespark': '고블린 불꽃',
'Stun Heart': '진심 기절시키기',
'Uplander Doom': '일제 사격',
'Zoomdoom': '고블린 로켓',
},
},
],
};
export default triggerSet;