-
Notifications
You must be signed in to change notification settings - Fork 75
raidboss: r11s add initial triggers and timeline #936
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
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: valarnin <valarnin@gmail.com>
Using existing phrasing where applicable.
valarnin
left a comment
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.
Approving from a technical standpoint, after the comments below are resolved. I can't review the rest of the fight against VODs.
I've been using this custom trigger, as a healer it helps significantly with determining where/how to handle spread if it's puddles -> spread -> trophy weapons 2, due to the extreme amount of distance that's required to be covered.
My group's melees have used it to iron out how they're handling spreads as well, since the boss will turn to face the weapon and direction this calls half way through the spread marker's timing.
I'm not sure if it's a good fit in general, but figured I'd offer it up as well. Again, order in the triggerset is important due to logic constraints.
// ... R11S Ultimate Trophy Weapons ...
{
id: 'R11S Trophy Weapons 2 Early Call',
type: 'ActorControlExtra',
netRegex: { category: '0197', param1: ['11D1', '11D2', '11D3'], capture: true },
condition: (data, matches) => {
if (data.weaponMechCount !== 1)
return false;
const actor = data.actorPositions[matches.id];
if (actor === undefined)
return false;
const actorDir = Math.atan2(actor.x - center.x, actor.y - center.y);
if ((Math.abs(actorDir - actor.heading) % Math.PI) < 0.1)
return true;
return false;
},
suppressSeconds: 9999,
infoText: (data, matches, output) => {
const actor = data.actorPositions[matches.id];
if (actor === undefined)
return;
const mechanic = matches.param1 === '11D1'
? 'healerGroups'
: (matches.param1 === '11D2' ? 'stack' : 'protean');
const dir = Directions.xyTo8DirOutput(actor.x, actor.y, center.x, center.y);
return output.text!({
dir: output[dir]!(),
weapon: output[mechanic]!(),
});
},
outputStrings: {
...Directions.outputStrings8Dir,
healerGroups: Outputs.healerGroups,
stack: Outputs.stackMiddle,
protean: Outputs.protean,
text: {
en: '${dir}: ${weapon}',
},
},
},
// ... R11S Trophy Weapons ...Co-authored-by: valarnin <valarnin@gmail.com>
Did you place it in the correct location (between Ultimate and Normal trophy weapon triggers)? It might also require the |
Yes
Adding delay doesn't seem to change its value. |
|
Right, That makes the required code quite a bit uglier/more annoying. // On Data:
rawWeaponCount: number;
// Init to 0:
rawWeaponCount: 0,
// Trigger, position doesn't matter any more
{
id: 'R11S Trophy Weapons 2 Early Call',
type: 'ActorControlExtra',
netRegex: { category: '0197', param1: ['11D1', '11D2', '11D3'], capture: true },
// Only fire for 2nd trophy weapons (weapons 4-6)
condition: (data) => {
++data.rawWeaponCount;
if (data.rawWeaponCount < 4 || data.rawWeaponCount > 6)
return false;
return true;
},
delaySeconds: 0.1,
infoText: (data, matches, output) => {
const actor = data.actorPositions[matches.id];
if (actor === undefined)
return;
const actorDir = Math.atan2(actor.x - center.x, actor.y - center.y);
if ((Math.abs(actorDir - actor.heading) % Math.PI) >= 0.1)
return;
const dir = Directions.xyTo8DirOutput(actor.x, actor.y, center.x, center.y);
const mechanic = matches.param1 === '11D1'
? 'healerGroups'
: (matches.param1 === '11D2' ? 'stack' : 'protean');
return output.text!({
dir: output[dir]!(),
weapon: output[mechanic]!(),
});
},
outputStrings: {
...Directions.outputStrings8Dir,
healerGroups: Outputs.healerGroups,
stack: Outputs.stackMiddle,
protean: Outputs.protean,
text: {
en: '${dir}: ${weapon}',
},
},
}, |
|
Sorry that last commit message was supposed to say "don't say move for stack/axe" since the party is already out of the tornado. |
accidentally removed it in a copy/paste
I'm not sure if I'm doing something wrong but I added this and refreshed raidemulator but I still see the same behavior. |
Mistook this early on as the players with atomic getting tethers.
|
Here is a log calling the second weapon: A log calling it about the last weapon: A log calling it for the first weapon: Maybe I am not understanding what it should be calling here. EDIT: Nevermind, I see it's calling first of the set after not what I am showing. |
May be helpful for knowing where to spread/stack towards.
|
I double-checked with the first version and saw the output matches so I've commited that. I added some text to the output (1st later) for clarity that it is calling early. |
It felt like this was not necessary anymore, the timing of the Ultimate Trophy Weapon "=> Move" or "=> Bait Gust" seemed sufficient to me.
I'm unblocking for the timeline start change, but I haven't had a chance to look at the trophy weapon changes that were merged after.
This appears to have been fixed as per the patch notes today. If I have time, I may try to do a trigger set for the arena split tethers/breaths. It's okay right now, but the call for the towers in arena split is somewhat lacking in detail one would expect. |
|
Added some arena split triggers, it's doing the general strategy of stretching tethers across to the opposite platform. |
Still needs meteorain info, but that can be added later









Credits to @valarnin for the Trophy Weapon and Ultimate Trophy Weapon triggers. In my testing if the log lines are out of order it seems they will not output, which may still need to be addressed.
Took some stuff from normal mode and converted it to savage.