MKhayle / XIVComboExpanded

Plugin version of the icon replacement features in dalamud
GNU General Public License v3.0
74 stars 60 forks source link

[Request] NIN: Intuitive Kazematoi Combo #415

Open fineanddandy26 opened 1 month ago

fineanddandy26 commented 1 month ago

Now, I'm not entirely sure if this is possible, but right now the Ninja's Auto-Refill Kazematoi feature is suboptimal - for Ninja's burst phase, you need at least 3, preferably 5, Kazematoi stacks to make sure you can fit 3 Aeolian Edges in your burst window, while the Auto-Refill Feature immediately burns through the Kazematoi stacks it generates.

I think a Feature that works something like "If less than or equal to 3 Kunais, use Armor Crush, if more than 3 Kunais, use Aeolian Edge" would be very helpful. If it's possible in the code, of course.

Edit: Also, not sure if this is possible, but edit the Feature that replaces Kassatsu with Trick Attack and Ten Chi Jin with Meisui to only do so if they're off cooldown, because currently if you execute Suiton or Huiton when Trick Attack and Meisui are on cooldown it'll replace Kassatsu and Ten Chi Jin anyways and you won't have access to those skills until Shadow Walker wears off.

Edit 2: Also Feature to replace Hakke Mujinsatsu Combo with Fleeting Raiju or Forked Raiju.

MKhayle commented 1 month ago

That may be doable as a Secret combo, yes, at the cost of potentially missing positionals and adding an actually non-intuitive behavior.

As this is an accessibility combo, it is meant to be intuitive at the cost of potentially being sub-optimal ; intuitive being "It's rotating skills in a logical way so that I don't use the wrong combo at the wrong time" and sub-optimal being "I'm risking missing positionals and won't be holding it for burst".

fineanddandy26 commented 1 month ago

Intuitive is maybe the wrong word, but yes I think something like that would be a great combo for Ninja.

MKhayle commented 1 month ago

Edit: Also, not sure if this is possible, but edit the Feature that replaces Kassatsu with Trick Attack and Ten Chi Jin with Meisui to only do so if they're off cooldown, because currently if you execute Suiton or Huiton when Trick Attack and Meisui are on cooldown it'll replace Kassatsu and Ten Chi Jin anyways and you won't have access to those skills until Shadow Walker wears off.

This is a reasonable request, a bit similar to the Grand Impact Deprioritize combo for RDM. I can look at that when I'll check the Kazematoi secret combo.

Edit 2: Also Feature to replace Hakke Mujinsatsu Combo with Fleeting Raiju or Forked Raiju.

This is technically doable, but also, why? Raiton is a single target attack, Fleeting/Forked Raiju are single target attack, and Hakke Mujisatsu is an AoE combo? Is it intended be a way to delay using it while using other features to reduce button bloat, maybe?

fineanddandy26 commented 1 month ago

This is technically doable, but also, why? Raiton is a single target attack, Fleeting/Forked Raiju are single target attack, and Hakke Mujisatsu is an AoE combo? Is it intended be a way to delay using it while using other features to reduce button bloat, maybe?

My logic is that if someone is using the Auto-Refill Kazematoi feature, they will only have one main combo button to replace with Fleeting/Forked Raiju. Being able to replace the AOE combo button with the Raiju they don't have set would be helpful, I think. (i.e. 1 - Kazematoi Refill Combo/Forked Raiju, 2 - Hakke Mujinsatsu Combo/Fleeting Raiju, 3 - Dream Within a Dream, etc.)

MKhayle commented 1 month ago

Yeah, I understand. That's further button bloating reduction then, yes. I'll see how it goes when I'll tackle this.

MKhayle commented 1 month ago

2.0.0.9 includes a Kazematoi Overcap Feature. I'll tackle the rest later.

kaedys commented 1 month ago

My solution to Forked vs. Fleeting is to have Fleeting separately on my bar for when I need it, which isn't especially often. I also updated my local version of the Armor Crush combo to also use Forked, rather than Fleeting, however. I tried using an IsInMelee() check for it, but that seems to update too slowly to be useful in rapid melee movement >.<

I'm a bit confused as to the purpose of this optimization, though. It takes a minimum of 7 GCDs to get in 3 Aeolian Edges (two full combos and a lingering Aeolian Edge from the prior combo), and that takes 14.875s without any skill speed on a Ninja (2.125s base GCD). Kunai's Bane only lasts 15s, and raid buffs only last 20s. However, last I checked, you also want to fit in a Hyosho Ranryu (2.5s), 2 Raitons (2.5s each), two Forked Raitons (2.13s each), and during 2-minutes, also a Ten Chi Jin (~3s). How are 3 Aeolian Edges fitting in that? Aeolian Edge only does 540p with Kazematoi, which is less than all of the above, and the average for that 7 GCD sequence is only 431.4p each.

