Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

raidboss/oopsy: add AMR #5718

Merged
merged 50 commits into from
Oct 25, 2023
Merged
Changes from 1 commit
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
6bd8e79
raidboss/oopsy: add AMR
quisquous Jul 21, 2023
90b4e04
add Rousing Reincarnation
quisquous Jul 22, 2023
a6cde21
Shishio initial timeline
quisquous Jul 23, 2023
b6a940e
initial Gorai timeline/oopsy
quisquous Jul 23, 2023
924e716
devilish thrall safe spots
quisquous Jul 25, 2023
d5309ce
fix Shishu Fuko first trash triggers
quisquous Aug 15, 2023
d8052f3
a little bit more boss1/boss2 timeline
quisquous Aug 15, 2023
ee4bb17
trash 2 fixups
quisquous Aug 15, 2023
e6b92ee
fix limit cut
quisquous Aug 15, 2023
b55a716
initial moko
quisquous Aug 15, 2023
7b647a7
fix devilish thrall north spot oops
quisquous Aug 15, 2023
13aecaa
basic invocation trigger
quisquous Aug 15, 2023
bb8c4e2
add brazen ballad triggers
quisquous Aug 16, 2023
253fb64
fleeting and double iaigiri initial triggers
quisquous Aug 20, 2023
32e8ff0
accursed edge smarts
quisquous Aug 21, 2023
9e30ebb
extra ability listing
quisquous Aug 21, 2023
a39a332
howl
quisquous Aug 21, 2023
db5e856
initial sync files
quisquous Aug 21, 2023
03bd84b
noble pursuit
quisquous Aug 21, 2023
c07fcd1
malformed reincarnation
quisquous Aug 22, 2023
39cee8a
a few other moko abilities
quisquous Aug 22, 2023
68994f1
more oopsy
quisquous Aug 22, 2023
75e156a
double iaigiri fixups
quisquous Aug 22, 2023
90e232e
auspice
quisquous Aug 22, 2023
6efc858
final adds and safe half at least
quisquous Aug 22, 2023
26b67f5
moko more timeline and oopsy
quisquous Aug 22, 2023
88e8f65
shorten triple kasumi instructions
quisquous Aug 22, 2023
a55cc93
add oni claw
quisquous Aug 22, 2023
f0bbd7a
moko invocation fire safe spot
quisquous Aug 22, 2023
113d842
minor trigger updates
quisquous Sep 19, 2023
60c3f90
some savage trash 1 ids
quisquous Sep 19, 2023
f86cf06
gorai final tower / timeline improvements
quisquous Sep 19, 2023
9e74dd0
fix east west shadow kasumi giri
quisquous Sep 19, 2023
3cf1f32
better soldiers of death flex info
quisquous Sep 19, 2023
59773d7
more savage
quisquous Sep 20, 2023
dd1d2fb
add config option, clean up stack language
quisquous Sep 20, 2023
357fb90
fix shadow kasumi giri bug
quisquous Sep 22, 2023
d0f505c
a few more savage ids
quisquous Sep 26, 2023
94efb77
timeline fixups
quisquous Oct 13, 2023
3b64b98
a pile of trigger fixes
quisquous Oct 13, 2023
ea7f8fe
savage ids
quisquous Oct 13, 2023
5a4221a
better huton wording
quisquous Oct 14, 2023
a3650db
reisho tower fix
quisquous Oct 18, 2023
318934e
fix flintlock
quisquous Oct 19, 2023
631f5fc
Merge branch 'main' into another_mount_rokkon
quisquous Oct 19, 2023
97b82c3
fix a few syncs
quisquous Oct 25, 2023
59680b8
commit the rest of the syncs too oops
quisquous Oct 25, 2023
2a3318b
make timeline syncs more explicit to get replacements to work
quisquous Oct 25, 2023
fcac827
adjust gorai tower2 calls
quisquous Oct 25, 2023
924d710
adjust final mechanic to handle stack types
quisquous Oct 25, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add Rousing Reincarnation
  • Loading branch information
quisquous committed Aug 19, 2023
commit 90b4e04779c451e8ccc53a714c58f1e8312c1fe4
133 changes: 133 additions & 0 deletions ui/raidboss/data/06-ew/dungeon/another_mount_rokkon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,19 @@ import { Job } from '../../../../../types/job';
import { NetMatches } from '../../../../../types/net_matches';
import { Output, ResponseOutput, TriggerSet } from '../../../../../types/trigger';

type OdderTower = {
blue?: string;
orange?: string;
};

export interface Data extends RaidbossData {
combatantData: PluginCombatantState[];
wailingCollect: NetMatches['GainsEffect'][];
wailCount: number;
sparksCollect: NetMatches['GainsEffect'][];
sparksCount: number;
reincarnationCollect: [OdderTower, OdderTower, OdderTower, OdderTower];
towerCount: number;
}

