Skip to content

Commit

Permalink
triggers build: raidboss: add P12S delay info to white flame baits (#…
Browse files Browse the repository at this point in the history
…5747)

Followup to #5689.

This also fixes a bug where the delays were incorrect because ongoing
add updates caused the trigger to re-fire. dd45f2b
  • Loading branch information
github-actions committed Aug 11, 2023
1 parent 6528a0c commit 4d9d024
Showing 1 changed file with 86 additions and 55 deletions.
141 changes: 86 additions & 55 deletions 06-ew/raid/p12s.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,23 @@ const limitCutMap = {
const limitCutIds = Object.keys(limitCutMap);
const wingIds = Object.values(wings);
const superchainNpcBaseIds = Object.values(superchainNpcBaseIdMap);
const whiteFlameDelayOutputStrings = {
delay1: {
en: 'now',
},
delay2: {
en: 'soon',
},
delay3: {
en: 'delayed',
},
delay4: {
en: 'very delayed',
},
delay5: {
en: 'verrry delayed',
},
};
const conceptPairMap = {
[headmarkers.playstationCircle]: 'circle',
[headmarkers.playstationTriangle]: 'triangle',
Expand Down Expand Up @@ -1689,19 +1706,18 @@ Options.Triggers.push({
pair: [{ key: 'ModelStatus', value: '16384' }],
capture: true,
},
condition: (data, matches) =>
data.lcCombatants.length > 0 &&
data.lcCombatants.find((c) => c.ID === parseInt(matches.id, 16)) !== undefined,
run: (data, matches) => {
condition: (data, matches) => {
// This happens repeatedly, so suppress future calls.
if (data.lcWhiteFlameDelay !== undefined)
return false;
const combatant = data.lcCombatants.find((c) => c.ID === parseInt(matches.id, 16));
if (combatant === undefined) {
console.error(`LC Line Bait Collector: Could not find combatant for ID ${matches.id}`);
return;
}
if (combatant === undefined)
return false;
combatant.order = data.lcCombatantsOffset;
++data.lcCombatantsOffset;
if (data.lcCombatantsOffset < 8)
return;
return data.lcCombatantsOffset === 8;
},
run: (data) => {
// Find the intercardinal adds that jumped, and then sort by order.
const orderedJumps = data.lcCombatants
.filter((combatant) =>
Expand All @@ -1718,7 +1734,6 @@ Options.Triggers.push({
const [o1, o2, o3, o4] = orderedJumps;
if (o1 === undefined || o2 === undefined || o3 === undefined || o4 === undefined)
return;
// delay of 1 = immediate, 5 = maximum
data.lcWhiteFlameDelay = [o1 + 1, o2 - o1, o3 - o2, o4 - o3];
},
},
Expand All @@ -1741,26 +1756,34 @@ Options.Triggers.push({
// cactbot-builtin-response
output.responseOutputStrings = {
baitLaser: {
en: 'Bait Laser',
de: 'Laser Ködern',
fr: 'Bait le laser',
ja: 'レーザー誘導',
cn: '引导激光',
ko: '레이저 유도',
en: 'Bait (${delay})',
de: 'Laser Ködern (${delay})',
fr: 'Bait le laser (${delay})',
ja: 'レーザー誘導 (${delay})',
cn: '引导激光 (${delay})',
ko: '레이저 유도 (${delay})', // FIXME
},
firstWhiteFlame: {
en: '(5 and 7 bait)',
de: '(5 und 7 ködern)',
fr: '(5 et 7 bait)',
ja: '(5と7誘導)',
cn: '(5 和 7 引导)',
ko: '(5, 7 레이저)',
en: '(5 and 7 ${delay})',
de: '(5 und 7 ködern ${delay})',
fr: '(5 et 7 bait ${delay})',
ja: '(5と7誘導 ${delay})',
cn: '(5 和 7 引导 ${delay})',
ko: '(5, 7 레이저 ${delay})', // FIXME
},
...whiteFlameDelayOutputStrings,
};
// TODO: use `data.lcWhiteFlameDelay` to say things like "quick" or "delayed" or "very delayed".
const infoText = output.firstWhiteFlame();
const delayMap = {
1: output.delay1(),
2: output.delay2(),
3: output.delay3(),
4: output.delay4(),
5: output.delay5(),
};
const delayStr = delayMap[data.lcWhiteFlameDelay?.[0] ?? 1];
const infoText = output.firstWhiteFlame({ delay: delayStr });
if (data.limitCutNumber === 5 || data.limitCutNumber === 7)
return { alertText: output.baitLaser(), infoText: infoText };
return { alertText: output.baitLaser({ delay: delayStr }), infoText: infoText };
return { infoText: infoText };
},
},
Expand All @@ -1778,54 +1801,62 @@ Options.Triggers.push({
// cactbot-builtin-response
output.responseOutputStrings = {
baitLaser: {
en: 'Bait Laser',
de: 'Laser Ködern',
fr: 'Bait le laser',
ja: 'レーザー誘導',
cn: '引导激光',
ko: '레이저 유도',
en: 'Bait (${delay})',
de: 'Laser Ködern (${delay})',
fr: 'Bait le laser (${delay})',
ja: 'レーザー誘導 (${delay})',
cn: '引导激光 (${delay})',
ko: '레이저 유도 (${delay})', // FIXME
},
secondWhiteFlame: {
en: '(6 and 8 bait)',
de: '(6 und 8 ködern)',
fr: '(6 et 8 bait)',
ja: '(6と8誘導)',
cn: '(6 和 8 引导)',
ko: '(6, 8 레이저)',
en: '(6 and 8 ${delay})',
de: '(6 und 8 ködern ${delay})',
fr: '(6 et 8 bait ${delay})',
ja: '(6と8誘導 ${delay})',
cn: '(6 和 8 引导 ${delay})',
ko: '(6, 8 레이저 ${delay})', // FIXME
},
thirdWhiteFlame: {
en: '(1 and 3 bait)',
de: '(1 und 3 ködern)',
fr: '(1 et 3 bait)',
ja: '(1と3誘導)',
cn: '(1 和 3 引导)',
ko: '(1, 3 레이저)',
en: '(1 and 3 ${delay})',
de: '(1 und 3 ködern ${delay})',
fr: '(1 et 3 bait ${delay})',
ja: '(1と3誘導 ${delay})',
cn: '(1 和 3 引导 ${delay})',
ko: '(1, 3 레이저 ${delay})', // FIXME
},
fourthWhiteFlame: {
en: '(2 and 4 bait)',
de: '(2 und 6 ködern)',
fr: '(2 et 4 bait)',
ja: '(2と4誘導)',
cn: '(2 和 4 引导)',
ko: '(2, 4 레이저)',
en: '(2 and 4 ${delay})',
de: '(2 und 6 ködern ${delay})',
fr: '(2 et 4 bait ${delay})',
ja: '(2と4誘導 ${delay})',
cn: '(2 和 4 引导 ${delay})',
ko: '(2, 4 레이저 ${delay})', // FIXME
},
...whiteFlameDelayOutputStrings,
};
const delayMap = {
1: output.delay1(),
2: output.delay2(),
3: output.delay3(),
4: output.delay4(),
5: output.delay5(),
};
// TODO: use `data.lcWhiteFlameDelay` to say things like "quick" or "delayed" or "very delayed".
const baitLaser = output.baitLaser();
const delayStr = delayMap[data.lcWhiteFlameDelay?.[data.whiteFlameCounter] ?? 1];
const baitLaser = output.baitLaser({ delay: delayStr });
if (data.whiteFlameCounter === 1) {
const infoText = output.secondWhiteFlame();
const infoText = output.secondWhiteFlame({ delay: delayStr });
if (data.limitCutNumber === 6 || data.limitCutNumber === 8)
return { alertText: baitLaser, infoText: infoText };
return { infoText: infoText };
}
if (data.whiteFlameCounter === 2) {
const infoText = output.thirdWhiteFlame();
const infoText = output.thirdWhiteFlame({ delay: delayStr });
if (data.limitCutNumber === 1 || data.limitCutNumber === 3)
return { alertText: baitLaser, infoText: infoText };
return { infoText: infoText };
}
if (data.whiteFlameCounter === 3) {
const infoText = output.fourthWhiteFlame();
const infoText = output.fourthWhiteFlame({ delay: delayStr });
if (data.limitCutNumber === 2 || data.limitCutNumber === 4)
return { alertText: baitLaser, infoText: infoText };
return { infoText: infoText };
Expand Down

0 comments on commit 4d9d024

Please sign in to comment.