PrincessRTFM/XIVComboPlugin

GNB - Burst Strike / Fated Circle suggestion

Closed this issue · 13 comments

How about a new GNB feature option that changes Gnashing Fang to Burst Strike when the following conditions are true.

  • No Mercy is active
  • Gnashing Fang cooldown > 20s
  • Double Down cooldown > 20s

This way after you used your primary burst window cartridge spenders you can spend any extras on Burst Strike without needing another button. Also add in check whether Gnashing Fang and/or Double Down are available at all due to level sync, and the feature should also cover level sync situations when those skills are not available.

The question is what to do with Fated Circle. You really do not want to be using Gnashing Fang against more than two enemies around you. Maybe override Gnashing Fang with Fated Circle when you are using your Demon Slaughter combo during your No Mercy window and Double Down is on a long cooldown. I wonder would that be too unreliable as a solution.
A feature to change Demon Slaughter combo to Fated Circle during No Mercy active and Double Down on cooldown with cartridges still to spare might be a better option.

This looks like two separate suggestions, as I'm looking through the code. Changing Gnashing Fang into Burst Strike should be easy enough, there's only one combo that changes GF as it is. Fated Circle doesn't seem to be involved at all though, so it sounds like that's a separate idea you're having that would complement the first? Or is your idea that GF becomes BS with the existing combos also applied to it, such that it'll then become Hypervelocity after use?

The Fated Circle part is effectively a separate feature suggestion. I was typing out the Burst Strike part when I started thinking what about Fated Circle for AOE situations in similar lines.

In retrospect I would leave the Fated Circle part entirely out of the GF combo. It creates easily issues with single target and AOE switching in the rotation and would complicate unnecessarily the GF code.

Demon Slaughter combo changing to Fated Circle with similar conditions than GF -> BS would be simpler more reliable solution. I can create a separate issue for this if you want.

GF becoming Hypervelocity after BS use would be nice on the other hand.

For Gnashing Fang into Burst Strike, what I've got right now is the following:

  • the existing Gnashing Fang Continuation runs first and is unchanged
  • failing that, the new combo will run as follows:
  • if No Mercy is not active, nothing happens (action unchanged)
  • if your level is high enough to use Gnashing Fang and the cooldown for GF is below the threshold, nothing happens (action unchanged)
  • if your level is high enough to use Double Down and the cooldown for DD is below the threshold, nothing happens (action unchanged)
  • if your level is high enough to use Hypervelocity and you've enabled Burst Strike Continuation and Ready To Blast is up, become Hypervelocity
  • otherwise, become Burst Strike

GF will become BS(/HV) only if you aren't high enough level for GF/DD or their cooldowns are long enough. The BS->HV code is replicated from the existing combo that does exactly that, too. This should be what you're asking for, if I understand everything correctly, but I don't play GNB so if you can confirm that this sounds right, I'll push the update.

I'd appreciate a new issue for changing DS into FC with similar details, about the cooldowns to check and any relevant effects to look for.

The logic seems correct to me. Gnashing Fang Continuation should be on the top like it currently is as you want to use it on cooldown with every second use being inside the No Mercy buff.

The main use of Burst Strike/Hypervelocity is as an extra cartridge spender during No Mercy after GF and DD usage or are not available due to level sync. This logic covers that.

The other use for BS is not to over cap on cartridges, but the Solid Barrel and Demon Slaughter combos already have an option for this.

Tested the Feature out, but during No Mercy GF changes to BS(/HV) after Jugular Rip breaking rest of the Gnashing Fang combo.

I checked your code changes and you seem to check ReadyToRip, ReadyToTear and ReadyToGouge, but not for the regular Gnashing Fang non continuation combo skills Savage Claw and Wicked Talon, so when you lose ReadyToRip and GF combo should go to Savage Claw the current logic goes right into BS/HV if you've already used Double Down during No Mercy.

I added some last-combo-move checks in the middle, I think that'll fix it. If not, then I need a workaround that'll take some time to figure out, so let me know.

Unfortunately it did not change anything. The Combo still breaks after Jugular Rip.

I wonder should the new lastComboMove check refer also to the previously executed continuation skill. So the new check should be something like this:

	// no level checks because GF/SC/WT are all unlocked at the same level
	if (lastComboMove is GNB.GnashingFang || lastComboMove is GNB.JugularRip)
		return GNB.SavageClaw;
	if (lastComboMove is GNB.SavageClaw || lastComboMove is GNB.AbdomenTear)
		return GNB.WickedTalon;

I'd also probably move this to the start of the new feature block as the check won't be needed when the feature not in use.

	if (IsEnabled(CustomComboPreset.GunbreakerGnashingStrikeFeature)) {
		// no level checks because GF/SC/WT are all unlocked at the same level
		if (lastComboMove is GNB.GnashingFang || lastComboMove is GNB.JugularRip)
			return GNB.SavageClaw;
		if (lastComboMove is GNB.SavageClaw || lastComboMove is GNB.AbdomenTear)
			return GNB.WickedTalon;

		if (SelfHasEffect(GNB.Buffs.NoMercy)) {
		...
	}

Okay, added the other moves and stuck the whole check inside the feature block. Let's see if it works now.

Also, for reference, C#'s is matching lets you do thing is constant1 or constant2 or... instead of thing is constant1 || thing is constant2, in case you're planning to get into it yourself.

Nope still doesn't work. I wonder what the problem is with logic.

I ended up learning how to build dalamud dev plugins and going to see if I can figure this out. I got other feature ideas also for GNB, so might as well spend mine own time to on development and testing these out. Going submit these once I got something reasonable, and you can decide if you want to implement them.

Probably will, toss a PR up when you're done with them. I don't play GNB, but if you set the log level to debug and look for GunbreakerGnashingFang.Invoke(16146, ...) lines, those might be useful. It'd at least tell you what the lastComboMove value is, which could help track down why it's not working even if it doesn't offer much for how to fix it.

Update: I still don't have GNB (and still don't play tanks) but I was contacted by a user on discord who does, and who's even written something that is, in their words, "similar to the latest experimental code" for this (which isn't working and I still don't know why) and they'd like to submit both their function and some more stuff. We might find a solution for this yet!

I ended up moving this from Gnashing Fang to Solid Barrel. GF combo is pretty finicky for some reason with any additions. Solid Barrel also ended up making more sense since I've also added Fated Circle to Demon Slaughter combo, and both combos already have cartridge overflow spender.

Been meaning to do a PR, but I've have been testing and fine tuning some other GNB features also. I'll try submit the PR once I've gotten off work.