Skip to content

Commit

Permalink
triggers build: raidboss: Barbariccia Ex minor improvements (#5865) c…
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions committed Oct 23, 2023
1 parent 3dfea8e commit 6d4fb87
Show file tree
Hide file tree
Showing 2 changed files with 204 additions and 37 deletions.
214 changes: 188 additions & 26 deletions 06-ew/trial/barbariccia-ex.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,49 @@ Options.Triggers.push({
timelineFile: 'barbariccia-ex.txt',
initData: () => {
return {
secretBreezeCount: 0,
boldBoulderTargets: [],
boulderBreakCount: 0,
hairFlayUpbraidTargets: [],
blowAwayCount: 0,
blowAwayPuddleCount: 0,
};
},
timelineTriggers: [
{
id: 'BarbaricciaEx Knuckle Drum',
regex: /Knuckle Drum/,
beforeSeconds: 5,
suppressSeconds: 15,
response: Responses.bigAoe(),
},
{
id: 'BarbaricciaEx Blow Away',
regex: /Blow Away/,
beforeSeconds: 5,
response: Responses.getTogether('info'),
beforeSeconds: 10,
durationSeconds: 5,
suppressSeconds: 15,
infoText: (_data, _matches, output) => output.text(),
outputStrings: {
text: {
en: 'Stack to Bait Puddles',
},
},
},
],
triggers: [
{
id: 'BarbaricciaEx Curling Iron Cleanup',
type: 'StartsUsing',
netRegex: { id: '75B2', source: 'Barbariccia', capture: false },
suppressSeconds: 5,
run: (data) => {
// This is mostly to clean up the rogue "Hair Spray" that happens
// not during Savage Barbery.
delete data.barberyMechanic;
delete data.nextBarberyMechanic;
},
},
{
id: 'BarbaricciaEx Void Aero IV',
type: 'StartsUsing',
Expand Down Expand Up @@ -66,62 +90,149 @@ Options.Triggers.push({
id: 'BarbaricciaEx Hair Raid Donut',
type: 'StartsUsing',
netRegex: { id: '757E', source: 'Barbariccia', capture: false },
response: Responses.getIn(),
durationSeconds: (data) => data.nextBarberyMechanic === undefined ? undefined : 5,
alertText: (data, _matches, output) => {
if (data.nextBarberyMechanic === 'stack')
return output.inAndHealerGroups();
if (data.nextBarberyMechanic === 'spread')
return output.inThenSpread();
return output.in();
},
outputStrings: {
in: Outputs.in,
inThenSpread: {
en: 'In => Spread',
},
inAndHealerGroups: {
en: 'In => Healer Groups',
},
},
},
{
id: 'BarbaricciaEx Hair Raid Donut Move',
type: 'Ability',
netRegex: { id: '757F', source: 'Barbariccia', capture: false },
condition: (data) => data.barberyMechanic === 'spread',
suppressSeconds: 5,
alertText: (_data, _matches, output) => output.text(),
outputStrings: {
text: {
en: 'Spread Out',
},
},
},
{
id: 'BarbaricciaEx Hair Raid Wall',
type: 'StartsUsing',
netRegex: { id: '757C', source: 'Barbariccia', capture: false },
alertText: (_data, _matches, output) => output.text(),
durationSeconds: (data) => data.nextBarberyMechanic === undefined ? undefined : 5,
alertText: (data, _matches, output) => {
if (data.nextBarberyMechanic === 'stack')
return output.wallAndHealerGroups();
if (data.nextBarberyMechanic === 'spread')
return output.wallThenSpread();
return output.wall();
},
outputStrings: {
text: {
wall: {
en: 'Wall',
de: 'Wand',
fr: 'Mur',
ja: '壁へ',
cn: '去场边',
ko: '벽으로',
},
wallAndHealerGroups: {
en: 'Wall + Healer Groups',
},
wallThenSpread: {
en: 'Wall => Spread',
},
},
},
{
id: 'BarbaricciaEx Hair Raid Wall Move',
type: 'Ability',
netRegex: { id: '757D', source: 'Barbariccia', capture: false },
condition: (data) => data.barberyMechanic === 'spread',
suppressSeconds: 5,
alertText: (_data, _matches, output) => output.text(),
outputStrings: {
text: {
en: 'Spread Out',
},
},
},
{
id: 'BarbaricciaEx Hair Spray',
type: 'StartsUsing',
// This spread mechanic is used later in other phases of the fight as well.
netRegex: { id: '75A6', source: 'Barbariccia', capture: false },
suppressSeconds: 1,
response: Responses.spread(),
infoText: (data, _matches, output) => {
// This spread mechanic is used later in other phases of the fight as well.
// However, that extra usage is fixed in the Curling Iron Cleanup trigger.
data.barberyMechanic = 'spread';
data.nextBarberyMechanic ??= 'stack';
// Suppress extra "spread" if we handled it in Hair Raid.
if (data.nextBarberyMechanic === 'spread') {
delete data.nextBarberyMechanic;
return;
}
return output.spread();
},
outputStrings: {
spread: Outputs.spread,
},
},
{
id: 'BarbaricciaEx Deadly Twist',
type: 'StartsUsing',
netRegex: { id: '75A7', source: 'Barbariccia', capture: false },
suppressSeconds: 2,
infoText: (_data, _matches, output) => output.groups(),
infoText: (data, _matches, output) => {
data.barberyMechanic = 'stack';
data.nextBarberyMechanic ??= 'spread';
// Suppress extra "stack" if we handled it in Hair Raid.
if (data.nextBarberyMechanic === 'stack') {
delete data.nextBarberyMechanic;
return;
}
return output.groups();
},
outputStrings: {
groups: {
en: 'Healer Groups',
de: 'Heiler-Gruppen',
fr: 'Groupes sur les heals',
ja: 'ヒラに頭割り',
cn: '治疗分组分摊',
ko: '힐러 그룹 쉐어',
},
groups: Outputs.healerGroups,
},
},
{
id: 'BarbaricciaEx Void Aero III',
type: 'StartsUsing',
netRegex: { id: '7571', source: 'Barbariccia' },
condition: Conditions.caresAboutPhysical(),
response: Responses.tankBusterSwap(),
},
{
id: 'BarbaricciaEx Secret Breeze',
id: 'BarbaricciaEx Secret Breeze 1',
type: 'Ability',
// Trigger on 7413 Hair Flay (large spreads during partner stacks)
netRegex: { id: '7413', source: 'Barbariccia', capture: false },
suppressSeconds: 1,
alertText: (_data, _matches, output) => output.protean(),
outputStrings: {
protean: {
en: 'Protean Spread',
},
},
},
{
id: 'BarbaricciaEx Secret Breeze Others',
type: 'StartsUsing',
netRegex: { id: '7580', source: 'Barbariccia', capture: false },
preRun: (data) => data.secretBreezeCount++,
durationSeconds: 3,
alertText: (_data, _matches, output) => output.protean(),
alertText: (data, _matches, output) => {
// On the first one, don't call too early. Call after the spread/partner stacks go off.
if (data.secretBreezeCount !== 1)
return output.protean();
},
outputStrings: {
protean: {
en: 'Protean',
Expand All @@ -140,14 +251,15 @@ Options.Triggers.push({
response: Responses.sharedTankBuster(),
},
{
id: 'BarbaricciaEx Brittle Boulder',
type: 'HeadMarker',
netRegex: { id: '016D', capture: false },
suppressSeconds: 2,
id: 'BarbaricciaEx Brittle Boulder 1',
type: 'Ability',
netRegex: { id: '7383', source: 'Barbariccia', capture: false },
durationSeconds: 8,
suppressSeconds: 5,
alertText: (_data, _matches, output) => output.text(),
outputStrings: {
text: {
en: 'Bait Middle => Out (Spread)',
en: 'Bait Middle => Out + Spread',
de: 'In der Mitte Ködern => Raus (verteilen)',
fr: 'Posez au centre -> Écartez-vous à l\'extérieur',
ja: '真ん中で誘導 => 8方向散開',
Expand All @@ -156,6 +268,18 @@ Options.Triggers.push({
},
},
},
{
id: 'BarbaricciaEx Boulder',
type: 'HeadMarker',
netRegex: { id: '0173', capture: false },
suppressSeconds: 2,
infoText: (_data, _matches, output) => output.text(),
outputStrings: {
text: {
en: 'Out + Spread',
},
},
},
{
// These also favor a certain order of Tank/Healer for first set then DPS second set,
// but if people are dead anybody can get these.
Expand All @@ -179,8 +303,13 @@ Options.Triggers.push({
id: 'BarbaricciaEx Brutal Rush Move',
type: 'Ability',
// When the Brutal Rush hits you, the follow-up Brutal Gust has locked in.
netRegex: { id: '7583', source: 'Barbariccia' },
condition: Conditions.targetIsYou(),
netRegex: { id: ['7583', '7584'], source: 'Barbariccia' },
condition: (data, matches) => {
// Suppress during the middle of puddles where these are (usually) naturally dodged.
if (data.blowAwayPuddleCount !== 0 && data.blowAwayPuddleCount !== 4)
return false;
return matches.target === data.me;
},
response: Responses.moveAway(),
},
{
Expand Down Expand Up @@ -278,6 +407,39 @@ Options.Triggers.push({
stackMarker: Outputs.stackMarker,
},
},
{
id: 'BarbaricciaEx Blow Away Reset',
type: 'Ability',
netRegex: { id: '7595', source: 'Barbariccia', capture: false },
run: (data) => {
data.blowAwayCount++;
data.blowAwayPuddleCount = 0;
},
},
{
id: 'BarbaricciaEx Blow Away Puddle Count',
type: 'StartsUsing',
netRegex: { id: '7596', source: 'Barbariccia', capture: false },
preRun: (data) => data.blowAwayPuddleCount++,
suppressSeconds: 1,
alertText: (data, _matches, output) => {
// This handles Brittle Boulder 2 as well.
if (data.blowAwayCount === 2 && data.blowAwayPuddleCount === 4)
return output.stackMiddle();
},
infoText: (data, _matches, output) => {
return output[`num${data.blowAwayPuddleCount}`]();
},
outputStrings: {
num1: Outputs.num1,
num2: Outputs.num2,
num3: Outputs.num3,
num4: Outputs.num4,
stackMiddle: {
en: 'Bait Middle',
},
},
},
{
id: 'BarbaricciaEx Impact',
type: 'StartsUsing',
Expand Down
27 changes: 16 additions & 11 deletions 06-ew/trial/barbariccia-ex.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ hideall "Brush with Death"

# Pattern 1a, linked with pattern 2a through 757A+7575 and 757A+757B
# 6? Possible Spell Ids
25.7 "--sync--" sync / 14:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/ window 10,10
31.7 "--sync--" sync / 1[56]:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/
32.7 "Savage Barbery (line/donut)" sync / 1[56]:[^:]*:Barbariccia:(7574|757A):/
34.8 "Savage Barbery (out)" sync / 1[56]:[^:]*:Barbariccia:(7575|757B):/
Expand All @@ -28,6 +29,7 @@ hideall "Brush with Death"
51.0 "Raging Storm" sync / 1[56]:[^:]*:Barbariccia:7572:/

# Pattern 2a
54.4 "--sync--" sync / 14:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/ window 10,10
60.4 "--sync--" sync / 1[56]:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/
61.4 "Savage Barbery (donut/line)" sync / 1[56]:[^:]*:Barbariccia:(757A|7574):/
63.5 "Savage Barbery (out)" sync / 1[56]:[^:]*:Barbariccia:(757B|7575):/
Expand Down Expand Up @@ -127,6 +129,7 @@ hideall "Brush with Death"
338.2 "Secret Breeze (protean)" #sync / 1[56]:[^:]*:Barbariccia:7581:/

# Pattern 3a, linked with pattern 4a through 757A+7575 and 757A+757B
341.4 "--sync--" sync / 14:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/ window 10,10
347.4 "--sync--" sync / 1[56]:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/
348.4 "Savage Barbery (line/donut)" sync / 1[56]:[^:]*:Barbariccia:(7574|757A):/
350.5 "Savage Barbery (out)" sync / 1[56]:[^:]*:Barbariccia:(7575|757B):/
Expand All @@ -150,6 +153,7 @@ hideall "Brush with Death"
409.2 "Upbraid" sync / 1[56]:[^:]*:Barbariccia:75A8:/

# Pattern 4a
410.7 "--sync--" sync / 14:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/ window 10,10
416.7 "--sync--" sync / 1[56]:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/
417.7 "Savage Barbery (donut/line)" sync / 1[56]:[^:]*:Barbariccia:(757A|7574):/
419.8 "Savage Barbery (out)" sync / 1[56]:[^:]*:Barbariccia:(757B|7575):/
Expand Down Expand Up @@ -220,19 +224,20 @@ hideall "Brush with Death"
622.9 "Secret Breeze (protean)" #sync / 1[56]:[^:]*:Barbariccia:7581:/

# Pattern 5a
628.2 "--sync--" sync / 1[56]:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/
629.2 "Savage Barbery (line/donut)" sync / 1[56]:[^:]*:Barbariccia:(7574|757A):/
631.3 "Savage Barbery (out)" sync / 1[56]:[^:]*:Barbariccia:(7575|757B):/
626.2 "--sync--" sync / 14:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/ window 10,10
632.2 "--sync--" sync / 1[56]:[^:]*:Barbariccia:(7573|7464|7465|7466|7489|748B):/
633.2 "Savage Barbery (line/donut)" sync / 1[56]:[^:]*:Barbariccia:(7574|757A):/
635.3 "Savage Barbery (out)" sync / 1[56]:[^:]*:Barbariccia:(7575|757B):/

632.3 "Brush with Death" sync / 1[56]:[^:]*:Barbariccia:75A4:/
636.3 "Brush with Death" sync / 1[56]:[^:]*:Barbariccia:75A4:/

# Pattern 5b
641.4 "--sync--" sync / 1[56]:[^:]*:Barbariccia:(757C|757E):/
643.4 "Hair Raid" sync / 1[56]:[^:]*:Barbariccia:(757D|757E):/
645.7 "Hair Spray/Deadly Twist" sync / 1[56]:[^:]*:Barbariccia:(75A6|75A7):/
645.4 "--sync--" sync / 1[56]:[^:]*:Barbariccia:(757C|757E):/
647.4 "Hair Raid" sync / 1[56]:[^:]*:Barbariccia:(757D|757F):/
649.7 "Hair Spray/Deadly Twist" sync / 1[56]:[^:]*:Barbariccia:(75A6|75A7):/

654.6 "Void Aero IV" sync / 1[56]:[^:]*:Barbariccia:7570:/
656.7 "Raging Storm" sync / 1[56]:[^:]*:Barbariccia:7572:/
658.6 "Void Aero IV" sync / 1[56]:[^:]*:Barbariccia:7570:/
660.7 "Raging Storm" sync / 1[56]:[^:]*:Barbariccia:7572:/

660.0 "--sync--" sync / 14:[^:]*:Barbariccia:75BE:/ window 700,10
669.0 "Maelstrom (enrage)" sync / 1[56]:[^:]*:Barbariccia:75BE:/
664.0 "--sync--" sync / 14:[^:]*:Barbariccia:75BE:/ window 700,10
673.0 "Maelstrom (enrage)" sync / 1[56]:[^:]*:Barbariccia:75BE:/

0 comments on commit 6d4fb87

Please sign in to comment.