From 8a4a18c38cda5496a2324ab6fa97525da5dd00fc Mon Sep 17 00:00:00 2001 From: xiashtra <91220277+xiashtra@users.noreply.github.com> Date: Sun, 2 Aug 2026 20:48:50 -0500 Subject: [PATCH 1/3] docs: Add `StatusEffectListForay3` `StatusEffectListForay3` was added to the FFXIV_ACT_Plugin as line type 43. Closes #1132. --- docs/LogGuide.md | 107 +++++++++++++++------ resources/netlog_defs.ts | 34 ++++++- test/helper/example_log_lines_test_data.ts | 19 ++++ util/example_log_lines.ts | 9 ++ 4 files changed, 139 insertions(+), 30 deletions(-) diff --git a/docs/LogGuide.md b/docs/LogGuide.md index 0e88ebea84c..1514f93a227 100644 --- a/docs/LogGuide.md +++ b/docs/LogGuide.md @@ -8,9 +8,9 @@ for folks who want to write ACT triggers for ff14. This guide was last updated for: -- [FF14](https://na.finalfantasyxiv.com/lodestone/special/patchnote_log/) Patch 7.16 -- [FFXIV Plugin](https://github.com/ravahn/FFXIV_ACT_Plugin/releases) Patch 2.7.2.3 -- [OverlayPlugin](https://github.com/OverlayPlugin/OverlayPlugin/releases) Patch 0.19.43 +- [FF14](https://na.finalfantasyxiv.com/lodestone/special/patchnote_log/) Patch 7.55 +- [FFXIV Plugin](https://github.com/ravahn/FFXIV_ACT_Plugin/releases) Patch 3.0.2.5 +- [OverlayPlugin](https://github.com/OverlayPlugin/OverlayPlugin/releases) Patch 0.19.103 ## TOC @@ -162,87 +162,91 @@ This guide was last updated for: - [Structure](#structure-27) - [Regexes](#regexes-27) - [Examples](#examples-27) + - [Line 43 (0x2B): StatusEffectListForay3](#line-43-0x2b-statuseffectlistforay3) + - [Structure](#structure-28) + - [Regexes](#regexes-28) + - [Examples](#examples-28) - [Line 251 (0xFB): Debug](#line-251-0xfb-debug) - [Line 252 (0xFC): PacketDump](#line-252-0xfc-packetdump) - [Line 253 (0xFD): Version](#line-253-0xfd-version) - [Line 254 (0xFE): Error](#line-254-0xfe-error) - [OverlayPlugin Log Lines](#overlayplugin-log-lines) - [Line 256 (0x100): LineRegistration](#line-256-0x100-lineregistration) - - [Structure](#structure-28) - - [Regexes](#regexes-28) - - [Examples](#examples-28) - - [Line 257 (0x101): MapEffect](#line-257-0x101-mapeffect) - [Structure](#structure-29) - [Regexes](#regexes-29) - [Examples](#examples-29) - - [Line 258 (0x102): FateDirector](#line-258-0x102-fatedirector) + - [Line 257 (0x101): MapEffect](#line-257-0x101-mapeffect) - [Structure](#structure-30) - [Regexes](#regexes-30) - [Examples](#examples-30) - - [Line 259 (0x103): CEDirector](#line-259-0x103-cedirector) + - [Line 258 (0x102): FateDirector](#line-258-0x102-fatedirector) - [Structure](#structure-31) - [Regexes](#regexes-31) - [Examples](#examples-31) - - [Line 260 (0x104): InCombat](#line-260-0x104-incombat) + - [Line 259 (0x103): CEDirector](#line-259-0x103-cedirector) - [Structure](#structure-32) - [Regexes](#regexes-32) - [Examples](#examples-32) - - [Line 261 (0x105): CombatantMemory](#line-261-0x105-combatantmemory) + - [Line 260 (0x104): InCombat](#line-260-0x104-incombat) - [Structure](#structure-33) - [Regexes](#regexes-33) - [Examples](#examples-33) - - [Line 262 (0x106): RSVData](#line-262-0x106-rsvdata) + - [Line 261 (0x105): CombatantMemory](#line-261-0x105-combatantmemory) - [Structure](#structure-34) - [Regexes](#regexes-34) - [Examples](#examples-34) - - [Line 263 (0x107): StartsUsingExtra](#line-263-0x107-startsusingextra) + - [Line 262 (0x106): RSVData](#line-262-0x106-rsvdata) - [Structure](#structure-35) - [Regexes](#regexes-35) - [Examples](#examples-35) - - [Line 264 (0x108): AbilityExtra](#line-264-0x108-abilityextra) + - [Line 263 (0x107): StartsUsingExtra](#line-263-0x107-startsusingextra) - [Structure](#structure-36) - [Regexes](#regexes-36) - [Examples](#examples-36) - - [Line 265 (0x109): ContentFinderSettings](#line-265-0x109-contentfindersettings) + - [Line 264 (0x108): AbilityExtra](#line-264-0x108-abilityextra) - [Structure](#structure-37) - [Regexes](#regexes-37) - [Examples](#examples-37) - - [Line 266 (0x10A): NpcYell](#line-266-0x10a-npcyell) + - [Line 265 (0x109): ContentFinderSettings](#line-265-0x109-contentfindersettings) - [Structure](#structure-38) - [Regexes](#regexes-38) - [Examples](#examples-38) - - [Line 267 (0x10B): BattleTalk2](#line-267-0x10b-battletalk2) + - [Line 266 (0x10A): NpcYell](#line-266-0x10a-npcyell) - [Structure](#structure-39) - [Regexes](#regexes-39) - [Examples](#examples-39) - - [Line 268 (0x10C): Countdown](#line-268-0x10c-countdown) + - [Line 267 (0x10B): BattleTalk2](#line-267-0x10b-battletalk2) - [Structure](#structure-40) - [Regexes](#regexes-40) - [Examples](#examples-40) - - [Line 269 (0x10D): CountdownCancel](#line-269-0x10d-countdowncancel) + - [Line 268 (0x10C): Countdown](#line-268-0x10c-countdown) - [Structure](#structure-41) - [Regexes](#regexes-41) - [Examples](#examples-41) - - [Line 270 (0x10E): ActorMove](#line-270-0x10e-actormove) + - [Line 269 (0x10D): CountdownCancel](#line-269-0x10d-countdowncancel) - [Structure](#structure-42) - [Regexes](#regexes-42) - [Examples](#examples-42) - - [Line 271 (0x10F): ActorSetPos](#line-271-0x10f-actorsetpos) + - [Line 270 (0x10E): ActorMove](#line-270-0x10e-actormove) - [Structure](#structure-43) - [Regexes](#regexes-43) - [Examples](#examples-43) - - [Line 272 (0x110): SpawnNpcExtra](#line-272-0x110-spawnnpcextra) + - [Line 271 (0x10F): ActorSetPos](#line-271-0x10f-actorsetpos) - [Structure](#structure-44) - [Regexes](#regexes-44) - [Examples](#examples-44) - - [Line 273 (0x111): ActorControlExtra](#line-273-0x111-actorcontrolextra) + - [Line 272 (0x110): SpawnNpcExtra](#line-272-0x110-spawnnpcextra) - [Structure](#structure-45) - [Regexes](#regexes-45) - [Examples](#examples-45) - - [Line 274 (0x112): ActorControlSelfExtra](#line-274-0x112-actorcontrolselfextra) + - [Line 273 (0x111): ActorControlExtra](#line-273-0x111-actorcontrolextra) - [Structure](#structure-46) - [Regexes](#regexes-46) - [Examples](#examples-46) + - [Line 274 (0x112): ActorControlSelfExtra](#line-274-0x112-actorcontrolselfextra) + - [Structure](#structure-47) + - [Regexes](#regexes-47) + - [Examples](#examples-47) ## Data Flow @@ -2552,6 +2556,53 @@ Parsed Log Line Examples: + + +### Line 43 (0x2B): StatusEffectListForay3 + +This line corresponds to `FFXIV_ACT_Plugin`'s `StatusEffectListForay3` opcode/packet. +This line has information on the status effects used in some field operations content. + +See: [NetworkStatusEffects](#data-fields) for a discussion of the data fields. + + + +#### Structure + +```log +Network Log Line Structure: +43|[timestamp]|[id]|[name]|[jobLevelData]|[currentHp]|[maxHp]|[currentMp]|[maxMp]|[currentShield]|[?]|[x]|[y]|[z]|[heading] + +Parsed Log Line Structure: +[timestamp] StatusEffectListForay3 2B:[id]:[name]:[jobLevelData]:[currentHp]:[maxHp]:[currentMp]:[maxMp]:[currentShield]:[?]:[x]:[y]:[z]:[heading] +``` + +#### Regexes + +```log +Network Log Line Regex: +^(?43)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?:[^|]*\|)(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\| + +Parsed Log Line Regex: +(?^.{14}) StatusEffectListForay3 (?2B):(?[^:]*):(?[^:]*):(?[^:]*):(?[^:]*):(?[^:]*):(?[^:]*):(?[^:]*):(?[^:]*):[^:]*:(?[^:]*):(?[^:]*):(?[^:]*):(?[^:]*)(?:$|:) +``` + +#### Examples + +```log +Network Log Line Examples: +43|2026-07-31T19:22:41.7850000-05:00|10FF0001|Tini Poutini|00646428|107111|107111|10000|10000|0||906.17|906.98|259.99|-2.36|131082|0|E0000000|1083|0|E0000000|130214D3|0|10FF0001|13bdbd2997ee0fe0 +43|2026-07-31T14:30:55.5440000-05:00|10FF0002|Potato Chippy|0064641F|98122|130018|10000|10000|0||-142.73|628.25|60.65|2.79|0A0168|41F00000|E0000000|1E016C|41F00000|E0000000|121082|0|E0000000|131092|0|10FF0002|29CE0030|43F8D4A6|10FF0002|1083|0|E0000000|dc9177ad05abdc0b +43|2026-07-31T14:37:23.5810000-05:00|10FF0002|Potato Chippy|00646425|170075|170075|10000|10000|36||508.17|-20.48|15.22|3.12|101082|0|E0000000|130314D3|0|10FF0002|1089|44C64D24|E0000000|0A108F|44C64D24|E0000000|1094|44C64D24|E0000000|12BF|44C64D24|E0000000|0F2E|41EEED91|10FF0002|0729|0|10FF0002|0727|419EED91|10FF0002|14C7|42700000|10FF0002|0c88c6434570bed2 + +Parsed Log Line Examples: +[19:22:41.785] StatusEffectListForay3 2B:10FF0001:Tini Poutini:00646428:107111:107111:10000:10000:0::906.17:906.98:259.99:-2.36:131082:0:E0000000:1083:0:E0000000:130214D3:0:10FF0001 +[14:30:55.544] StatusEffectListForay3 2B:10FF0002:Potato Chippy:0064641F:98122:130018:10000:10000:0::-142.73:628.25:60.65:2.79:0A0168:41F00000:E0000000:1E016C:41F00000:E0000000:121082:0:E0000000:131092:0:10FF0002:29CE0030:43F8D4A6:10FF0002:1083:0:E0000000 +[14:37:23.581] StatusEffectListForay3 2B:10FF0002:Potato Chippy:00646425:170075:170075:10000:10000:36::508.17:-20.48:15.22:3.12:101082:0:E0000000:130314D3:0:10FF0002:1089:44C64D24:E0000000:0A108F:44C64D24:E0000000:1094:44C64D24:E0000000:12BF:44C64D24:E0000000:0F2E:41EEED91:10FF0002:0729:0:10FF0002:0727:419EED91:10FF0002:14C7:42700000:10FF0002 +``` + + + ### Line 251 (0xFB): Debug @@ -3387,20 +3438,20 @@ Currently, these log lines are emitted only for non-player actors (id >= 0x40000 ```log Network Log Line Structure: -270|[timestamp]|[id]|[heading]|[?]|[?]|[x]|[y]|[z] +270|[timestamp]|[id]|[heading]|[?]|[moveType]|[x]|[y]|[z] Parsed Log Line Structure: -[timestamp] 270 10E:[id]:[heading]:[?]:[?]:[x]:[y]:[z] +[timestamp] 270 10E:[id]:[heading]:[?]:[moveType]:[x]:[y]:[z] ``` #### Regexes ```log Network Log Line Regex: -^(?270)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?:[^|]*\|){2}(?[^|]*)\|(?[^|]*)\|(?[^|]*)\| +^(?270)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?:[^|]*\|)(?[^|]*)\|(?[^|]*)\|(?[^|]*)\|(?[^|]*)\| Parsed Log Line Regex: -(?^.{14}) 270 (?10E):(?[^:]*):(?[^:]*)(?::[^:]*){2}:(?[^:]*):(?[^:]*):(?[^:]*)(?:$|:) +(?^.{14}) 270 (?10E):(?[^:]*):(?[^:]*):[^:]*:(?[^:]*):(?[^:]*):(?[^:]*):(?[^:]*)(?:$|:) ``` #### Examples diff --git a/resources/netlog_defs.ts b/resources/netlog_defs.ts index eabd924f8da..1f144803335 100644 --- a/resources/netlog_defs.ts +++ b/resources/netlog_defs.ts @@ -998,7 +998,7 @@ const latestLogDefinitions = { data3: 18, data4: 19, data5: 20, - // Variable number of triplets here, but at least one. + // triplets of fields from here (effectId + otherInfo, duration, sourceId) }, playerIds: { 2: 3, @@ -1084,7 +1084,7 @@ const latestLogDefinitions = { timestamp: 1, id: 2, name: 3, - // triplets of fields from here (effectId, data, playerId)? + // triplets of fields from here (effectId + otherInfo, duration, sourceId) }, playerIds: { 2: 3, @@ -1093,6 +1093,36 @@ const latestLogDefinitions = { firstOptionalField: 4, firstUnknownField: 4, }, + StatusEffectListForay3: { + type: '43', + name: 'StatusEffectListForay3', + source: 'FFXIV_ACT_Plugin', + messageType: 'StatusEffectListForay3', + fields: { + type: 0, + timestamp: 1, + id: 2, + name: 3, + jobLevelData: 4, + currentHp: 5, + maxHp: 6, + currentMp: 7, + maxMp: 8, + currentShield: 9, + // unknown0: 10, + x: 11, + y: 12, + z: 13, + heading: 14, + // triplets of fields from here (effectId + otherInfo, duration, sourceId) + }, + playerIds: { + 2: 3, + }, + canAnonymize: true, + firstOptionalField: 15, + firstUnknownField: 15, + }, ParserInfo: { type: '249', name: 'ParserInfo', diff --git a/test/helper/example_log_lines_test_data.ts b/test/helper/example_log_lines_test_data.ts index c6ce97522d8..8b136bc0b08 100644 --- a/test/helper/example_log_lines_test_data.ts +++ b/test/helper/example_log_lines_test_data.ts @@ -569,6 +569,25 @@ const lineTests: LineTests = { name: 'Tini Poutini', }, }, + StatusEffectListForay3: { + lineToTest: exampleLogLines['StatusEffectListForay3'].examples.en[0], + expectedValues: { + type: '43', + id: '10FF0001', + name: 'Tini Poutini', + jobLevelData: '00646428', + currentHp: '107111', + maxHp: '107111', + currentMp: '10000', + maxMp: '10000', + currentShield: '0', + x: '906.17', + y: '906.98', + z: '259.99', + heading: '-2.36', + // subsquent fields are optional per netlog_defs + }, + }, LineRegistration: { lineToTest: exampleLogLines['LineRegistration'].examples.en[0], expectedValues: { diff --git a/util/example_log_lines.ts b/util/example_log_lines.ts index 62bef6996a7..3c09c2c7d47 100644 --- a/util/example_log_lines.ts +++ b/util/example_log_lines.ts @@ -388,6 +388,15 @@ const exampleLogLines = { ], }, }, + StatusEffectListForay3: { + examples: { + en: [ + '43|2026-07-31T19:22:41.7850000-05:00|10FF0001|Tini Poutini|00646428|107111|107111|10000|10000|0||906.17|906.98|259.99|-2.36|131082|0|E0000000|1083|0|E0000000|130214D3|0|10FF0001|13bdbd2997ee0fe0', + '43|2026-07-31T14:30:55.5440000-05:00|10FF0002|Potato Chippy|0064641F|98122|130018|10000|10000|0||-142.73|628.25|60.65|2.79|0A0168|41F00000|E0000000|1E016C|41F00000|E0000000|121082|0|E0000000|131092|0|10FF0002|29CE0030|43F8D4A6|10FF0002|1083|0|E0000000|dc9177ad05abdc0b', + '43|2026-07-31T14:37:23.5810000-05:00|10FF0002|Potato Chippy|00646425|170075|170075|10000|10000|36||508.17|-20.48|15.22|3.12|101082|0|E0000000|130314D3|0|10FF0002|1089|44C64D24|E0000000|0A108F|44C64D24|E0000000|1094|44C64D24|E0000000|12BF|44C64D24|E0000000|0F2E|41EEED91|10FF0002|0729|0|10FF0002|0727|419EED91|10FF0002|14C7|42700000|10FF0002|0c88c6434570bed2', + ], + }, + }, LineRegistration: { examples: { en: [ From 71a0af4b955fe1b281f6723eb5370667c31af8c5 Mon Sep 17 00:00:00 2001 From: xiashtra <91220277+xiashtra@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:20:27 -0500 Subject: [PATCH 2/3] extend example to first triplet --- docs/LogGuide.md | 8 ++++---- resources/netlog_defs.ts | 10 ++++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/LogGuide.md b/docs/LogGuide.md index 1514f93a227..8d39fb66e82 100644 --- a/docs/LogGuide.md +++ b/docs/LogGuide.md @@ -2524,10 +2524,10 @@ corresponds to row `702` on the `ItemFood` sheet ```log Network Log Line Structure: -42|[timestamp]|[id]|[name] +42|[timestamp]|[id]|[name]|[data0]|[data1]|[data2] Parsed Log Line Structure: -[timestamp] StatusList3 2A:[id]:[name] +[timestamp] StatusList3 2A:[id]:[name]:[data0]:[data1]:[data2] ``` #### Regexes @@ -2571,10 +2571,10 @@ See: [NetworkStatusEffects](#data-fields) for a discussion of the data fields. ```log Network Log Line Structure: -43|[timestamp]|[id]|[name]|[jobLevelData]|[currentHp]|[maxHp]|[currentMp]|[maxMp]|[currentShield]|[?]|[x]|[y]|[z]|[heading] +43|[timestamp]|[id]|[name]|[jobLevelData]|[currentHp]|[maxHp]|[currentMp]|[maxMp]|[currentShield]|[?]|[x]|[y]|[z]|[heading]|[data0]|[data1]|[data2] Parsed Log Line Structure: -[timestamp] StatusEffectListForay3 2B:[id]:[name]:[jobLevelData]:[currentHp]:[maxHp]:[currentMp]:[maxMp]:[currentShield]:[?]:[x]:[y]:[z]:[heading] +[timestamp] StatusEffectListForay3 2B:[id]:[name]:[jobLevelData]:[currentHp]:[maxHp]:[currentMp]:[maxMp]:[currentShield]:[?]:[x]:[y]:[z]:[heading]:[data0]:[data1]:[data2] ``` #### Regexes diff --git a/resources/netlog_defs.ts b/resources/netlog_defs.ts index 1f144803335..2f9080d7ac0 100644 --- a/resources/netlog_defs.ts +++ b/resources/netlog_defs.ts @@ -995,10 +995,10 @@ const latestLogDefinitions = { data0: 15, data1: 16, data2: 17, + // triplets of fields from here (effectId + otherInfo, duration, sourceId) data3: 18, data4: 19, data5: 20, - // triplets of fields from here (effectId + otherInfo, duration, sourceId) }, playerIds: { 2: 3, @@ -1085,6 +1085,9 @@ const latestLogDefinitions = { id: 2, name: 3, // triplets of fields from here (effectId + otherInfo, duration, sourceId) + data0: 4, + data1: 5, + data2: 6, }, playerIds: { 2: 3, @@ -1109,12 +1112,15 @@ const latestLogDefinitions = { currentMp: 7, maxMp: 8, currentShield: 9, - // unknown0: 10, + // Field index 10 is always `0` x: 11, y: 12, z: 13, heading: 14, // triplets of fields from here (effectId + otherInfo, duration, sourceId) + data0: 15, + data1: 16, + data2: 17, }, playerIds: { 2: 3, From 1d21005ff6bebe644260f527e44d7bebe8f54195 Mon Sep 17 00:00:00 2001 From: xiashtra <91220277+xiashtra@users.noreply.github.com> Date: Fri, 7 Aug 2026 23:15:49 -0500 Subject: [PATCH 3/3] version bump for 7.55h1 --- docs/LogGuide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/LogGuide.md b/docs/LogGuide.md index 8d39fb66e82..567845e3024 100644 --- a/docs/LogGuide.md +++ b/docs/LogGuide.md @@ -9,8 +9,8 @@ for folks who want to write ACT triggers for ff14. This guide was last updated for: - [FF14](https://na.finalfantasyxiv.com/lodestone/special/patchnote_log/) Patch 7.55 -- [FFXIV Plugin](https://github.com/ravahn/FFXIV_ACT_Plugin/releases) Patch 3.0.2.5 -- [OverlayPlugin](https://github.com/OverlayPlugin/OverlayPlugin/releases) Patch 0.19.103 +- [FFXIV Plugin](https://github.com/ravahn/FFXIV_ACT_Plugin/releases) Patch 3.0.2.7 +- [OverlayPlugin](https://github.com/OverlayPlugin/OverlayPlugin/releases) Patch 0.19.104 ## TOC