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: update ARR/HW/SB timelines to use InCombat lines #5555

Merged
merged 13 commits into from
Jun 19, 2023
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
109 changes: 90 additions & 19 deletions docs/TimelineGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,10 @@ Care is needed to make sure that replacements are not overzealous.
Here's an example of using cactbot's tools to make a timeline file for Cape Westwind.
This is pretty straightforward and only requires one person to test, so is a good first example.

Note that the Cape Westwind trial was removed in Patch 6.1,
and the timeline has since been removed from cactbot.
However, you can view the original timeline [here](https://github.com/quisquous/cactbot/blob/aa38bdf8f2551a504e1d3f595cd266d3baa193f2/ui/raidboss/data/02-arr/trial/cape_westwind.txt).

### Run the fight a few times

The first step in making a timeline is generating a few ACT logs.
Expand Down Expand Up @@ -309,17 +313,12 @@ export default {
};
```

(3) Update the manifest file.

Update **ui/raidboss/data/raidboss_manifest.txt** with both the name of the
new triggers file and the new timeline file.

(4) Build cactbot.
(3) Build cactbot.

Run `npm run build` in the cactbot source directory.
If you never run `npm install` before, you'll need to do that first.

(5) Reload raidboss
(4) Reload raidboss

Make sure the raidboss URL is pointed to `dist/ui/raidboss/raidboss.html`.
If you've changed any of these files, reload your cactbot raidboss
Expand Down Expand Up @@ -880,7 +879,7 @@ hideall "--sync--"
0.0 "--Reset--" sync / 21:........:4000000F:/ window 10000 jump 0

0 "Start"
0.0 "--sync--" sync /:Engage!/ window 0,1
0.0 "--sync--" sync / 104:[^:]*:1($|:)/ window 0,1
2.0 "Shield Skewer" sync /:Rhitahtyn sas Arvina:471:/
```

Expand All @@ -891,26 +890,98 @@ other people can come back and see what you skipped.
but the timeline itself will still sync to those lines.
There can be anything in the text, it is just called `--sync--` for convenience.

It's good practice to have a Reset line to stop the timeline when there's a wipe.
### Pre-timeline combat, starts & resets, and multiple zones

There is no one-size-fits-all approach for starting and resetting timelines.

In single-boss, single-zone content (e.g., most trials),
the timeline should start when combat begins,
and should reset on a wipe or when the player is out of combat.

However, in dungeons for example, the player is often in combat
with mobs before the timeline should begin for the first boss encounter.
For that matter, there are also several boss encounters in each dungeon.
In those situations, we need discrete timelines for each boss encounter,
and each boss's timeline should start only once that boss encounter begins.

There are a number of ways we can handle this.

First, by default, cacbot will reset the timeline to 0
whenever a player is out of combat.
This default can be overriden in particular fight's trigger set
with the following property:

```bash
resetWhenOutOfCombat: false
```

This property is only used in selective circumstances (e.g. zones like Eureka),
so we'll approach timeline creation here assuming default behavior.

The first step is determining how the timeline should begin running.

If the timeline should begin when the player first begins combat,
we can use OverlayPlugin's 0x104 InCombat line
to detect when the player enters combat:

```bash
0.0 "--sync--" sync / 104:[^:]*:1($|:)/ window 0,1
```

However, if there will be pre-timeline combat (e.g., pre-boss mobs),
this would incorrectly start combat during the pre-boss phase,
so we need a different approach.

In these situations, boss encounters (and timelines) are often tied
to a specific zone within the instance,
which means we can start the timeline when that zone is sealed off.
For example:

```bash
0.0 "--sync--" sync / 00:0839::The Landfast Floe will be sealed off/ window 1,0
```

For multi-zone instances like dungeons, we can effectively create
separate timelines for each encounter in the same timeline file
by using large gaps between the timelines, coupled with large sync windows.

For example, in [Alzadaal's Legacy](https://github.com/quisquous/cactbot/blob/main/ui/raidboss/data/06-ew/dungeon/alzadaals_legacy.txt), we effectively have three separate timelines,
one for each boss encounter, each spaced 1000 seconds apart.
Because the timeline resets to 0 each time the player is out of combat,
we use large sync windows on each zone-seal message to 'jump' the timeline
to the right place for each encounter:

```bash
0.0 "--sync--" sync / 00:0839::The Undersea Entrance will be sealed off/ window 0,1
...
1000.0 "--sync--" sync / 00:0839::The Threshold Of Bounty will be sealed off/ window 1000,1
...
2000.0 "--sync--" sync / 00:0839::Weaver'S Warding will be sealed off/ window 2000,1
```

Finally, because cactbot will reset the timeline when the player is out of combat,
there is no longer a need to include specific reset lines in most timeline files.

However, if a trigger set contains the property to NOT reset the timeline
when out of combat, there are several options for manualy triggering a reset.

On fights where the entire zone resets (e.g. all of omegascape, a4s, a8s, a12s, t9, t13),
`sync / 21:........:4000000F:/` is a good sync to use.
On fights with zones that seal and unseal, (e.g. a1s, t1-8)
you should use the zone sealing message itself to reset.
you can use the ActorControl line that is sent on a wipe:

Finally, to start a fight, you should always include an Engage! sync for countdowns.
If the first boss ability is slow to happen, you should also include the first
auto so that the timeline starts.
```bash
0.0 "--Reset--" sync / 21:........:4000000F:/ window 100000 jump 0
```

For instances, on o11s, the first two lines are:
On fights with zones that seal and unseal, (e.g. a1s, t1-8)
you can use the zone unsealing message itself to reset:

```bash
0.0 "--sync--" sync /:Engage!/ window 0,1
2.5 "--sync--" sync /:Omega:368:/ window 3,0
0.0 "--Reset--" sync / 00:0839::.*is no longer sealed/ window 100000 jump 0
```

### Making loops loop

Here's the phase 1 loop, again.
Back to our Cape Westwind timeline, here's the phase 1 loop, again.
We're going to edit this so that whenever we get to 52.2 seconds
it will jump back to 24.4 seconds seamlessly.

Expand Down
6 changes: 3 additions & 3 deletions ui/raidboss/data/02-arr/raid/t10.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Turn 10
# -ii B5A B5C B60 B66 B68 B64 B59 B58 B65 B61 B57 -p B5D:200 B5E:500

# Note: Use zone seal message instead of 0x104 line to start timeline
# as there are pre-boss adds to start the encounter.

hideall "--Reset--"
hideall "--sync--"

0.0 "--Reset--" sync / 21:........:4000000F:/ window 100000 jump 0

# Initial Phase: Tankbuster, Charge, Repeat
0.0 "Start"
0.0 "--sync--" sync /:Engage!/ window 0,1
0.0 "--sync--" sync / 00:0839::The Alpha Concourse will be sealed off/ window 5,5
8.0 "Crackle Hiss" sync / 1[56]:[^:]*:Imdugud:B55:/
16.0 "Critical Rip" sync / 1[56]:[^:]*:Imdugud:B56:/
Expand Down
9 changes: 4 additions & 5 deletions ui/raidboss/data/02-arr/raid/t11.txt
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
### Turn 11
# -ii B70 B6A B75 B74 B80 B7C -p B6F:200 B78:600 B7A:1208

# Note: Use zone seal message instead of 0x104 line to start timeline
# as there are pre-boss adds to start the encounter.

hideall "--Reset--"
hideall "--sync--"

0.0 "--Reset--" sync / 00:0839::.*is no longer sealed/ window 100000 jump 0

### Phase 1
0.0 "Start"
0.0 "--sync--" sync /:Engage!/ window 0,1
0.0 "--sync--" sync / 00:0839::The Core Override will be sealed off/ window 10,10
2.5 "--sync--" sync / 1[56]:[^:]*:Kaliya:B6A:/ window 3,0
9.4 "Resonance" sync / 1[56]:[^:]*:Kaliya:B6B:/
9.4 "Resonance" sync / 1[56]:[^:]*:Kaliya:B6B:/ window 10,10

19.7 "Nerve Gas"
24.9 "Nerve Gas"
Expand Down
7 changes: 2 additions & 5 deletions ui/raidboss/data/02-arr/raid/t12.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@ hideall "--sync--"
hideall "Summon"
hideall "Scorched Pinion"

0.0 "--Reset--" sync / 21:........:4000000F:/ window 100000 jump 0

### Phase 1: Blackfire/Whitefire
0.0 "Start"
0.0 "--sync--" sync /:Engage!/ window 0,1
2.5 "--sync--" sync / 1[56]:[^:]*:Phoenix:368:/ window 3,0
0.0 "--sync--" sync / 104:[^:]*:1($|:)/ window 0,1
9.0 "Bennu Add"
18.0 "Revelation" sync / 1[56]:[^:]*:Phoenix:B87:/
18.0 "Revelation" sync / 1[56]:[^:]*:Phoenix:B87:/ window 18,10
32.1 "Blackfire" sync / 1[56]:[^:]*:Phoenix:B8C:/
42.1 "--sync--" sync / 1[56]:[^:]*:Phoenix:B8F:/
43.6 "Whitefire" sync / 1[56]:[^:]*:Phoenix:B90:/
Expand Down
5 changes: 1 addition & 4 deletions ui/raidboss/data/02-arr/raid/t13.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@
hideall "--Reset--"
hideall "--sync--"

0.0 "--Reset--" sync / 21:........:4000000F:/ window 100000 jump 0

### Phase 1: Megaflare Warmup
0.0 "Start"
0.0 "--sync--" sync /:Engage!/ window 0,1
1.0 "--sync--" sync / 1[56]:[^:]*:Bahamut Prime:BAC:/ window 2,1
0.0 "--sync--" sync / 104:[^:]*:1($|:)/ window 0,1
7.0 "Flare Breath" sync / 1[56]:[^:]*:Bahamut Prime:BAD:/ window 7,10
15.1 "Megaflare" sync / 1[56]:[^:]*:Bahamut Prime:BAF:/ window 80,80
18.8 "MF Spread" #sync / 1[56]:[^:]*:Bahamut Prime:BB0:/
Expand Down
5 changes: 1 addition & 4 deletions ui/raidboss/data/02-arr/raid/t5.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,9 @@
hideall "--Reset--"
hideall "--sync--"

0.0 "--Reset--" sync / 00:0839::.*is no longer sealed/ window 100000 jump 0

### Phase 1
0.0 "Start"
0.0 "--sync--" sync /:Engage!/ window 0,1
0.0 "--sync--" sync / 00:0839::The Right Hand of Bahamut will be sealed off/ window 10,10
0.0 "--sync--" sync / 104:[^:]*:1($|:)/ window 0,1
7.5 "Plummet" sync / 1[56]:[^:]*:Twintania:4D8:/ window 10,5
21.6 "Death Sentence" sync / 1[56]:[^:]*:Twintania:5B2:/ window 22,10
25.7 "Plummet" sync / 1[56]:[^:]*:Twintania:4D8:/
Expand Down
4 changes: 2 additions & 2 deletions ui/raidboss/data/02-arr/raid/t6.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
hideall "--Reset--"
hideall "--sync--"

0.0 "--Reset--" sync / 00:0839::.*is no longer sealed/ window 100000 jump 0
# Note: Use zone seal message instead of 0x104 line to start timeline
# as there are pre-boss adds to start the encounter.

### Phase 1
0.0 "Start"
0.0 "--sync--" sync /:Engage!/ window 0,1
0.0 "--sync--" sync / 00:0839::Scar's Edge will be sealed off/ window 10,10
7.5 "Bloody Caress" sync / 1[56]:[^:]*:Rafflesia:797:/ window 8,8
11.5 "Thorn Whip" sync / 1[56]:[^:]*:Rafflesia:879:/
Expand Down
4 changes: 2 additions & 2 deletions ui/raidboss/data/02-arr/raid/t7.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
hideall "--Reset--"
hideall "--sync--"

0.0 "--Reset--" sync / 00:0839::.*is no longer sealed/ window 100000 jump 0
# Note: Use zone seal message instead of 0x104 line to start timeline
# as there are pre-boss adds to start the encounter.

### Phase 1 (100%)
0.0 "--sync--" sync /:Engage!/ window 0,1
0.0 "--sync--" sync / 00:0839::Bioweapon Storage will be sealed off/ window 10,10
6.4 "Tail Slap" sync / 1[56]:[^:]*:Melusine:7A8:/ window 7,0
12.3 "Cursed Voice" sync / 1[56]:[^:]*:Melusine:7AC:/
Expand Down
7 changes: 3 additions & 4 deletions ui/raidboss/data/02-arr/raid/t8.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,15 @@
# Note: sadly there's nothing in the logs about towers and so
# there's no way to really include them here.

# Note: Use zone seal message instead of 0x104 line to start timeline
# as there are pre-boss adds to start the encounter.

hideall "--Reset--"
hideall "--sync--"

0.0 "--Reset--" sync / 00:0839::.*is no longer sealed/ window 100000 jump 0

### Phase 1: introduction to towers
0.0 "Start"
0.0 "--sync--" sync /:Engage!/ window 0,1
0.0 "--sync--" sync / 00:0839::The central bow will be sealed off/ window 10,10
3.5 "--sync--" sync / 1[56]:[^:]*:The Avatar:7C[01]:/ window 3.5,0
6.1 "Diffusion Ray" sync / 1[56]:[^:]*:The Avatar:7C2:/ window 7,10
26.0 "Homing Missile" sync / 1[56]:[^:]*:The Avatar:7C7:/
27.2 "Diffusion Ray" sync / 1[56]:[^:]*:The Avatar:7C2:/
Expand Down
5 changes: 1 addition & 4 deletions ui/raidboss/data/02-arr/raid/t9.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,10 @@
hideall "--Reset--"
hideall "--sync--"

0.0 "--Reset--" sync / 21:........:4000000F:/ window 100000 jump 0

### Phase 1
# This phase really doesn't seem to loop anywhere.
0.0 "Start"
0.0 "--sync--" sync /:Engage!/ window 0,1
2.5 "--sync--" sync / 1[56]:[^:]*:Nael deus Darnus:367:/ window 3,0
0.0 "--sync--" sync / 104:[^:]*:1($|:)/ window 0,1
5.5 "Ravensclaw" sync / 1[56]:[^:]*:Nael deus Darnus:7D5:/ window 6,5
16.6 "Ravensclaw" sync / 1[56]:[^:]*:Nael deus Darnus:7D5:/

Expand Down
Loading