From cadbfcf6560768c63fe4e0fc791f40f0c0623c8d Mon Sep 17 00:00:00 2001 From: Legends0 Date: Tue, 7 Oct 2025 20:44:06 -0400 Subject: [PATCH 01/13] raidboss: oc add phantom job and level tracker --- .../eureka/occult_crescent_south_horn.ts | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index f965f29f4b..056d2a203f 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -5,6 +5,8 @@ import { TriggerSet } from '../../../../../types/trigger'; export interface Data extends RaidbossData { ce?: string; + phantomJob?: string; + phantomJobLevel?: number; } // List of events: @@ -34,6 +36,43 @@ const ceIds: { [ce: string]: string } = { withExtremePredjudice: '339', }; +// Used to filter the GainsEffect +const phantomJobEffectIds = [ + '1092', // Freelancer + '1106', // Knight + '1107', // Berserker + '1108', // Monk + '1109', // Ranger + '1110', // Oracle + '1111', // Thief + '110A', // Samurai + '110B', // Bard + '110C', // Geomancer + '110D', // Time Mage + '110E', // Cannonneer + '110F', // Chemist +]; + +// Useful for matching on job name in condition trigger +// Commented out until trigger added later for it +/* +const phantomJobData = { + 'freelancer': '1092', + 'knight': '1106', + 'berserker': '1107', + 'monk': '1108', + 'ranger': '1109', + 'oracle': '1110', + 'thief': '1111', + 'samurai': '110A', + 'bard': '110B', + 'geomancer': '110C', + 'timeMage': '110D', + 'cannoneer': '110E', + 'chemist': '110F', +} as const; +*/ + const triggerSet: TriggerSet = { id: 'TheOccultCrescentSouthHorn', zoneId: ZoneId.TheOccultCrescentSouthHorn, @@ -76,6 +115,44 @@ const triggerSet: TriggerSet = { console.log(`Start CE: ??? (${ceId})`); }, }, + { + id: 'Occult Crescent Phantom Job Tracker', + // data0 also contains a Phantom Job id and level + // Seems to follow this pattern XYZ, where X is Job #, Y is always 0, and Z is the level + // First digit is the job: + // Thief = C + // Oracle = B + // Chemist = A + // Cannoneer = 9 + // Time Mage = 8 + // Geomancer = 7 + // Bard = 6 + // Samurai = 5 + // Ranger = 4 + // Monk = 3 + // Berserker = 2 + // Knight = 1 + // Freelancer = null + // Freelancer level is accumulation of maxed jobs and seems like only 3 more jobs, ending at F + type: 'GainsEffect', + netRegex: { effectId: [...phantomJobEffectIds], capture: true }, + condition: Conditions.targetIsYou!(), + run: (data, matches) => { + data.phantomJob = matches.effectId; + // Pop the first element in the string + const jobData = matches.data0; + + // Assuming this isn't possible given the filter on statuses + if (jobData === undefined) + return; + + // Freelancer has a lenght 2 data0, whereas the others have length 3 + // Remove first element in the data0 string for other jobs + data.phantomJobLevel = (data.phantomJob === phantomJobData.freelancer) + ? parseInt(jobData, 16) + : parseInt(jobData.substring(1), 16); + }, + }, { id: 'Occult Crescent Cloister Demon Tidal Breath', type: 'StartsUsing', From aea8ec7edd776b8e9979f9866a795c566c8c9b16 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Tue, 7 Oct 2025 20:47:34 -0400 Subject: [PATCH 02/13] fix errors --- .../data/07-dt/eureka/occult_crescent_south_horn.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index 056d2a203f..870f717fbb 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -1,3 +1,4 @@ +import Conditions from '../../../../../resources/conditions'; import { Responses } from '../../../../../resources/responses'; import ZoneId from '../../../../../resources/zone_id'; import { RaidbossData } from '../../../../../types/data'; @@ -54,8 +55,6 @@ const phantomJobEffectIds = [ ]; // Useful for matching on job name in condition trigger -// Commented out until trigger added later for it -/* const phantomJobData = { 'freelancer': '1092', 'knight': '1106', @@ -71,7 +70,6 @@ const phantomJobData = { 'cannoneer': '110E', 'chemist': '110F', } as const; -*/ const triggerSet: TriggerSet = { id: 'TheOccultCrescentSouthHorn', @@ -139,14 +137,14 @@ const triggerSet: TriggerSet = { condition: Conditions.targetIsYou!(), run: (data, matches) => { data.phantomJob = matches.effectId; - // Pop the first element in the string const jobData = matches.data0; // Assuming this isn't possible given the filter on statuses if (jobData === undefined) return; - // Freelancer has a lenght 2 data0, whereas the others have length 3 + // Get Phantom Job Level + // Freelancer has a length 2 data0, whereas the others have length 3 // Remove first element in the data0 string for other jobs data.phantomJobLevel = (data.phantomJob === phantomJobData.freelancer) ? parseInt(jobData, 16) From bb19dcc7e1cbedf6459f6c3ae9203380cb1cf740 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Tue, 7 Oct 2025 20:49:00 -0400 Subject: [PATCH 03/13] lint --- ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index 870f717fbb..ad121d59ca 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -139,7 +139,7 @@ const triggerSet: TriggerSet = { data.phantomJob = matches.effectId; const jobData = matches.data0; - // Assuming this isn't possible given the filter on statuses + // Assuming this isn't possible given the filter on statuses if (jobData === undefined) return; From 1f60062d6049dd44f90b58bc8ed6e0c45dba5305 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Tue, 7 Oct 2025 21:02:14 -0400 Subject: [PATCH 04/13] lint --- ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index ad121d59ca..88b9b1efd5 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -134,7 +134,7 @@ const triggerSet: TriggerSet = { // Freelancer level is accumulation of maxed jobs and seems like only 3 more jobs, ending at F type: 'GainsEffect', netRegex: { effectId: [...phantomJobEffectIds], capture: true }, - condition: Conditions.targetIsYou!(), + condition: Conditions.targetIsYou(), run: (data, matches) => { data.phantomJob = matches.effectId; const jobData = matches.data0; @@ -148,7 +148,7 @@ const triggerSet: TriggerSet = { // Remove first element in the data0 string for other jobs data.phantomJobLevel = (data.phantomJob === phantomJobData.freelancer) ? parseInt(jobData, 16) - : parseInt(jobData.substring(1), 16); + : parseInt(jobData.slice(1), 16); }, }, { From 7d8b1345225c9810f6b3b5b94662e32f3ee75d4f Mon Sep 17 00:00:00 2001 From: Legends0 Date: Tue, 7 Oct 2025 21:02:56 -0400 Subject: [PATCH 05/13] comment update --- ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index 88b9b1efd5..60b4fbb22b 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -131,7 +131,7 @@ const triggerSet: TriggerSet = { // Berserker = 2 // Knight = 1 // Freelancer = null - // Freelancer level is accumulation of maxed jobs and seems like only 3 more jobs, ending at F + // Freelancer level is accumulation of maxed jobs +1 and seems like only 3 more jobs, ending at F type: 'GainsEffect', netRegex: { effectId: [...phantomJobEffectIds], capture: true }, condition: Conditions.targetIsYou(), From 0d76f4bf8e1273fc54d66cf200d66d6073688752 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Tue, 7 Oct 2025 21:51:21 -0400 Subject: [PATCH 06/13] Update ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts Co-authored-by: valarnin --- .../data/07-dt/eureka/occult_crescent_south_horn.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index 60b4fbb22b..2c52f9105c 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -137,18 +137,13 @@ const triggerSet: TriggerSet = { condition: Conditions.targetIsYou(), run: (data, matches) => { data.phantomJob = matches.effectId; - const jobData = matches.data0; + const jobData = matches.data0?.padStart(4, '0'); // Assuming this isn't possible given the filter on statuses if (jobData === undefined) return; - // Get Phantom Job Level - // Freelancer has a length 2 data0, whereas the others have length 3 - // Remove first element in the data0 string for other jobs - data.phantomJobLevel = (data.phantomJob === phantomJobData.freelancer) - ? parseInt(jobData, 16) - : parseInt(jobData.slice(1), 16); + data.phantomJobLevel = parseInt(jobData.slice(2), 16); }, }, { From e3c99a159d2a5cfcd718e7b3bc026c7db21b8646 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Tue, 7 Oct 2025 21:58:00 -0400 Subject: [PATCH 07/13] comment out currently unused phantom job id map --- ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index 2c52f9105c..fae2fb63b7 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -38,6 +38,7 @@ const ceIds: { [ce: string]: string } = { }; // Used to filter the GainsEffect + const phantomJobEffectIds = [ '1092', // Freelancer '1106', // Knight @@ -55,6 +56,7 @@ const phantomJobEffectIds = [ ]; // Useful for matching on job name in condition trigger +/* const phantomJobData = { 'freelancer': '1092', 'knight': '1106', @@ -70,6 +72,7 @@ const phantomJobData = { 'cannoneer': '110E', 'chemist': '110F', } as const; +*/ const triggerSet: TriggerSet = { id: 'TheOccultCrescentSouthHorn', From 70d4d409da39fc35b3e3f00f6018c267309b4f37 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Tue, 7 Oct 2025 21:58:25 -0400 Subject: [PATCH 08/13] remove extra spacing --- ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index fae2fb63b7..58d2bcb050 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -38,7 +38,6 @@ const ceIds: { [ce: string]: string } = { }; // Used to filter the GainsEffect - const phantomJobEffectIds = [ '1092', // Freelancer '1106', // Knight From 97db9529fe094094ecedeace8119d000fb217c29 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Tue, 7 Oct 2025 23:04:56 -0400 Subject: [PATCH 09/13] Update occult_crescent_south_horn.ts update comment --- ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index 58d2bcb050..f88f24848e 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -117,8 +117,8 @@ const triggerSet: TriggerSet = { }, { id: 'Occult Crescent Phantom Job Tracker', - // data0 also contains a Phantom Job id and level - // Seems to follow this pattern XYZ, where X is Job #, Y is always 0, and Z is the level + // data0 also contains a Phantom Job id and level, it's supposed to be two bytes but has weird padding in logs + // Expecting first two bytes to be the Phantom Job id, and the later two to be the level // First digit is the job: // Thief = C // Oracle = B From e62572b986c7ccf54a5f4d08c46ec9820eed8d82 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Tue, 7 Oct 2025 23:07:02 -0400 Subject: [PATCH 10/13] change byte to character --- ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index f88f24848e..26f0ca84b8 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -118,7 +118,7 @@ const triggerSet: TriggerSet = { { id: 'Occult Crescent Phantom Job Tracker', // data0 also contains a Phantom Job id and level, it's supposed to be two bytes but has weird padding in logs - // Expecting first two bytes to be the Phantom Job id, and the later two to be the level + // Expecting first two characters to be part of Phantom Job id, and the later two to be the level // First digit is the job: // Thief = C // Oracle = B From d2b7284276ba8366c3f94aa041ef9bbcdabf6785 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Sat, 11 Oct 2025 12:23:23 -0400 Subject: [PATCH 11/13] remove speculation on job count --- ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index 26f0ca84b8..de0794d912 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -133,7 +133,7 @@ const triggerSet: TriggerSet = { // Berserker = 2 // Knight = 1 // Freelancer = null - // Freelancer level is accumulation of maxed jobs +1 and seems like only 3 more jobs, ending at F + // Freelancer level is accumulation of maxed jobs +1 type: 'GainsEffect', netRegex: { effectId: [...phantomJobEffectIds], capture: true }, condition: Conditions.targetIsYou(), From 6077e2c9f5e94cb369129eef2db81dc6c9ee6170 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Mon, 13 Oct 2025 18:09:52 -0400 Subject: [PATCH 12/13] change data0 to count --- ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index de0794d912..0e99f800c2 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -117,7 +117,7 @@ const triggerSet: TriggerSet = { }, { id: 'Occult Crescent Phantom Job Tracker', - // data0 also contains a Phantom Job id and level, it's supposed to be two bytes but has weird padding in logs + // count also contains a Phantom Job id and level, it's supposed to be two bytes but has weird padding in logs // Expecting first two characters to be part of Phantom Job id, and the later two to be the level // First digit is the job: // Thief = C @@ -139,7 +139,7 @@ const triggerSet: TriggerSet = { condition: Conditions.targetIsYou(), run: (data, matches) => { data.phantomJob = matches.effectId; - const jobData = matches.data0?.padStart(4, '0'); + const jobData = matches.count?.padStart(4, '0'); // Assuming this isn't possible given the filter on statuses if (jobData === undefined) From 2aeba2e97d1a38f3f55439391ba11ead57ba27f8 Mon Sep 17 00:00:00 2001 From: Legends0 Date: Thu, 27 Nov 2025 22:55:29 -1000 Subject: [PATCH 13/13] fix accidental removal --- ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts index 583e318f19..bd2451f411 100644 --- a/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts +++ b/ui/raidboss/data/07-dt/eureka/occult_crescent_south_horn.ts @@ -680,7 +680,7 @@ const triggerSet: TriggerSet = { data.magitaurRuneTargets = []; data.magitaurRuinousRuneCount = 0; data.magitaurRune2Targets = []; - data.magitaurLancelightCount + data.magitaurLancelightCount = 0; }, }, {