Skip to content

Commit

Permalink
raidboss: tweak timing/output for FRU P1 Fall of Faith (#578)
Browse files Browse the repository at this point in the history
Suggesting some slight tweaks for the P1 Fall of Faith trigger. This PR:
* extends the duration of the full sequence alert to 12.2 seconds (right
now, it disappears as the 2nd cleave is going off; this will now keep it
active until right before the 4th cleave resolves)
* includes the target of the first three tethers in their alerts, and
raises the output to `alertText` if the tether is on the user for added
awareness

Happy to keep this as a personal trigger if no one else finds it useful.
  • Loading branch information
wexxlee authored Jan 28, 2025
1 parent f4e91b9 commit 8a9dc61
Showing 1 changed file with 89 additions and 66 deletions.
155 changes: 89 additions & 66 deletions ui/raidboss/data/07-dt/ultimate/futures_rewritten.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ export interface Data extends RaidbossData {
// P1 -- Fatebreaker
p1ConcealSafeDirs: DirectionOutput8[];
p1StackSpread?: 'stack' | 'spread';
p1SeenBurnishedGlory: boolean;
p1FallOfFaithTethers: ('fire' | 'lightning')[];
// P2 -- Usurper Of Frost
p2QuadrupleFirstTarget: string;
Expand Down Expand Up @@ -240,6 +241,7 @@ const triggerSet: TriggerSet<Data> = {
phase: 'p1',
actorSetPosTracker: {},
p1ConcealSafeDirs: [...Directions.output8Dir],
p1SeenBurnishedGlory: false,
p1FallOfFaithTethers: [],
p2QuadrupleFirstTarget: '',
p2QuadrupleDebuffApplied: false,
Expand Down Expand Up @@ -391,6 +393,7 @@ const triggerSet: TriggerSet<Data> = {
type: 'StartsUsing',
netRegex: { id: '9CEA', source: 'Fatebreaker', capture: false },
response: Responses.bleedAoe(),
run: (data) => data.p1SeenBurnishedGlory = true,
},
{
id: 'FRU P1 Burnt Strike Fire',
Expand Down Expand Up @@ -460,89 +463,109 @@ const triggerSet: TriggerSet<Data> = {
},
{
id: 'FRU P1 Fall of Faith Collector',
type: 'StartsUsing',
type: 'Tether',
netRegex: {
id: ['9CC9', '9CCC'],
id: ['00F9', '011F'], // 00F9 = fire; 011F = lightning
source: ['Fatebreaker', 'Fatebreaker\'s Image'],
capture: true,
},
durationSeconds: (data) => data.p1FallOfFaithTethers.length >= 3 ? 8.7 : 3,
infoText: (data, matches, output) => {
const curTether = matches.id === '9CC9' ? 'fire' : 'lightning';
// Only collect after Burnished Glory, since '00F9' tethers are used during TotH.
condition: (data) => data.phase === 'p1' && data.p1SeenBurnishedGlory,
durationSeconds: (data) => data.p1FallOfFaithTethers.length >= 3 ? 12.2 : 3,
response: (data, matches, output) => {
// cactbot-builtin-response
output.responseOutputStrings = {
fire: {
en: 'Fire',
de: 'Feuer',
ja: '炎',
cn: '火',
ko: '불',
},
lightning: {
en: 'Lightning',
de: 'Blitz',
ja: '雷',
cn: '雷',
ko: '번개',
},
one: {
en: '1',
de: '1',
ja: '1',
cn: '1',
ko: '1',
},
two: {
en: '2',
de: '2',
ja: '2',
cn: '2',
ko: '2',
},
three: {
en: '3',
de: '3',
ja: '3',
cn: '3',
ko: '3',
},
onYou: {
en: 'On YOU',
},
tether: {
en: '${num}: ${elem} (${target})',
de: '${num}: ${elem} (${target})',
ja: '${num}: ${elem} (${target})',
cn: '${num}: ${elem} (${target})',
ko: '${num}: ${elem} (${target})',
},
all: {
en: '${e1} => ${e2} => ${e3} => ${e4}',
de: '${e1} => ${e2} => ${e3} => ${e4}',
ja: '${e1} => ${e2} => ${e3} => ${e4}',
cn: '${e1} => ${e2} => ${e3} => ${e4}',
ko: '${e1} => ${e2} => ${e3} => ${e4}',
},
};

const curTether = matches.id === '00F9' ? 'fire' : 'lightning';
data.p1FallOfFaithTethers.push(curTether);

if (data.p1FallOfFaithTethers.length < 4) {
const num = data.p1FallOfFaithTethers.length === 1
? 'one'
: (data.p1FallOfFaithTethers.length === 2 ? 'two' : 'three');
return output.tether!({
num: output[num]!(),
elem: output[curTether]!(),
});
if (data.me === matches.target)
return {
alertText: output.tether!({
num: output[num]!(),
elem: output[curTether]!(),
target: output.onYou!(),
}),
};
return {
infoText: output.tether!({
num: output[num]!(),
elem: output[curTether]!(),
target: data.party.member(matches.target).nick,
}),
};
}

const [e1, e2, e3, e4] = data.p1FallOfFaithTethers;

if (e1 === undefined || e2 === undefined || e3 === undefined || e4 === undefined)
return;

return output.all!({
e1: output[e1]!(),
e2: output[e2]!(),
e3: output[e3]!(),
e4: output[e4]!(),
});
},
outputStrings: {
fire: {
en: 'Fire',
de: 'Feuer',
ja: '炎',
cn: '火',
ko: '불',
},
lightning: {
en: 'Lightning',
de: 'Blitz',
ja: '雷',
cn: '雷',
ko: '번개',
},
one: {
en: '1',
de: '1',
ja: '1',
cn: '1',
ko: '1',
},
two: {
en: '2',
de: '2',
ja: '2',
cn: '2',
ko: '2',
},
three: {
en: '3',
de: '3',
ja: '3',
cn: '3',
ko: '3',
},
tether: {
en: '${num}: ${elem}',
de: '${num}: ${elem}',
ja: '${num}: ${elem}',
cn: '${num}: ${elem}',
ko: '${num}: ${elem}',
},
all: {
en: '${e1} => ${e2} => ${e3} => ${e4}',
de: '${e1} => ${e2} => ${e3} => ${e4}',
ja: '${e1} => ${e2} => ${e3} => ${e4}',
cn: '${e1} => ${e2} => ${e3} => ${e4}',
ko: '${e1} => ${e2} => ${e3} => ${e4}',
},
return {
infoText: output.all!({
e1: output[e1]!(),
e2: output[e2]!(),
e3: output[e3]!(),
e4: output[e4]!(),
}),
};
},
},
// ************************
Expand Down

0 comments on commit 8a9dc61

Please sign in to comment.