const countJob = (job1: Job, job2: Job, func: (x: Job) => boolean): number => {
Expand Down Expand Up @@ -159,6 +166,71 @@ const stackSpreadResponse = (
return { alertText: output.spreadThenStack!(), ...stackInfo };
};

const towerResponse = (
data: Data,
output: Output,
): ResponseOutput<Data, NetMatches['None']> => {
// cactbot-builtin-response
output.responseOutputStrings = {
tetherThenBlueTower: {
en: 'Tether ${num1} => Blue Tower ${num2}',
},
tetherThenOrangeTower: {
en: 'Tether ${num1} => Orange Tower ${num2}',
},
tether: {
en: 'Tether ${num}',
},
blueTower: {
en: 'Blue Tower ${num}',
},
orangeTower: {
en: 'Orange Tower ${num}',
},
num1: Outputs.num1,
num2: Outputs.num2,
num3: Outputs.num3,
num4: Outputs.num4,
};

// data.towerCount is 0-indexed
// towerNum for display is 1-indexed
const theseTowers = data.reincarnationCollect[data.towerCount];
const towerNum = data.towerCount + 1;
data.towerCount++;

if (theseTowers === undefined)
return;

const numMap: { [towerNum: number]: string } = {
1: output.num1!(),
2: output.num2!(),
3: output.num3!(),
4: output.num4!(),
} as const;

const numStr = numMap[towerNum];
if (numStr === undefined)
return;

if (data.me === theseTowers.blue)
return { alertText: output.blueTower!({ num: numStr }) };
if (data.me === theseTowers.orange)
return { alertText: output.orangeTower!({ num: numStr }) };
const nextTowers = data.reincarnationCollect[towerNum + 1];
const nextNumStr = numMap[towerNum + 1];
if (towerNum === 4 || nextTowers === undefined || nextNumStr === undefined)
return { infoText: output.tether!({ num: numStr }) };

if (data.me === nextTowers.blue)
return { infoText: output.tetherThenBlueTower!({ num1: numStr, num2: nextNumStr }) };
if (data.me === nextTowers.orange)
return { infoText: output.tetherThenOrangeTower!({ num1: numStr, num2: nextNumStr }) };

// Just in case...
return { infoText: output.tether!({ num: numStr }) };
};

const triggerSet: TriggerSet<Data> = {
id: 'AnotherMountRokkon',
zoneId: ZoneId.AnotherMountRokkon,
Expand All @@ -170,6 +242,8 @@ const triggerSet: TriggerSet<Data> = {
wailCount: 0,
sparksCollect: [],
sparksCount: 0,
reincarnationCollect: [{}, {}, {}, {}],
towerCount: 0,
};
},
triggers: [
Expand Down Expand Up @@ -528,6 +602,65 @@ const triggerSet: TriggerSet<Data> = {
return stackSpreadResponse(data, output, data.sparksCollect, 'E17', 'E18');
},
},
{
id: 'AMR Gorai Torching Torment',
type: 'StartsUsing',
netRegex: { id: '8532', source: 'Gorai the Uncaged' },
response: Responses.tankBuster(),
},
{
id: 'AMR Gorai Rousing Reincarnation Collect',
type: 'GainsEffect',
netRegex: { effectId: ['E0D', 'E0E', 'E0F', 'E10', 'E11', 'E12', 'E13', 'E14'] },
run: (data, matches) => {
// Odder Incarnation = blue towers
// Rodential Rebirth = orange towers
// durations: I = 20s, II = 26s, III = 32s, IV = 38s
const id = matches.effectId;
if (id === 'E11')
data.reincarnationCollect[0].blue = matches.target;
else if (id === 'E0D')
data.reincarnationCollect[0].orange = matches.target;
else if (id === 'E12')
data.reincarnationCollect[1].blue = matches.target;
else if (id === 'E0E')
data.reincarnationCollect[1].orange = matches.target;
else if (id === 'E13')
data.reincarnationCollect[2].blue = matches.target;
else if (id === 'E0F')
data.reincarnationCollect[2].orange = matches.target;
else if (id === 'E14')
data.reincarnationCollect[3].blue = matches.target;
else if (id === 'E10')
data.reincarnationCollect[3].orange = matches.target;
},
},
{
id: 'AMR Gorai Rousing Reincarnation First Tower',
type: 'StartsUsing',
// Malformed Prayer cast
netRegex: { id: '8518', source: 'Gorai the Uncaged', capture: false },
durationSeconds: 15,
response: (data, _matches, output) => {
// cactbot-builtin-response
return towerResponse(data, output);
},
},
{
id: 'AMR Gorai Rousing Reincarnation Other Towers',
type: 'Ability',
// Technically 851F Pointed Purgation protean happens ~0.2s beforehand,
// but wait on the tower burst to call things out.
// 851B = Burst (blue tower)
// 8519 = Burst (orange tower)
// 851C = Dramatic Burst (missed tower)
netRegex: { id: '851B', source: 'Gorai the Uncaged', capture: false },
durationSeconds: 4,
response: (data, _matches, output) => {
// cactbot-builtin-response
return towerResponse(data, output);
},
},
],
};

Expand Down