Skip to content

Commit 0c2cf72

Browse files
authored
Merge branch 'main' into config-rework
2 parents 9686e6f + 82629dc commit 0c2cf72

9 files changed

Lines changed: 158 additions & 40 deletions

File tree

.editorconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,6 @@ quote_type = single
1616

1717
[*.py]
1818
indent_size = 4
19+
20+
[*.css]
21+
indent_size = 2

docs/LogGuide.md

Lines changed: 81 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ for folks who want to write ACT triggers for ff14.
88

99
This guide was last updated for:
1010

11-
- [FF14](https://na.finalfantasyxiv.com/lodestone/special/patchnote_log/) Patch 7.16
12-
- [FFXIV Plugin](https://github.com/ravahn/FFXIV_ACT_Plugin/releases) Patch 2.7.2.3
13-
- [OverlayPlugin](https://github.com/OverlayPlugin/OverlayPlugin/releases) Patch 0.19.43
11+
- [FF14](https://na.finalfantasyxiv.com/lodestone/special/patchnote_log/) Patch 7.55
12+
- [FFXIV Plugin](https://github.com/ravahn/FFXIV_ACT_Plugin/releases) Patch 3.0.2.7
13+
- [OverlayPlugin](https://github.com/OverlayPlugin/OverlayPlugin/releases) Patch 0.19.104
1414

1515
## TOC
1616

@@ -162,87 +162,91 @@ This guide was last updated for:
162162
- [Structure](#structure-27)
163163
- [Regexes](#regexes-27)
164164
- [Examples](#examples-27)
165+
- [Line 43 (0x2B): StatusEffectListForay3](#line-43-0x2b-statuseffectlistforay3)
166+
- [Structure](#structure-28)
167+
- [Regexes](#regexes-28)
168+
- [Examples](#examples-28)
165169
- [Line 251 (0xFB): Debug](#line-251-0xfb-debug)
166170
- [Line 252 (0xFC): PacketDump](#line-252-0xfc-packetdump)
167171
- [Line 253 (0xFD): Version](#line-253-0xfd-version)
168172
- [Line 254 (0xFE): Error](#line-254-0xfe-error)
169173
- [OverlayPlugin Log Lines](#overlayplugin-log-lines)
170174
- [Line 256 (0x100): LineRegistration](#line-256-0x100-lineregistration)
171-
- [Structure](#structure-28)
172-
- [Regexes](#regexes-28)
173-
- [Examples](#examples-28)
174-
- [Line 257 (0x101): MapEffect](#line-257-0x101-mapeffect)
175175
- [Structure](#structure-29)
176176
- [Regexes](#regexes-29)
177177
- [Examples](#examples-29)
178-
- [Line 258 (0x102): FateDirector](#line-258-0x102-fatedirector)
178+
- [Line 257 (0x101): MapEffect](#line-257-0x101-mapeffect)
179179
- [Structure](#structure-30)
180180
- [Regexes](#regexes-30)
181181
- [Examples](#examples-30)
182-
- [Line 259 (0x103): CEDirector](#line-259-0x103-cedirector)
182+
- [Line 258 (0x102): FateDirector](#line-258-0x102-fatedirector)
183183
- [Structure](#structure-31)
184184
- [Regexes](#regexes-31)
185185
- [Examples](#examples-31)
186-
- [Line 260 (0x104): InCombat](#line-260-0x104-incombat)
186+
- [Line 259 (0x103): CEDirector](#line-259-0x103-cedirector)
187187
- [Structure](#structure-32)
188188
- [Regexes](#regexes-32)
189189
- [Examples](#examples-32)
190-
- [Line 261 (0x105): CombatantMemory](#line-261-0x105-combatantmemory)
190+
- [Line 260 (0x104): InCombat](#line-260-0x104-incombat)
191191
- [Structure](#structure-33)
192192
- [Regexes](#regexes-33)
193193
- [Examples](#examples-33)
194-
- [Line 262 (0x106): RSVData](#line-262-0x106-rsvdata)
194+
- [Line 261 (0x105): CombatantMemory](#line-261-0x105-combatantmemory)
195195
- [Structure](#structure-34)
196196
- [Regexes](#regexes-34)
197197
- [Examples](#examples-34)
198-
- [Line 263 (0x107): StartsUsingExtra](#line-263-0x107-startsusingextra)
198+
- [Line 262 (0x106): RSVData](#line-262-0x106-rsvdata)
199199
- [Structure](#structure-35)
200200
- [Regexes](#regexes-35)
201201
- [Examples](#examples-35)
202-
- [Line 264 (0x108): AbilityExtra](#line-264-0x108-abilityextra)
202+
- [Line 263 (0x107): StartsUsingExtra](#line-263-0x107-startsusingextra)
203203
- [Structure](#structure-36)
204204
- [Regexes](#regexes-36)
205205
- [Examples](#examples-36)
206-
- [Line 265 (0x109): ContentFinderSettings](#line-265-0x109-contentfindersettings)
206+
- [Line 264 (0x108): AbilityExtra](#line-264-0x108-abilityextra)
207207
- [Structure](#structure-37)
208208
- [Regexes](#regexes-37)
209209
- [Examples](#examples-37)
210-
- [Line 266 (0x10A): NpcYell](#line-266-0x10a-npcyell)
210+
- [Line 265 (0x109): ContentFinderSettings](#line-265-0x109-contentfindersettings)
211211
- [Structure](#structure-38)
212212
- [Regexes](#regexes-38)
213213
- [Examples](#examples-38)
214-
- [Line 267 (0x10B): BattleTalk2](#line-267-0x10b-battletalk2)
214+
- [Line 266 (0x10A): NpcYell](#line-266-0x10a-npcyell)
215215
- [Structure](#structure-39)
216216
- [Regexes](#regexes-39)
217217
- [Examples](#examples-39)
218-
- [Line 268 (0x10C): Countdown](#line-268-0x10c-countdown)
218+
- [Line 267 (0x10B): BattleTalk2](#line-267-0x10b-battletalk2)
219219
- [Structure](#structure-40)
220220
- [Regexes](#regexes-40)
221221
- [Examples](#examples-40)
222-
- [Line 269 (0x10D): CountdownCancel](#line-269-0x10d-countdowncancel)
222+
- [Line 268 (0x10C): Countdown](#line-268-0x10c-countdown)
223223
- [Structure](#structure-41)
224224
- [Regexes](#regexes-41)
225225
- [Examples](#examples-41)
226-
- [Line 270 (0x10E): ActorMove](#line-270-0x10e-actormove)
226+
- [Line 269 (0x10D): CountdownCancel](#line-269-0x10d-countdowncancel)
227227
- [Structure](#structure-42)
228228
- [Regexes](#regexes-42)
229229
- [Examples](#examples-42)
230-
- [Line 271 (0x10F): ActorSetPos](#line-271-0x10f-actorsetpos)
230+
- [Line 270 (0x10E): ActorMove](#line-270-0x10e-actormove)
231231
- [Structure](#structure-43)
232232
- [Regexes](#regexes-43)
233233
- [Examples](#examples-43)
234-
- [Line 272 (0x110): SpawnNpcExtra](#line-272-0x110-spawnnpcextra)
234+
- [Line 271 (0x10F): ActorSetPos](#line-271-0x10f-actorsetpos)
235235
- [Structure](#structure-44)
236236
- [Regexes](#regexes-44)
237237
- [Examples](#examples-44)
238-
- [Line 273 (0x111): ActorControlExtra](#line-273-0x111-actorcontrolextra)
238+
- [Line 272 (0x110): SpawnNpcExtra](#line-272-0x110-spawnnpcextra)
239239
- [Structure](#structure-45)
240240
- [Regexes](#regexes-45)
241241
- [Examples](#examples-45)
242-
- [Line 274 (0x112): ActorControlSelfExtra](#line-274-0x112-actorcontrolselfextra)
242+
- [Line 273 (0x111): ActorControlExtra](#line-273-0x111-actorcontrolextra)
243243
- [Structure](#structure-46)
244244
- [Regexes](#regexes-46)
245245
- [Examples](#examples-46)
246+
- [Line 274 (0x112): ActorControlSelfExtra](#line-274-0x112-actorcontrolselfextra)
247+
- [Structure](#structure-47)
248+
- [Regexes](#regexes-47)
249+
- [Examples](#examples-47)
246250
<!-- AUTO-GENERATED-CONTENT:END -->
247251

248252
## Data Flow
@@ -2520,10 +2524,10 @@ corresponds to row `702` on the `ItemFood` sheet
25202524

25212525
```log
25222526
Network Log Line Structure:
2523-
42|[timestamp]|[id]|[name]
2527+
42|[timestamp]|[id]|[name]|[data0]|[data1]|[data2]
25242528
25252529
Parsed Log Line Structure:
2526-
[timestamp] StatusList3 2A:[id]:[name]
2530+
[timestamp] StatusList3 2A:[id]:[name]:[data0]:[data1]:[data2]
25272531
```
25282532

25292533
#### Regexes
@@ -2552,6 +2556,53 @@ Parsed Log Line Examples:
25522556

25532557
<!-- AUTO-GENERATED-CONTENT:END (logLines:type=StatusList3&lang=en-US) -->
25542558

2559+
<a name="line43"></a>
2560+
2561+
### Line 43 (0x2B): StatusEffectListForay3
2562+
2563+
This line corresponds to `FFXIV_ACT_Plugin`'s `StatusEffectListForay3` opcode/packet.
2564+
This line has information on the status effects used in some field operations content.
2565+
2566+
See: [NetworkStatusEffects](#data-fields) for a discussion of the data fields.
2567+
2568+
<!-- AUTO-GENERATED-CONTENT:START (logLines:type=StatusEffectListForay3&lang=en-US) -->
2569+
2570+
#### Structure
2571+
2572+
```log
2573+
Network Log Line Structure:
2574+
43|[timestamp]|[id]|[name]|[jobLevelData]|[currentHp]|[maxHp]|[currentMp]|[maxMp]|[currentShield]|[?]|[x]|[y]|[z]|[heading]|[data0]|[data1]|[data2]
2575+
2576+
Parsed Log Line Structure:
2577+
[timestamp] StatusEffectListForay3 2B:[id]:[name]:[jobLevelData]:[currentHp]:[maxHp]:[currentMp]:[maxMp]:[currentShield]:[?]:[x]:[y]:[z]:[heading]:[data0]:[data1]:[data2]
2578+
```
2579+
2580+
#### Regexes
2581+
2582+
```log
2583+
Network Log Line Regex:
2584+
^(?<type>43)\|(?<timestamp>[^|]*)\|(?<id>[^|]*)\|(?<name>[^|]*)\|(?<jobLevelData>[^|]*)\|(?<currentHp>[^|]*)\|(?<maxHp>[^|]*)\|(?<currentMp>[^|]*)\|(?<maxMp>[^|]*)\|(?<currentShield>[^|]*)\|(?:[^|]*\|)(?<x>[^|]*)\|(?<y>[^|]*)\|(?<z>[^|]*)\|(?<heading>[^|]*)\|
2585+
2586+
Parsed Log Line Regex:
2587+
(?<timestamp>^.{14}) StatusEffectListForay3 (?<type>2B):(?<id>[^:]*):(?<name>[^:]*):(?<jobLevelData>[^:]*):(?<currentHp>[^:]*):(?<maxHp>[^:]*):(?<currentMp>[^:]*):(?<maxMp>[^:]*):(?<currentShield>[^:]*):[^:]*:(?<x>[^:]*):(?<y>[^:]*):(?<z>[^:]*):(?<heading>[^:]*)(?:$|:)
2588+
```
2589+
2590+
#### Examples
2591+
2592+
```log
2593+
Network Log Line Examples:
2594+
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
2595+
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
2596+
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
2597+
2598+
Parsed Log Line Examples:
2599+
[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
2600+
[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
2601+
[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
2602+
```
2603+
2604+
<!-- AUTO-GENERATED-CONTENT:END (logLines:type=StatusEffectListForay3&lang=en-US) -->
2605+
25552606
<a name="line251"></a>
25562607

25572608
### Line 251 (0xFB): Debug
@@ -3387,20 +3438,20 @@ Currently, these log lines are emitted only for non-player actors (id >= 0x40000
33873438

33883439
```log
33893440
Network Log Line Structure:
3390-
270|[timestamp]|[id]|[heading]|[?]|[?]|[x]|[y]|[z]
3441+
270|[timestamp]|[id]|[heading]|[?]|[moveType]|[x]|[y]|[z]
33913442
33923443
Parsed Log Line Structure:
3393-
[timestamp] 270 10E:[id]:[heading]:[?]:[?]:[x]:[y]:[z]
3444+
[timestamp] 270 10E:[id]:[heading]:[?]:[moveType]:[x]:[y]:[z]
33943445
```
33953446

33963447
#### Regexes
33973448

33983449
```log
33993450
Network Log Line Regex:
3400-
^(?<type>270)\|(?<timestamp>[^|]*)\|(?<id>[^|]*)\|(?<heading>[^|]*)\|(?:[^|]*\|){2}(?<x>[^|]*)\|(?<y>[^|]*)\|(?<z>[^|]*)\|
3451+
^(?<type>270)\|(?<timestamp>[^|]*)\|(?<id>[^|]*)\|(?<heading>[^|]*)\|(?:[^|]*\|)(?<moveType>[^|]*)\|(?<x>[^|]*)\|(?<y>[^|]*)\|(?<z>[^|]*)\|
34013452
34023453
Parsed Log Line Regex:
3403-
(?<timestamp>^.{14}) 270 (?<type>10E):(?<id>[^:]*):(?<heading>[^:]*)(?::[^:]*){2}:(?<x>[^:]*):(?<y>[^:]*):(?<z>[^:]*)(?:$|:)
3454+
(?<timestamp>^.{14}) 270 (?<type>10E):(?<id>[^:]*):(?<heading>[^:]*):[^:]*:(?<moveType>[^:]*):(?<x>[^:]*):(?<y>[^:]*):(?<z>[^:]*)(?:$|:)
34043455
```
34053456

34063457
#### Examples

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "cactbot",
3-
"version": "0.37.4",
4-
"releaseSummary": "Windhurst, more UMAD, i18n",
3+
"version": "0.37.5",
4+
"releaseSummary": "more UMAD, TC 7.2 support, i18n",
55
"releaseInDraft": "false",
66
"license": "Apache-2.0",
77
"type": "module",

plugin/CactbotEventSource/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@
2121
// - Revision
2222
// GitHub has only 3 version components, so Revision should always be 0.
2323
// CactbotOverlay and CactbotEventSource version should match.
24-
[assembly: AssemblyVersion("0.37.4.0")]
25-
[assembly: AssemblyFileVersion("0.37.4.0")]
24+
[assembly: AssemblyVersion("0.37.5.0")]
25+
[assembly: AssemblyFileVersion("0.37.5.0")]

plugin/CactbotOverlay/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@
2020
// - Build Number
2121
// - Revision
2222
// GitHub has only 3 version components, so Revision should always be 0.
23-
[assembly: AssemblyVersion("0.37.4.0")]
24-
[assembly: AssemblyFileVersion("0.37.4.0")]
23+
[assembly: AssemblyVersion("0.37.5.0")]
24+
[assembly: AssemblyFileVersion("0.37.5.0")]

resources/netlog_defs.ts

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -995,10 +995,10 @@ const latestLogDefinitions = {
995995
data0: 15,
996996
data1: 16,
997997
data2: 17,
998+
// triplets of fields from here (effectId + otherInfo, duration, sourceId)
998999
data3: 18,
9991000
data4: 19,
10001001
data5: 20,
1001-
// Variable number of triplets here, but at least one.
10021002
},
10031003
playerIds: {
10041004
2: 3,
@@ -1084,7 +1084,10 @@ const latestLogDefinitions = {
10841084
timestamp: 1,
10851085
id: 2,
10861086
name: 3,
1087-
// triplets of fields from here (effectId, data, playerId)?
1087+
// triplets of fields from here (effectId + otherInfo, duration, sourceId)
1088+
data0: 4,
1089+
data1: 5,
1090+
data2: 6,
10881091
},
10891092
playerIds: {
10901093
2: 3,
@@ -1093,6 +1096,39 @@ const latestLogDefinitions = {
10931096
firstOptionalField: 4,
10941097
firstUnknownField: 4,
10951098
},
1099+
StatusEffectListForay3: {
1100+
type: '43',
1101+
name: 'StatusEffectListForay3',
1102+
source: 'FFXIV_ACT_Plugin',
1103+
messageType: 'StatusEffectListForay3',
1104+
fields: {
1105+
type: 0,
1106+
timestamp: 1,
1107+
id: 2,
1108+
name: 3,
1109+
jobLevelData: 4,
1110+
currentHp: 5,
1111+
maxHp: 6,
1112+
currentMp: 7,
1113+
maxMp: 8,
1114+
currentShield: 9,
1115+
// Field index 10 is always `0`
1116+
x: 11,
1117+
y: 12,
1118+
z: 13,
1119+
heading: 14,
1120+
// triplets of fields from here (effectId + otherInfo, duration, sourceId)
1121+
data0: 15,
1122+
data1: 16,
1123+
data2: 17,
1124+
},
1125+
playerIds: {
1126+
2: 3,
1127+
},
1128+
canAnonymize: true,
1129+
firstOptionalField: 15,
1130+
firstUnknownField: 15,
1131+
},
10961132
ParserInfo: {
10971133
type: '249',
10981134
name: 'ParserInfo',

test/helper/example_log_lines_test_data.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,25 @@ const lineTests: LineTests = {
569569
name: 'Tini Poutini',
570570
},
571571
},
572+
StatusEffectListForay3: {
573+
lineToTest: exampleLogLines['StatusEffectListForay3'].examples.en[0],
574+
expectedValues: {
575+
type: '43',
576+
id: '10FF0001',
577+
name: 'Tini Poutini',
578+
jobLevelData: '00646428',
579+
currentHp: '107111',
580+
maxHp: '107111',
581+
currentMp: '10000',
582+
maxMp: '10000',
583+
currentShield: '0',
584+
x: '906.17',
585+
y: '906.98',
586+
z: '259.99',
587+
heading: '-2.36',
588+
// subsquent fields are optional per netlog_defs
589+
},
590+
},
572591
LineRegistration: {
573592
lineToTest: exampleLogLines['LineRegistration'].examples.en[0],
574593
expectedValues: {

util/example_log_lines.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,15 @@ const exampleLogLines = {
388388
],
389389
},
390390
},
391+
StatusEffectListForay3: {
392+
examples: {
393+
en: [
394+
'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',
395+
'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',
396+
'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',
397+
],
398+
},
399+
},
391400
LineRegistration: {
392401
examples: {
393402
en: [

0 commit comments

Comments
 (0)