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: replace GameLog lines (HW) #95

Merged
merged 1 commit into from
Mar 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
19 changes: 6 additions & 13 deletions ui/raidboss/data/03-hw/alliance/dun_scaith.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Conditions from '../../../../../resources/conditions';
import { Responses } from '../../../../../resources/responses';
import Util from '../../../../../resources/util';
import ZoneId from '../../../../../resources/zone_id';
import { RaidbossData } from '../../../../../types/data';
import { TriggerSet } from '../../../../../types/trigger';
Expand Down Expand Up @@ -452,15 +451,14 @@ const triggerSet: TriggerSet<Data> = {
response: Responses.aoe(),
},
{
// Ordinarily we wouldn't use a game log line for this.
// Ordinarily we wouldn't use a log message for this.
// However, the RP text seems to be the only indicator.
// (Not a MapEffect packet either.)
// https://xivapi.com/LogMessage/2747
// en: Shadows gather on the floor.
id: 'Dun Scaith Shadow Links',
type: 'GameLog',
netRegex: {
line: 'Shadows gather on the floor.*?',
code: Util.gameLogCodes.message,
capture: false,
},
type: 'SystemLogMessage',
netRegex: { id: 'ABB', capture: false },
Comment on lines -455 to +461
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Completely unrelated to this PR but if we didn't want to use a SystemLogMessage here the only other option is the floor animation which is done via ActorControl:

41|2024-03-13T14:21:40.4020000-04:00|8003755F|ABB|00|00|00|759f799c80f38925
4096|2024-03-13T14:21:40.4020000-04:00|ActorControl|40000C88|EObjAnimation|00000004|00000008|00000000|00000000|00000000|ca4311e0e521125d
EObjAnimation = 413,

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense. How "spammy" of a category is EObjAnimation? Seems like another potential candidate for adding to OP.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OverlayPlugin/OverlayPlugin#276 (comment)

Guessing based on volume that the time period for those totals encompasses multiple days/log files (sorry if that's mentioned somewhere in the comment thread and I missed it). But 795 for EObjAnimation doesn't seem super heavy.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that was over like a month's worth of logs, but it was also mainly level 90 roulette content or UWU/TEA IIRC.

suppressSeconds: 5,
response: Responses.stopMoving(),
},
Expand Down Expand Up @@ -654,7 +652,6 @@ const triggerSet: TriggerSet<Data> = {
'Scathach': 'Scathach',
'Shadow Limb': 'Schattenhand',
'Shadowcourt Jester': 'Schattenhof-Narr',
'Shadows gather on the floor': 'Schatten sammeln sich auf dem Boden',
'The Queen\'s Graces': 'Anmut der Königin',
'The Queen\'s Pride': 'Stolz der Königin',
'The Rostrum': 'Podium',
Expand Down Expand Up @@ -755,7 +752,6 @@ const triggerSet: TriggerSet<Data> = {
'Scathach': 'Scáthach',
'Shadow Limb': 'Mains d\'ombre',
'Shadowcourt Jester': 'bouffon de la Cour des ombres',
'Shadows gather on the floor': 'Le pouvoir des ombres se concentre sur le sol',
'The Queen\'s Graces': 'Grâces de la Reine',
'The Queen\'s Pride': 'Fierté de la Reine',
'The Rostrum': 'Scène',
Expand Down Expand Up @@ -855,7 +851,6 @@ const triggerSet: TriggerSet<Data> = {
'Scathach': 'スカアハ',
'Shadow Limb': '影の手',
'Shadowcourt Jester': 'クィーンズ・ジェスター',
'Shadows gather on the floor': '床に影の力が集束していく',
'The Queen\'s Graces': '女王の間',
'The Queen\'s Pride': '女王の観閲広場',
'The Rostrum': '道化の舞台',
Expand Down Expand Up @@ -956,7 +951,6 @@ const triggerSet: TriggerSet<Data> = {
'Scathach': '斯卡哈',
'Shadow Limb': '影之手',
'Shadowcourt Jester': '女王小丑',
'Shadows gather on the floor': '影之力正在向地面聚集',
'The Queen\'s Graces': '女王之间',
'The Queen\'s Pride': '女王的阅兵广场',
'The Rostrum': '小丑舞台',
Expand Down Expand Up @@ -1057,7 +1051,6 @@ const triggerSet: TriggerSet<Data> = {
'Scathach': '스카하크',
'Shadow Limb': '그림자 손',
'Shadowcourt Jester': '여왕의 어릿광대',
'Shadows gather on the floor': '바닥에 그림자의 힘이 모여듭니다',
'The Queen\'s Graces': '여왕의 방',
'The Queen\'s Pride': '여왕의 사열 광장',
'The Rostrum': '광대의 무대',
Expand Down
21 changes: 13 additions & 8 deletions ui/raidboss/data/03-hw/dungeon/gubal_library_hard.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,9 @@ hideall "--sync--"

# Liquid Flame
# -ii 1946 1953 194B
# We use game log lines for the phases because the ACT log lines are unreliable
# Whichever intermission comes second ends up with phantom "Gains Effect" lines
# Whichever form (Hand/Tornado) comes second creates multiple phantom 0x1A "GainsEffect" lines
# This will cause the timeline to desync if the syncs happen at the phase start,
# so instead, put the syncs with jumps after each phase.

# Astrology and Astromancy Camera will be sealed off
1000.0 "--sync--" SystemLogMessage { id: "7DC", param1: "658" } window 1000,0
Expand All @@ -61,29 +62,33 @@ hideall "--sync--"
1030.5 "Slosh" Ability { id: "1947", source: "Liquid Flame" } window 10,10
1034.6 "Searing Wind" Ability { id: "1944", source: "Liquid Flame" }
1042.7 "Bibliocide" Ability { id: "1945", source: "Liquid Flame" }
1054.3 "--sync--" GainsEffect { effectId: '2FF' } window 54,20 jump 1100.0 # Chiromorph
1054.3 "--sync--" GainsEffect { effectId: '300' } window 54,20 jump 1200.0 # Anemomorph
1054.3 "Hand/Tornado?"

# Hand Form
1100.0 "--sync--" GameLog { line: "The liquid flame gains the effect of Chiromorph.*?" } window 100,250
# Hand Form (Chiromorph)
1100.0 "--sync--" # No actual sync; this is a jump destination
1108.4 "Seal Of Night And Day" Ability { id: "1949", source: "Liquid Flame" } window 10,10
1112.5 "Searing Wind" Ability { id: "1948", source: "Liquid Flame" }
1116.4 "Searing Wind" Ability { id: "1948", source: "Liquid Flame" }
1126.5 "Seal Of Night And Day" Ability { id: "1949", source: "Liquid Flame" } window 10,10
1130.6 "Searing Wind" Ability { id: "1948", source: "Liquid Flame" }
1134.7 "Searing Wind" Ability { id: "1948", source: "Liquid Flame" }
1138.9 "Searing Wind" Ability { id: "1948", source: "Liquid Flame" }
1149.1 "--sync--" GainsEffect { effectId: '300' } window 49,20 jump 1200 # jump to ignore phantom line
1149.1 "Form Shift"

# Tornado Form
1200.0 "--sync--" GameLog { line: "The liquid flame gains the effect of Anemomorph.*?" } window 200,0
# Tornado Form (Anemomorph)
1200.0 "--sync--" # No actual sync; this is a jump destination
1204.5 "Bibliocide" Ability { id: "1945", source: "Liquid Flame" } window 10,10
1215.4 "Magnetism/Repel?" Ability { id: "194[CD]", source: "Liquid Flame" }
1226.9 "Bibliocide" Ability { id: "1945", source: "Liquid Flame" }
1237.8 "Magnetism/Repel" Ability { id: "194[CD]", source: "Liquid Flame" }
1246.1 "--sync--" GainsEffect { effectId: '2FF' } window 46,20 jump 1100 # jump to ignore phantom line
1246.1 "Form Shift"

# Human Form
1300.0 "--sync--" GameLog { line: "The liquid flame gains the effect of Anthropomorph.*?" } window 300,10
# Human Form (Anthropomorph)
1300.0 "--sync--" GainsEffect { effectId: '2FE' } window 200,10 # no phantom line problem here
1307.5 "Searing Wind" Ability { id: "1944", source: "Liquid Flame" } window 10,20
1314.7 "Bibliocide" Ability { id: "1945", source: "Liquid Flame" }
1326.0 "Sea Of Flames x3"
Expand Down
126 changes: 24 additions & 102 deletions ui/raidboss/data/03-hw/pvp/shatter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,78 +4,59 @@ import { TriggerSet } from '../../../../../types/trigger';

export type Data = RaidbossData;

type Location = 'center' | 'north' | 'southeast' | 'southwest';

const bNpcNameIdToLocation: { [bNpcNameId: string]: Location } = {
'12D6': 'center', // Icebound Tomelith A1
'12D7': 'southwest', // Icebound Tomelith A2
'12D8': 'southeast', // Icebound Tomelith A3
'12D9': 'north', // Icebound Tomelith A4
};

const bNpcNameIds = Object.keys(bNpcNameIdToLocation);

// Frontlines: Shatter
const triggerSet: TriggerSet<Data> = {
id: 'TheFieldsOfGloryShatter',
zoneId: ZoneId.TheFieldsOfGloryShatter,
triggers: [
// https://xivapi.com/LogMessage/2652
// en: <Clickable(<SheetEn(BNpcName,2,IntegerParameter(1),1,1)/>)/> activates and begins to emit heat.
{
id: 'Shatter Big Ice Center',
type: 'GameLog',
netRegex: {
line: 'The icebound tomelith A1 activates and begins to emit heat.*?',
capture: false,
id: 'Shatter Big Ice',
type: 'SystemLogMessage',
netRegex: { id: 'A5C', param1: bNpcNameIds },
alertText: (_data, matches, output) => {
const location = bNpcNameIdToLocation[matches.param1];
if (location !== undefined)
return output[location]!();
},
alertText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
center: {
en: 'Big Ice: Center',
de: 'Grosses Eis: Mitte',
fr: 'Grosse Glace : Centre',
ja: '氷: 中央',
cn: '大冰: 中央',
ko: '큰 얼음: 중앙',
},
},
},
{
id: 'Shatter Big Ice North',
type: 'GameLog',
netRegex: {
line: 'The icebound tomelith A4 activates and begins to emit heat.*?',
capture: false,
},
alertText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
north: {
en: 'Big Ice: North',
de: 'Grosses Eis: Norden',
fr: 'Grosse Glace : Nord',
ja: '氷: 北',
cn: '大冰: 北方',
ko: '큰 얼음: 북쪽',
},
},
},
{
id: 'Shatter Big Ice Southeast',
type: 'GameLog',
netRegex: {
line: 'The icebound tomelith A3 activates and begins to emit heat.*?',
capture: false,
},
alertText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
southeast: {
en: 'Big Ice: Southeast',
de: 'Grosses Eis: Süden',
fr: 'Grosse Glace : Sud-Est',
ja: '氷: 南東',
cn: '大冰: 东南',
ko: '큰 얼음: 남동쪽',
},
},
},
{
id: 'Shatter Big Ice Southwest',
type: 'GameLog',
netRegex: {
line: 'The icebound tomelith A2 activates and begins to emit heat.*?',
capture: false,
},
alertText: (_data, _matches, output) => output.text!(),
outputStrings: {
text: {
southwest: {
en: 'Big Ice: Southwest',
de: 'Grosses Eis: Südwesten',
fr: 'Grosse Glace : Sud-Ouest',
Expand All @@ -86,65 +67,6 @@ const triggerSet: TriggerSet<Data> = {
},
},
],
timelineReplace: [
{
'locale': 'de',
'replaceSync': {
'The icebound tomelith A1 activates and begins to emit heat':
'Vereister Echolith A1 setzt sich in Betrieb und das Eis beginnt zu bröckeln',
'The icebound tomelith A2 activates and begins to emit heat':
'Vereister Echolith A2 setzt sich in Betrieb und das Eis beginnt zu bröckeln',
'The icebound tomelith A3 activates and begins to emit heat':
'Vereister Echolith A3 setzt sich in Betrieb und das Eis beginnt zu bröckeln',
'The icebound tomelith A4 activates and begins to emit heat':
'Vereister Echolith A4 setzt sich in Betrieb und das Eis beginnt zu bröckeln',
},
},
{
'locale': 'fr',
'replaceSync': {
'The icebound tomelith A1 activates and begins to emit heat':
'Mémolithe Congelé A1 e et la glace s\'est fragilisée',
'The icebound tomelith A2 activates and begins to emit heat':
'Mémolithe Congelé A2 e et la glace s\'est fragilisée',
'The icebound tomelith A3 activates and begins to emit heat':
'Mémolithe Congelé A3 e et la glace s\'est fragilisée',
'The icebound tomelith A4 activates and begins to emit heat':
'Mémolithe Congelé A4 e et la glace s\'est fragilisée',
},
},
{
'locale': 'ja',
'replaceSync': {
'The icebound tomelith A1 activates and begins to emit heat': 'アイスドトームリスA1号基が起動し、氷がもろくなった!',
'The icebound tomelith A2 activates and begins to emit heat': 'アイスドトームリスA2号基が起動し、氷がもろくなった!',
'The icebound tomelith A3 activates and begins to emit heat': 'アイスドトームリスA3号基が起動し、氷がもろくなった!',
'The icebound tomelith A4 activates and begins to emit heat': 'アイスドトームリスA4号基が起動し、氷がもろくなった!',
},
},
{
'locale': 'cn',
'replaceSync': {
'The icebound tomelith A1 activates and begins to emit heat': '冰封的石文A1启动了,冰块变得脆弱了!',
'The icebound tomelith A2 activates and begins to emit heat': '冰封的石文A2启动了,冰块变得脆弱了!',
'The icebound tomelith A3 activates and begins to emit heat': '冰封的石文A3启动了,冰块变得脆弱了!',
'The icebound tomelith A4 activates and begins to emit heat': '冰封的石文A4启动了,冰块变得脆弱了!',
},
},
{
'locale': 'ko',
'replaceSync': {
'The icebound tomelith A1 activates and begins to emit heat':
'얼음탑 A1호기가 기동하여 표면이 녹기 시작합니다!',
'The icebound tomelith A2 activates and begins to emit heat':
'얼음탑 A2호기가 기동하여 표면이 녹기 시작합니다!',
'The icebound tomelith A3 activates and begins to emit heat':
'얼음탑 A3호기가 기동하여 표면이 녹기 시작합니다!',
'The icebound tomelith A4 activates and begins to emit heat':
'얼음탑 A4호기가 기동하여 표면이 녹기 시작합니다!',
},
},
],
};

export default triggerSet;
7 changes: 4 additions & 3 deletions ui/raidboss/data/03-hw/raid/a11s.ts
Original file line number Diff line number Diff line change
Expand Up @@ -343,11 +343,12 @@ const triggerSet: TriggerSet<Data> = {
},
},
},
// There is a GameLog message (en: The plasma shield is shattered!), but no corresponding
// SystemLogMessage. The 0x19 (NetworkDeath) line shows up >2 seconds later (too late).
{
id: 'A11S Plasma Shield Shattered',
type: 'GameLog',
netRegex: { line: 'The plasma shield is shattered.*?', capture: false },

type: 'NetworkEffectResult',
netRegex: { name: 'Plasma Shield', currentHp: '0', capture: false },
response: Responses.spread(),
},
Comment on lines +346 to 353
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also not really directly related to this PR, but...

Relevant log lines that could potentially be used instead. 4096 lines are from my custom packet decoder.

Maybe we add SetStatus and/or DeathAnimation to ActorControlExtra in the future?

21|2024-03-13T15:26:49.9850000-04:00|10001234|Some One|25|Maim|40007E61|Plasma Shield|32710003|66540000|A3E|340000|11B|258000|0|0|0|0|0|0|0|0|0|0|16580|43607|8840|10000|||-3.47|49.52|-80.00|-2.12|424839|424839|10000|10000|||-6.37|47.48|-80.00|1.05|00002ADF|0|1|dcc2f14481805f17
4096|2024-03-13T15:26:49.9850000-04:00|ActionEffect1|10001234|40007E61|00000000|00000025|00002ADF|0.6|E0000000|814|0.958258623432312|0025|00|Spell|00|1|Damage|0|71|32|0|0|26196|False|False|Slashing|Unaspected|26196|Resource|A|0|0|0|0|52|False|False|Unknown|Unknown|52|StartActionCombo|1|0|0|0|80|37|False|True|Unknown|Unknown|37|Nothing|0|0|0|0|0|0|False|False|Unknown|Unknown|0|Nothing|0|0|0|0|0|0|False|False|Unknown|Unknown|0|Nothing|0|0|0|0|0|0|False|False|Unknown|Unknown|0|Nothing|0|0|0|0|0|0|False|False|Unknown|Unknown|0|Nothing|0|0|0|0|0|0|False|False|Unknown|Unknown|0|40007E61|00000000|e663350ba1169de3
4096|2024-03-13T15:26:50.6070000-04:00|ActorControl|40007E61|DeathAnimation|00000000|00000000|00000000|00000000|00000000|838eb2f80bc45df1
4096|2024-03-13T15:26:50.6070000-04:00|ActorControl|40007E61|SetStatus|00000002|00000000|00000000|00000000|00000000|07342aab0dbb92f2
4096|2024-03-13T15:26:50.6070000-04:00|ActorControl|40007E09|UnkVisControl|00000000|00000002|40007E61|00000001|00000000|c568b6550c899969
37|2024-03-13T15:26:50.6070000-04:00|40007E61|Plasma Shield|00002ADF|0|43607|0|10000|0||-3.47|49.52|-80.00|-2.12|0|0|0|01|0|0|0|E0000000|204bdbe24a735f12
4096|2024-03-13T15:26:50.6070000-04:00|EffectResult1|00000001|10975|40007E61|0|43607|0|00000000|0|1|00|0|00|0000|0000|0000|0.0000|E0000000|f493d8ae5ccb87f3
261|2024-03-13T15:26:50.2740000-04:00|Change|40007E61|CurrentMP|0|fce54aa4fea146a4
270|2024-03-13T15:26:50.6070000-04:00|40007E61|-2.1199|0000|003C|-3.4791|49.5315|-79.9890|9a83358620320738
4096|2024-03-13T15:26:50.6070000-04:00|ActorMove|40007E61|-2.1199|003C0000|-3.4791|-79.9890|49.5315|00000000|ec0648802d322489
38|2024-03-13T15:26:50.6070000-04:00|40007E61|Plasma Shield|003C3C00|0|43607|0|8840|0||-3.47|49.52|-80.00|-2.12|0|0|0|a5d618f4aa2f5bbb
4096|2024-03-13T15:26:50.6070000-04:00|StatusEffectList|40007E61|00|3C|3C|00|0|43607|0|8840|0|0000|00|0000|0000|0.0000|E0000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|0000|0000|0.0000|00000000|f0ddc0a471f9bb8b

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't wild about using the 0x25 line (even less so about using the 0x26 line), but having another option long-term would be nice. I'm not sure if DeathAnimation would have much use outside of this particular scenario, but I'm curious about SetStatus and if there might be broader use cases. Do you know any more about what effect that category of ActorControl does? Or whether there's a link between the first param and any of the exds?

{
Expand Down
Loading