-
Notifications
You must be signed in to change notification settings - Fork 383
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/oopsy: add P9N #5432
raidboss/oopsy: add P9N #5432
Conversation
ui/raidboss/data/06-ew/raid/p9n.txt
Outdated
653.8 "Ravenous Bite 1" sync / 1[56]:[^:]*:Kokytos:813A:/ | ||
655.9 "Ravenous Bite 2" sync / 1[56]:[^:]*:Kokytos:813A:/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are tankbusters on both the tanks, one after another, and also has distance tethers on them, which should probably have a trigger but I'm not sure what trigger would be best, if there is something similar pre-existing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@quisquous will have to weigh in for a final decision on this, but it's probably worth doing something like "buster on YOU -- stretch tethers". It's longer than any of us would prefer, but we do want to convey all the information.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, there's nothing preexisting here; I think this is the first proximity buster. I think Buster on YOU -- stretch tethers
is kind of wordy, but I'm not sure what else to say here either.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added as "Tankbuster on ${player}" / "Buster on YOU -- stretch tethers".
The ability is unfortunately not actually targeted on the tanks, as far as I can see it's just the tether line and the head marker, so I based it off the head marker. It does have the slight downside that the people who get the "tankbuster on ${player}" trigger will get two of them, about 2 seconds apart, since the tethers and markers are about two seconds apart.
ui/raidboss/data/06-ew/raid/p9n.txt
Outdated
# Mage phase 3 | ||
1979.3 "Ravening (Mage)" sync / 1[56]:[^:]*:Kokytos:8118:/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is as far as my longest log goes, but in Duty Finder in my experience the boss will usually die in the second Mage or Fighter phase, I rarely see the 2nd Behemoth phase.
Due to quisquous#5431 I had accidentally swapped these, this fixes it so the triggers are in the right section.
The different sides of the branches have effectively the same casts for timeline purposes, the branches are probably better modeled in the triggers. This (in my opinion) makes the timeline a lot cleaner and easier to read.
I tried linearising it just to see what it looked like, and I much prefer that now that I look at it, so I pushed that as a separate commit. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this! Overall I really only have a few small comments, but this looks really great. Thanks for all the work.
I'd be curious to know what if anything was the hardest part of writing one of these for the first time, in terms of helping other people do it.
ui/raidboss/data/06-ew/raid/p9n.txt
Outdated
# Kokytos:8118 | U B | Ravening - move to mage phase | ||
# Kokytos:8119 | M | Ravening - move to fighter phase | ||
# Kokytos:811A | F | Ravening - move to Behemoth phase | ||
# Kokytos:811C | M | Auto-attack (magical, mage) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you ignore all of the boss autos from the timeline? (They're generally noisy but also have been inconsistent in other instances.) If you haven't seen it, you can use -ii 811C
to ignore an id on the command line when using make_timeline
. When writing a timeline, I try to put the command line I used at the top (e.g. golbez-ex.txt has a good example) so other folks rerunning make_timeline
later for whatever reason can not have to manually redo that work.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can do, I saw some conflicting things in different places on whether to include autos or not, so I decided to include them for now and remove them if they weren't needed.
Should I still include the first auto to have something to sync with near the start? Otherwise the first ability I found near the start is Gluttony's Augur around 11-15 seconds in.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, inclusion of the first auto for a safety sync is standard. There have been other Very Specific situations where we include one or two for Reasons, but in general we put them on the ignore list and then specifically include the first one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can do, I saw some conflicting things in different places on whether to include autos or not, so I decided to include them for now and remove them if they weren't needed.
For me I usually think:
- keep the first auto (if it's consistent?) to start the timeline
- keep tank autos if they're mechanics (DSR, TOP, maybe Diamond Extreme should)
-ii
other autos because they're noisy / not always consistent in older content
The other thing you can do is specifically include the cast time of the first boss ability as well with a larger sync to get things back on track. The golbez-ex.txt
file also does this at 9.4 if you want an example.
@JLGarber one thing that had come up previously is maybe just auto-starting timelines (where it makes sense, i.e. raids but not dungeons) when combat starts rather than on engage or auto which would make things more consistent. Now that we have in combat lines in OverlayPlugin, we could use those instead? Not a thing to do here, but a thing to consider for the future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added -ii
s and ignored all the autos and the cast resolutions that didn't seem useful for syncing.
ui/raidboss/data/06-ew/raid/p9n.txt
Outdated
48.4 "Fire III" sync / 1[56]:[^:]*:Kokytos:814E:/ | ||
51.7 "--sync--" sync / 1[56]:[^:]*:Kokytos:8122:/ | ||
55.6 "--sync--" sync / 1[56]:[^:]*:Kokytos:811C:/ | ||
56.3 "Fire III" sync / 1[56]:[^:]*:Kokytos:8120:/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Optional if you want to, but I try to only use real ability names in the timeline, but sometimes there's a need to differentiate. Here, it could make sense to say Fire III (cast)
and Fire III (explode)
or something to differentiate that this is only one Fire III
and not two. golbez-ex.txt
does this a bunch as an example.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ended up with "cast" and "resolve" just so I could match the wording between Fire III and Blizzard III, and I couldn't think of a better word for Blizzard III than "resolve".
ui/raidboss/data/06-ew/raid/p9n.txt
Outdated
|
||
|
||
# Mage phase 3 | ||
549.8 "Ravening (Mage)" sync / 1[56]:[^:]*:Kokytos:8118:/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am fairly sure this is the loop back to mage phase 2 based on my 11 minute log. I see it go mage 2 and then fighter 2 up into gluttony's augur. I think it's prooobably safe to assume a loop here.
Usually I look into fflogs in these cases and find the log with the longest time, but I have a hard time figuring out how to search by zones like this. It might be there, but I'm not sure how to find it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it's helpful, here's the lines from make_timeline
from my log at this point.
544.8 "Ravening" sync / 1[56]:[^:]*:Kokytos:8118:/
553.9 "--sync--" sync / 1[56]:[^:]*:Kokytos:811C:/
557.0 "--sync--" sync / 1[56]:[^:]*:Kokytos:811C:/
559.1 "--sync--" sync / 1[56]:[^:]*:Kokytos:8144:/
565.5 "Iceflame Summoning" sync / 1[56]:[^:]*:Kokytos:86E1:/
570.4 "--sync--" sync / 1[56]:[^:]*:Kokytos:8122:/
570.7 "--sync--" sync / 1[56]:[^:]*:Kokytos:811C:/
573.8 "--sync--" sync / 1[56]:[^:]*:Kokytos:811C:/
576.4 "--sync--" sync / 1[56]:[^:]*:Ice Sphere:8729:/
576.4 "--sync--" sync / 1[56]:[^:]*:Fire Sphere:8728:/
576.4 "Sphere Shatter" sync / 1[56]:[^:]*:Ice Sphere:86E4:/
576.4 "Explosion" sync / 1[56]:[^:]*:Fire Sphere:86E3:/
581.0 "Iceflame Summoning" sync / 1[56]:[^:]*:Kokytos:86E1:/
585.9 "--sync--" sync / 1[56]:[^:]*:Kokytos:8123:/
588.3 "--sync--" sync / 1[56]:[^:]*:Kokytos:811C:/
591.9 "--sync--" sync / 1[56]:[^:]*:Ice Sphere:872A:/
591.9 "--sync--" sync / 1[56]:[^:]*:Fire Sphere:8727:/
591.9 "Sphere Shatter" sync / 1[56]:[^:]*:Ice Sphere:86E5:/
591.9 "Explosion" sync / 1[56]:[^:]*:Fire Sphere:86E2:/
596.5 "Dualspell" sync / 1[56]:[^:]*:Kokytos:811D:/
599.8 "--sync--" sync / 1[56]:[^:]*:Kokytos:8123:/
601.7 "--sync--" sync / 1[56]:[^:]*:Kokytos:811C:/
604.3 "Blizzard III" sync / 1[56]:[^:]*:Kokytos:8121:/
604.3 "Fire III" sync / 1[56]:[^:]*:Kokytos:811E:/
604.9 "--sync--" sync / 1[56]:[^:]*:Kokytos:811C:/
611.0 "Global Spell" sync / 1[56]:[^:]*:Kokytos:8141:/
611.8 "Global Spell" sync / 1[56]:[^:]*:Kokytos:8142:/
613.1 "Disgorge" sync / 1[56]:[^:]*:Kokytos:8124:/
617.1 "--sync--" sync / 1[56]:[^:]*:Kokytos:8115:/
620.2 "--sync--" sync / 1[56]:[^:]*:Kokytos:8115:/
625.3 "Ravening" sync / 1[56]:[^:]*:Kokytos:8119:/
635.4 "--sync--" sync / 1[56]:[^:]*:Kokytos:8127:/
643.5 "Archaic Rockbreaker" sync / 1[56]:[^:]*:Kokytos:8128:/
645.1 "Shockwave" sync / 1[56]:[^:]*:Kokytos:8129:/
647.8 "--sync--" sync / 1[56]:[^:]*:Kokytos:8127:/
650.9 "--sync--" sync / 1[56]:[^:]*:Kokytos:8127:/
652.0 "Archaic Rockbreaker" sync / 1[56]:[^:]*:Kokytos:812A:/
654.0 "--sync--" sync / 1[56]:[^:]*:Kokytos:8127:/
657.0 "Archaic Rockbreaker" sync / 1[56]:[^:]*:Kokytos:812A:/
662.1 "Rear Combination" sync / 1[56]:[^:]*:Kokytos:814A:/
662.3 "Outside Roundhouse" sync / 1[56]:[^:]*:Kokytos:812C:/
665.3 "Swinging Kick" sync / 1[56]:[^:]*:Kokytos:812E:/
673.4 "Gluttony's Augur" sync / 1[56]:[^:]*:Kokytos:8116:/
673.8 "Gluttony's Augur" sync / 1[56]:[^:]*:Kokytos:8117:/
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I found some FFLogs entries (e.g. like this), but I wasn't able to find out how to download a network log from them to actually use those.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That log you provided does line up more or less perfectly with a loop from Mage 2, so I think you're right.
Only exception is that I have Fighter 2 hardcoded as having an Inside Roundhouse
, since in every single log I had, it's Outside Roundhouse
in Fighter 1 and Inside Roundhouse
in Fighter 2, so it seems to alternate and always be Outside on odds and Inside on evens.
I could either switch Fighter 2 to be Inside/Outside Roundhouse
and loop, or I could fill out through Behemoth 3 and then jump back to Mage 1, whichever you think is better.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I found some FFLogs entries (e.g. like this), but I wasn't able to find out how to download a network log from them to actually use those.
You can do something like node --loader ts-node/esm util/logtools/make_timeline.ts -k [YOUR KEY HERE] -r [FFLOGS REPORT ID] -rf [FIGHT NUMBER] -[OTHER ARGS]
to generate a timeline from FFLogs. It's not quite as nice as generating from a local network log, since it's missing some events, but it works for basic stuff.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Only exception is that I have Fighter 2 hardcoded as having an Inside Roundhouse, since in every single log I had, it's Outside Roundhouse in Fighter 1 and Inside Roundhouse in Fighter 2, so it seems to alternate and always be Outside on odds and Inside on evens.
If it's just one ability, it's probably better to just keep the timeline simple and have triggers cover the difference. If'it's a branch with a whole bunch of abilities tied to it, then a branch in the timeline makes more sense.
You can do something like node --loader ts-node/esm
I think you should just be able to ts-node
directly these days without the loader args anymore.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Usually I look into fflogs in these cases and find the log with the longest time, but I have a hard time figuring out how to search by zones like this. It might be there, but I'm not sure how to find it.
@quisquous I start here and increase the "Minimum Pull Length" until I filter down to only a few logs. From what I can see, this ~28min log is the longest one so far. Just have to be careful because sometimes the excessively long pulls are due to an ACT/FFLogs bug mashing two pulls together.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, tested against that 28 minute log and it seems to have synced pretty well, though I had to widen the window on the first non-auto a bit since the autos there definitely were a bit less consistent. I did notice that the "add" abilities (like Ice Sphere:86E4
) and stuff didn't show up in that log, might've just been how their logging was set up, I did see them on other FFLogs logs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, fflogs doesn't always have every ability or add. I think(?) some abilties that can be dodged don't show up if nobody can be hit, but it definitely doesn't have things like head markers or game log lines, etc. I tend to use fflogs only for testing, verifying loops, and finding enrage but "actual" network log files for making timelines.
Except the first one, to have something to sync to near the start.
Mark the casts and resolves separately to make it clearer these are not two separate attacks.
These are the abilities that go on the party for damage, as opposed to the ones that align with the cast bars.
This does require a small change to fighter phase 2, since it can now match both inside and outside roundhouse.
outputStrings: { | ||
text: { | ||
en: 'aoe + bleed', | ||
de: 'AoE + Blutung', | ||
fr: 'AoE + saignement', | ||
ja: 'AoE + DoT', | ||
cn: 'AOE + 流血', | ||
ko: '전체 공격 + 도트', | ||
}, | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@quisquous There's been a lot of "AoE + bleed" this expansion, I think we should promote this up to Responses.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I think this is a good observation. Maybe it can be a separate PR after this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Happy to make a follow-up PR to do that after this is merged.
In case we don't sync on the first auto, widen the window for the first raidwide. The next one doesn't happen until about 2.5 minutes into the fight, so we should be able to safely widen the window here.
Nothing too bad, to be honest. I haven't really done much Node/Javascript stuff in the past, so getting that dev environment running and figuring out things like "run Overall the hardest was probably figuring out the various conventions, like what abilities to ignore, what to include, what to trigger off of, what triggers to add in the first place, basically the discussion in this PR. I think I lucked out a bit starting out with this fight since it turned out to be pretty much entirely timer-based, no percentage based phase pushes, and just the single loop. I have a loose understanding of how If I have the spare time/energy, I might take a stab at slightly updating the guide a bit, at least updating things like the command line output being different now. Would probably be nice to have it center around a duty that actually still exists in the game too, but I'm not sure I'm cut out for that level of rewrite until I learn how this all works better 😅 |
This is my first attempt at a timeline, so there's probably some issues here. I've run this with `test_timeline.ts` against 17 different runs that I did and didn't see anything particularly concerning, there's a few abilities that are sometimes about 0.2 seconds off, but for the majority of the logs it's more or less spot on. I might've gone a little bit overboard with the forking/merging of timelines in the timeline, since the actual casts are about the same either side of the fork, but I decided to leave it in for the first review since I already did the work of splitting it up. Happy to merge it back together, though, if that's preferred, the timeline of this fight is actually quite linear if you ignore the fire vs ice parts. I did a test run as well with this, and didn't notice anything obviously wrong, though I don't have a good feel for what's good when it comes to triggers and what to include/not include (especially for things like Burst where you get "Move Away" immediately followed by "Stack on X"). I also included a full table of all the action IDs I discovered when going through this. Not sure if you want that or not, but I wrote it for myself in order to make sense of the timeline, so I figured I'd include it in case it was useful. eb4dda5
This is my first attempt at a timeline, so there's probably some issues here. I've run this with `test_timeline.ts` against 17 different runs that I did and didn't see anything particularly concerning, there's a few abilities that are sometimes about 0.2 seconds off, but for the majority of the logs it's more or less spot on. I might've gone a little bit overboard with the forking/merging of timelines in the timeline, since the actual casts are about the same either side of the fork, but I decided to leave it in for the first review since I already did the work of splitting it up. Happy to merge it back together, though, if that's preferred, the timeline of this fight is actually quite linear if you ignore the fire vs ice parts. I did a test run as well with this, and didn't notice anything obviously wrong, though I don't have a good feel for what's good when it comes to triggers and what to include/not include (especially for things like Burst where you get "Move Away" immediately followed by "Stack on X"). I also included a full table of all the action IDs I discovered when going through this. Not sure if you want that or not, but I wrote it for myself in order to make sense of the timeline, so I figured I'd include it in case it was useful. eb4dda5
This all looks great! Thank you so much for all the work.
Re: And yeah, I think even running
Ok, makes sense! These are the kinds of things I should really make more clear in the timeline guide, and at least document the heuristics that we've accumulated over time. I tried to write some of this in https://github.com/quisquous/cactbot/blob/main/CONTRIBUTING.md#timeline-guidelines but it deserves to be fleshed out more. Thanks for taking the time to share all of this. |
This is my first attempt at a timeline, so there's probably some issues here.
I've run this with
test_timeline.ts
against 17 different runs that I did and didn't see anything particularly concerning, there's a few abilities that are sometimes about 0.2 seconds off, but for the majority of the logs it's more or less spot on.I might've gone a little bit overboard with the forking/merging of timelines in the timeline, since the actual casts are about the same either side of the fork, but I decided to leave it in for the first review since I already did the work of splitting it up. Happy to merge it back together, though, if that's preferred, the timeline of this fight is actually quite linear if you ignore the fire vs ice parts.
I did a test run as well with this, and didn't notice anything obviously wrong, though I don't have a good feel for what's good when it comes to triggers and what to include/not include (especially for things like Burst where you get "Move Away" immediately followed by "Stack on X").
I also included a full table of all the action IDs I discovered when going through this. Not sure if you want that or not, but I wrote it for myself in order to make sense of the timeline, so I figured I'd include it in case it was useful.