raidboss: DMU P2 Initial Triggers#1076
Conversation
|
Oh and the tower locations appear to be available with MapEffects I think. |
Co-authored-by: Dowon <ks2515@naver.com>
roles missing in tower 6, remove groupbtowers (this was just me trying to commit something that had output before stopping for the day), refactor the rest of the towers with even/odd code. Some of the baits still needed separate triggers due to overlaps within current checks between groups. Also to note, this would not work all the way if it is not AAABBBBA.
At least for standard comps, assuming tanks are not ever baiting cones and having melee downtime... This just makes it so you would not have to alter the output.
|
Planning to add trines and fixup the last past/future before marking ready. |
|
I'm going to simplify the tower triggers, assume first 4 tower soaks (via received headmarkers) are 1 group, and the others that didn't soak group 2. The mechanic appears to require splitting into two groups (unless there is some strange way you could swap people between groups?). |
Finding another log with longer time between updated headmarker and the ability.
|
I tried emulating it using logs up to P3, and it appears to work fine with Kroxy-Rinon. 👍🏻 |
Co-authored-by: Dowon <ks2515@naver.com>
|
I was working with these earlier with Kroxy-Rinon, and a question came to mind, on all the other things it figured out which tower you needed to go to, except for stack marker players in 3/5/7, where it seems to just call out the two people with stack. |
I had not implemented priority for the stack, but something I can look into adding tomorrow. |
|
@valarnin could you check over some of this from a typescript perspective? Mostly just need to know about the function I wrote. I ran into some issues with data.party.isHealer due to // Get Partner's HeadMarker following HTMR Priority
// Requires data and Forsaken Group
// Will return the forsaken headmarker of partner
const getHTMRPartnerMarker = (
data: Data,
group: string[],
): forsakenHeadmarker => {
// Avoiding use of unbound method with `this` in data.party.isHealer
const isHealer = (
x: string,
): boolean => {
const jobName = data.party.jobName(x);
if (jobName === undefined)
return false;
return Util.isHealerJob(jobName);
};
// Functions for determining party member DPS subroles
const isRangedDPS = (
x: string,
): boolean => {
const jobName = data.party.jobName(x);
if (jobName === undefined)
return false;
return Util.isRangedDpsJob(jobName) || Util.isCasterDpsJob(jobName);
};
const isMeleeDPS = (
x: string,
): boolean => {
const jobName = data.party.jobName(x);
if (jobName === undefined)
return false;
return Util.isMeleeDpsJob(jobName);
};
// Function to dynamically determine which role to check
const getRoleFunction = (
role: string,
): (name: string) => boolean => {
// Only a healer will supercede the tank
if (role === 'tank')
return isHealer;
if (Util.isMeleeDpsJob(data.job))
return isRangedDPS;
// If we find a melee in our group we are the ranged priority
// Partner should be a melee dps, for optimal comp
return isMeleeDPS;
};
const playerHeadmarkers = data.forsakenPlayerHeadmarkers;
// Need to look at what healer has in relation to us
// Partner is whoever has the same marker
const isMyRoleSameAs = getRoleFunction(data.role);
const member1 = group[0] ?? '';
const member2 = group[1] ?? '';
const member3 = group[2] ?? '';
const partner = isMyRoleSameAs(member1)
? member1
: isMyRoleSameAs(member2)
? member2
: isMyRoleSameAs(member3)
? member3
: 'unknown';
// Return partner's marker
return playerHeadmarkers[partner ?? 0] ?? 'unknown';
};EDIT: I need to fixup the comment / function name. |
valarnin
left a comment
There was a problem hiding this comment.
Aside from the bind question, this looks good in general from a TS standpoint for me.
Though there's a lot of intertwined logic depending on config values, wish there was a better way to separate out the logic by e.g. having DMU P2 Path of Light Towers 2 Default, DMU P2 Path of Light Towers 2 Bowtie, etc.
Yea. This mechanic might also be able to reduce the trigger count by simply having a Tower 1 (due to it assigning groups), then Odds vs Even towers instead of each tower. |
|
I'll give it another day to test after the recent changes to the stacks. The raidemulator still looks good to me, but I won't be able to test further until tomorrow. |
|
For future reference, the other way to fix that problem would be to return an inner anonymous function that retains a reference to const getRoleFunction = (
role: string,
): (name: string) => boolean => {
return (name: string) => {
// Only a healer will supercede the tank
if (role === 'tank')
return data.party.isHealer(name);
if (Util.isMeleeDpsJob(data.job))
return isRangedDPS(name);
// If we find a melee in our group we are the ranged priority
// Partner should be a melee dps, for optimal comp
return isMeleeDPS(name);
}
}; |
For use with Forsaken, be sure to select one of the configurable options as the default of none is limited:
- Kroxy-Rinon
- Modified ABBA
- AAAABBBB
You will still need to get the first tower correct to have Group A or Group B assignment for which the stack players will be listed.
Kroxy-Rinon and Modified ABBA use same HTMR priority.
Trine directions are sorted in clockwise order starting from North. Recommend to modify the output to the directions you care about. Example: Party may want `${dir1}`, but tanks want `${dir3}`.
---------
Co-authored-by: Dowon <ks2515@naver.com> 8a7dc57
For use with Forsaken, be sure to select one of the configurable options as the default of none is limited:
- Kroxy-Rinon
- Modified ABBA
- AAAABBBB
You will still need to get the first tower correct to have Group A or Group B assignment for which the stack players will be listed.
Kroxy-Rinon and Modified ABBA use same HTMR priority.
Trine directions are sorted in clockwise order starting from North. Recommend to modify the output to the directions you care about. Example: Party may want `${dir1}`, but tanks want `${dir3}`.
---------
Co-authored-by: Dowon <ks2515@naver.com> 8a7dc57
For use with Forsaken, be sure to select one of the configurable options as the default of none is limited:
- Kroxy-Rinon
- Modified ABBA
- AAAABBBB
You will still need to get the first tower correct to have Group A or Group B assignment for which the stack players will be listed.
Kroxy-Rinon and Modified ABBA use same HTMR priority.
Trine directions are sorted in clockwise order starting from North. Recommend to modify the output to the directions you care about. Example: Party may want `${dir1}`, but tanks want `${dir3}`.
---------
Co-authored-by: Dowon <ks2515@naver.com> 8a7dc57
For use with Forsaken, be sure to select one of the configurable options as the default of none is limited:
- Kroxy-Rinon
- Modified ABBA
- AAAABBBB
You will still need to get the first tower correct to have Group A or Group B assignment for which the stack players will be listed.
Kroxy-Rinon and Modified ABBA use same HTMR priority.
Trine directions are sorted in clockwise order starting from North. Recommend to modify the output to the directions you care about. Example: Party may want `${dir1}`, but tanks want `${dir3}`.
---------
Co-authored-by: Dowon <ks2515@naver.com> 8a7dc57
This is separated out from the P1 branch and timeline drafts I have. Figured I would share what I have been working on.
There's probably a simpler way to resolve Forsaken than what I have so far. I'm still testing this out though as I don't have a full network log to compare against and there are many ways to do this phase which makes it trickier to figure out how to form a generic output.