Every guide I can find on NIN only a single Aeolian Edge inside buffs. I can't find anything about 3 Aeolian Edges inside a burst window, even a late-fight Medicated window.

It's not really a problem adding a feature that pools Kazematoi, using it when you have <= 3 instead of when you have 0, but in order for that to do anything, we'd also need an exception condition for when it should use Aeolian Edge instead of Armor Crush when you're at <= 3, or you're still locked to only 2 Aeolian Edges between Armor Crush usages. And that condition would need to apply for the entire 7-GCD sequence in order for it to really work. Neither Kunai's Bane nor Dokumori really qualify, because you have more important priorities during their durations than slamming in 2.33 standard melee combos.

MKhayle commented 1 month ago

I'm a bit confused as to the purpose of this optimization, though. It takes a minimum of 7 GCDs to get in 3 Aeolian Edges (two full combos and a lingering Aeolian Edge from the prior combo), and that takes 14.875s without any skill speed on a Ninja (2.125s base GCD). Kunai's Bane only lasts 15s, and raid buffs only last 20s. However, last I checked, you also want to fit in a Hyosho Ranryu (2.5s), 2 Raitons (2.5s each), two Forked Raitons (2.13s each), and during 2-minutes, also a Ten Chi Jin (~3s). How are 3 Aeolian Edges fitting in that? Aeolian Edge only does 540p with Kazematoi, which is less than all of the above, and the average for that 7 GCD sequence is only 431.4p each.

Every guide I can find on NIN only a single Aeolian Edge inside buffs. I can't find anything about 3 Aeolian Edges inside a burst window, even a late-fight Medicated window.

As a Delubrum Reginae Savage player in which buff windows last 30sec on melees with both Font of Power & Banner of Honored Sacrifice and with less busy openers at lvl 80, I can understand the intention of stacking resources early on for Aeolian Edges, but that's a bit niche... I do think the Auto-refill is better for general purposes though, and that's why it was designed that way. But again, I understand some people may rather stack resources to spend them when they want to. To each their own, even if it's not the optimal way to do so.

kaedys commented 1 month ago

Sure, but my point is, the way the feature is coded now, it always uses Armor Crush when you have 3 or fewer stacks, which means it effectively acts identically to the feature without the pooling, because you still can't use more than 2 Aeolian Edges between Armor Crushes. In fact, I'd argue it's worse, because with the "auto cast at 0", you can still manually use Armor Crush for pooling, but it's impossible to use those other 3 Kazematoi charges with how this is configured atm.

That's why I was trying to identify the use case for pooling. We need to have some coded exception that continues to use Aeolian Edge when at 3 or fewer charges in some identifiable circumstance, or the feature is, imo, actively counter-productive. We need to figure out what that circumstance is, which is why I wanted to know the source of that optimization pattern and how it's meant to work.

kaedys commented 1 month ago

@fineanddandy26 could use a reply here:

I'm a bit confused as to the purpose of this optimization, though. It takes a minimum of 7 GCDs to get in 3 Aeolian Edges (two full combos and a lingering Aeolian Edge from the prior combo), and that takes 14.875s without any skill speed on a Ninja (2.125s base GCD). Kunai's Bane only lasts 15s, and raid buffs only last 20s. However, last I checked, you also want to fit in a Hyosho Ranryu (2.5s), 2 Raitons (2.5s each), two Forked Raitons (2.13s each), and during 2-minutes, also a Ten Chi Jin (~3s). How are 3 Aeolian Edges fitting in that? Aeolian Edge only does 540p with Kazematoi, which is less than all of the above, and the average for that 7 GCD sequence is only 431.4p each.

Every guide I can find on NIN only a single Aeolian Edge inside buffs. I can't find anything about 3 Aeolian Edges inside a burst window, even a late-fight Medicated window.

It's not really a problem adding a feature that pools Kazematoi, using it when you have <= 3 instead of when you have 0, but in order for that to do anything, we'd also need an exception condition for when it should use Aeolian Edge instead of Armor Crush when you're at <= 3, or you're still locked to only 2 Aeolian Edges between Armor Crush usages. And that condition would need to apply for the entire 7-GCD sequence in order for it to really work. Neither Kunai's Bane nor Dokumori really qualify, because you have more important priorities during their durations than slamming in 2.33 standard melee combos.

