diff --git a/resources/util.ts b/resources/util.ts index 3f93d7201bb..278a531dd22 100644 --- a/resources/util.ts +++ b/resources/util.ts @@ -263,6 +263,27 @@ const output16Dir: DirectionOutput16[] = [ const outputCardinalDir: DirectionOutputCardinal[] = ['dirN', 'dirE', 'dirS', 'dirW']; const outputIntercardDir: DirectionOutputIntercard[] = ['dirNE', 'dirSE', 'dirSW', 'dirNW']; +type DirectionOutput = + | DirectionOutput8 + | DirectionOutput16 + | DirectionOutputCardinal + | DirectionOutputIntercard; + +const compareDirectionOutput = (a: DirectionOutput, b: DirectionOutput): number => { + const aDir16: DirectionOutput16 = a as DirectionOutput16; + const bDir16: DirectionOutput16 = b as DirectionOutput16; + + // Sort any element not in output16Dir after. + const aIndex = output16Dir.indexOf(aDir16) ?? output16Dir.length; + const bIndex = output16Dir.indexOf(bDir16) ?? output16Dir.length; + + if (aIndex < bIndex) + return -1; + if (aIndex > bIndex) + return 1; + return 0; +}; + const outputStrings16Dir: OutputStrings = { dirN: Outputs.dirN, dirNNE: Outputs.dirNNE, @@ -375,6 +396,7 @@ export const Directions = { output16Dir: output16Dir, outputCardinalDir: outputCardinalDir, outputIntercardDir: outputIntercardDir, + compareDirectionOutput: compareDirectionOutput, outputStrings16Dir: outputStrings16Dir, outputStrings8Dir: outputStrings8Dir, outputStringsCardinalDir: outputStringsCardinalDir, diff --git a/ui/raidboss/data/07-dt/raid/r9s.ts b/ui/raidboss/data/07-dt/raid/r9s.ts index 7e6ef85c6db..534502eb801 100644 --- a/ui/raidboss/data/07-dt/raid/r9s.ts +++ b/ui/raidboss/data/07-dt/raid/r9s.ts @@ -172,7 +172,7 @@ const triggerSet: TriggerSet = { durationSeconds: 5.5, suppressSeconds: 1, infoText: (data, _matches, output) => { - const [dir1, dir2] = data.bats.inner; + const [dir1, dir2] = data.bats.inner.sort(Directions.compareDirectionOutput); return output.away!({ dir1: output[dir1 ?? 'unknown']!(), @@ -202,7 +202,7 @@ const triggerSet: TriggerSet = { durationSeconds: 3.4, suppressSeconds: 1, infoText: (data, _matches, output) => { - const [dir1, dir2, dir3] = data.bats.middle; + const [dir1, dir2, dir3] = data.bats.middle.sort(Directions.compareDirectionOutput); return output.away!({ dir1: output[dir1 ?? 'unknown']!(),