As it stands, the feature as implemented is functionally useless, as all it really does is force you to always have at least 3 Kazematoi. It pools, but it doesn't let you expend that pool, because there's no exit case. It ALWAYS will use Armor Crush at 3 or fewer Kazematoi, so there's literally no purpose to it. It has essentially the same mechanically effect as the prior combo, except now you can't pool manually, nor can you consume that excess pooling. So we need to know what your expected exit case here is., how you intended to use this feature.

fineanddandy26 commented 1 month ago

Hm, I suppose you're right. My logic is that you should be able to execute more than two Aeolian Edges successively, as the current method of Armor Crush Combo->Aeolian Edge Combo->Aeolian Edge Combo->Armor Crush Combo isn't perfect imo, but yes now that you mention it it does end up being the same thing and as someone who doesn't exactly understand programming I'm not sure how it would be implemented. Sorry for wasting your time.

kaedys commented 1 month ago

You don't need to understand programming. That's what we're here for. What we need to understand is the use case. In what gameplay situation would you be pooling Kazematoi, and when would you dump it? What are the gameplay conditions for each? We just need to understand your intent with this, we can figure out how to turn that into code.

Edit: To clarify, you originally referred to this in the context of "burst phase", but the only burst phase I'm aware of on Nin is the Trick Attack window, with every other one also being raid buffs. And I've yet to encounter a guide that recommends using more than one Aeolian Edge during that window. Are you referring to burst windows as in, like, an important add spawns or you're dumping before phase transition or something?

fineanddandy26 commented 1 month ago

Well, like MKhayle said, in certain content or situations there are bigger burst windows for which having bigger stacks of Kazematoi would be useful, but that would be impossible to account for I imagine.

Additionally yes, most NIN guides seem to assume you're doing enough Armor Crushes to have Aeolian Edges to dump in add phases or phase transitions, but yet again I can't Imagine a sustainable way to actually add that onto only one button.

I'm not really sure what I was originally thinking honestly. Aside from the two edits in the original post, I still think those would be helpful.

kaedys commented 1 month ago

So, caveating this with NIN being one of the jobs I'm worst at, but my solution to that is to use the original combo (that uses Armor Crush only if you're at 0 stacks) as essentially a backstop again me using an unbuffed Aeolian, and then I keep both the Aeolian and Armor Crush combos on my bar, and manually pool using the latter when I feel the need to. Gets me in the habit of watching that gauge anyway. And tbh, it makes positionals a lot easier as well, because if you're forced into a flank position right when your 3rd combo hit is going to happen, you generally will have room to swap in an Armor Crush without overcapping.

Incidentally, this also somewhat "solves" your 2nd edit, the request for Raiju on the AoE combo, because having Armor Crush on your bar means you automatically have this, with how the combos are currently configured (I personally just have Forked in another place on my bar for the rare times I need it). I'm still not completely convinced that it really makes sense to have Raiju on the AoE combo, but I guess it doesn't really hurt, and it helps avoid wasting the proc if you accidently use Raiton in AoE. We can probably also add a feature to have Fleeting, and the main combos, automatically swap between Fleeting and Forked based on whether you're currently in melee range at the time (we do that with some of the Paladin combos atm)

Your request about the cooldowns makes complete sense, we can definitely do that.

fineanddandy26 commented 1 month ago

While that sounds interesting, I worry about the implications of someone using that combo with bad ping or not reacting to the boss moving away - imagine pressing the button you have set for Forking only for it to switch to Fleeting mid press because the boss jumped away.

I do still think being able to place a Raiju on the AOE combo would be handy - some people have weird hotbar setups. Likewise I think giving the ability to set the Armor Crush Combo to Fleeting and Aeolian Edge Combo to Forked as an alternative would be good for said users, as currently you can only strictly set Armor Crush to Forked and Aeolian Edge to Fleeting.

kaedys commented 1 month ago

While that sounds interesting, I worry about the implications of someone using that combo with bad ping or not reacting to the boss moving away - imagine pressing the button you have set for Forking only for it to switch to Fleeting mid press because the boss jumped away.

It would be an optional feature, so if they think it problematic, they could disable it, of course.

Likewise I think giving the ability to set the Armor Crush Combo to Fleeting and Aeolian Edge Combo to Forked as an alternative would be good for said users, as currently you can only strictly set Armor Crush to Forked and Aeolian Edge to Fleeting.

Ya, this is actually something I already have coded up locally, and plan to include in my next round-of-miscellany PR.