Jump to content
  • 0

[4.1.2] hunter's claw is extremely busted in all sorts of ways (topic originally was "weird weird bug: different kinds of 'beasts'")


thelee

Question

I literally paid for some airplane wifi just so I could report this bug while it was still fresh, it is so bizarre.

 

Background: Hunter's Claw is a ranger ability that lets you build an increasing accuracy buff against enemies the more you use it.  Has been mostly working great this playthrough. I started up building stacks against beasts in preparation for fighting the gigantic cave grub at the end of the Old City, and I came across the weirdest bug.

 

I built up an initial 5 stacks against some cave grubs in the random Nekataka encounter where you get Griffin's Blade. I'm now in the undercity, and the first encounter is some skuldraks and cave bats. "Cool" I thought, "I'll build up more stacks vs beasts against the cave bats."

 

The first hit and this happened: 

 

post-58316-0-57974500-1553232473_thumb.png

 

The hit with Hunter's Claw created a completely separate stacking buff for increasing accuracy against "Beasts". The two different buffs don't stack. In fact, when I check the combat log, my prior 5 stacks of hunter's claw are not accounted for, only the stacks that I start to build against these cave bats.

 

This means that cave bats are a weird different kind of "beast" or the cave grubs in the Nekataka are a weird different kind of "beast".  Either way, it feels extremely confusing and extremely buggy that there are different kinds of "beasts" out there for purposes of Hunter's Claw stacks.

 

Dropbox link to output_log (OS X) and save: https://www.dropbox.com/sh/zvndwjvyqst507k/AABV1NBXHAbEPNNLzMb_L07ha?dl=0

Edited by thelee
  • Like 1
Link to comment
Share on other sites

Recommended Posts

  • 0

ok correction: they do stack, they are just separate entries in the combat log tooltip. I still need to figure out if the total stacks between the two buffs are still capped at 20, so this may be less of a bad bug than i thought, though it is still very weird.

Edited by thelee
Link to comment
Share on other sites

  • 0

*sigh* i just used hunter's claw against a different creature type (solely as an attempt as an interrupt) and the second stack of anti-beast buff i had gotten completely disappeared (which after my OP I had built up to +15 for a total of +20). The original +5 is still there. I don't know what's going on with hunter's claw here.

Edited by thelee
Link to comment
Share on other sites

  • 0

Hunter's Claw is not that simple.

 

It's WeaponAttackAbilityGameData that:

- applies Hunters_Claw_SE_DisplayOnly to hunter himself (this SE has 0 duration, and it looks that it does nothing; it's probably used for ability description modal)

- tries to apply 6 transfer status effects to the target on each hit: Hunters_Claw_SE_Transfer_Beast, Hunters_Claw_SE_Transfer_Kith, and so on.

- Hunters_Claw_SE_Transfer_Beast is applied to the enemy, only if it is a hostile beast and hunter is not affected by: Hunters_Claw_SE_Accuracy_Kith, Hunters_Claw_SE_Accuracy_Vessel, etc

- once Hunters_Claw_SE_Transfer_Beast is successfully applied to the enemy, it is auto-transferred to the ranger. This triggers Hunters_Claw_SE_ApplyOnEvent_Beast which applies Hunters_Claw_SE_Accuracy_Beast.

- and Hunters_Claw_SE_Accuracy_Beast has infinite duration and stacks by up to 20 times.

 

Now this is repeated for the other 5 creature types (races). Subraces are not checked. So no, there are no 2 kinds of beasts from Hunter's Claw perspective ^^

P.S. Here's an excerpt for beasts. It contains: ability data, display SE and 3 beast related SE. And the total json would also include 3 SE for kith, 3 for vessels, and so on.

 

 

P.P.S. I am looking at Hunters_Claw_SE_Accuracy_Beast and it has ApplicationBehavior: StackIfAlreadyApplied.

And according to documentation:

- StackIfAlreadyApplied: A second effect will be applied if trying to apply this effect to someone who already has it. Different origin effects will stack separately.

- StackWithAllSimilarDataEffects: Effect will stack with other effects of the same game data type, regardless of origin.

 

So maybe changing StackIfAlreadyApplied to StackWithAllSimilarDataEffects will fix it?

The thing is: with those transfer and onApply effects, one could think that the final accuracy effect "should think" that the origin is hunter himself. But it seems that it's not the case, and the game still checks for creature "ID"?

 

Btw @thelee:

- could it be that your fifth Hunter's Claw attack was a killing blow?

- do you have only 1 ranger with Hunter's Claw or there were more of them attacking the same enemy?

- or it happens everytime you attack a different subtype of beast?

Edited by MaxQuest
Link to comment
Share on other sites

  • 0

Hunter's Claw is not that simple.

 

It's WeaponAttackAbilityGameData that:

- applies Hunters_Claw_SE_DisplayOnly to hunter himself (this SE has 0 duration, and it looks that it does nothing; it's probably used for ability description modal)

- tries to apply 6 transfer status effects to the target on each hit: Hunters_Claw_SE_Transfer_Beast, Hunters_Claw_SE_Transfer_Kith, and so on.

- Hunters_Claw_SE_Transfer_Beast is applied to the enemy, only if it is a hostile beast and hunter is not affected by: Hunters_Claw_SE_Accuracy_Kith, Hunters_Claw_SE_Accuracy_Vessel, etc

- once Hunters_Claw_SE_Transfer_Beast is successfully applied to the enemy, it is auto-transferred to the ranger. This triggers Hunters_Claw_SE_ApplyOnEvent_Beast which applies Hunters_Claw_SE_Accuracy_Beast.

- and Hunters_Claw_SE_Accuracy_Beast has infinite duration and stacks by up to 20 times.

 

Now this is repeated for the other 5 creature types (races). Subraces are not checked. So no, there are no 2 kinds of beasts from Hunter's Claw perspective ^^

P.S. Here's an excerpt for beasts. It contains: ability data, display SE and 3 beast related SE. And the total json would also include 3 SE for kith, 3 for vessels, and so on.

 

 

P.P.S. I am looking at Hunters_Claw_SE_Accuracy_Beast and it has ApplicationBehavior: StackIfAlreadyApplied.

And according to documentation:

- StackIfAlreadyApplied: A second effect will be applied if trying to apply this effect to someone who already has it. Different origin effects will stack separately.

- StackWithAllSimilarDataEffects: Effect will stack with other effects of the same game data type, regardless of origin.

 

So maybe changing StackIfAlreadyApplied to StackWithAllSimilarDataEffects will fix it?

The thing is: with those transfer and onApply effects, one could think that the final accuracy effect "should think" that the origin is hunter himself. But it seems that it's not the case, and the game still checks for creature "ID"?

 

Btw @thelee:

- could it be that your fifth Hunter's Claw attack was a killing blow?

- do you have only 1 ranger with Hunter's Claw or there were more of them attacking the same enemy?

- or it happens everytime you attack a different subtype of beast?

Max they should hire you for QA, give you a team.

Have gun will travel.

Link to comment
Share on other sites

  • 0

Btw @thelee:

- could it be that your fifth Hunter's Claw attack was a killing blow?

- do you have only 1 ranger with Hunter's Claw or there were more of them attacking the same enemy?

- or it happens everytime you attack a different subtype of beast?

- Don't recall, it's possible.

- Only one ranger with hunter's claw.

- So far I've only had this happen with beasts. I've built up huge accuracy stacks against wilder and some other creature type (haven't played with it too long). It could just be a coincidence that it was beasts and there was some other trigger (like killing blow like you suppose).

 

Mostly this is a visual bug to have that secondary stack, but the fact that I did lose the entire secondary stack when using Hunter's Claw on a different creature type was real weird. Normally it's safe for me to do so.

Link to comment
Share on other sites

  • 0

ok, this time i was able to reproduce this issue on vessels.

 

i think it's related to a save/reload loop.

 

i just entered the hanging sepulchers. had 0 stacks. used hunter's claw against first risen, built up 6 stacks.

 

wiped in the next encounter. reloaded, tried encounter again, this time when i use hunter's claw, i create a separate set of stacks instead of adding to my prior 6 stacks.

Link to comment
Share on other sites

  • 0

ok, definitely related to a save/reload cycle. wiped another time after doing the above-mentioned encounter successfully (hanging sepulcher difficulty tuning is a bit high) and now i'm creating a third stack for hunter's claw.

 

edit - the third stack doesn't even show up in character screen or on character portrait, but is shown in combat log:

 

curiously, the sum that the character sheet shows me is very wrong

 

post-58316-0-76810700-1553398658_thumb.png

 

versus what's actually in my combat log (note that with this third stack, i am now able to exceed a total of 20 stacks):

 

post-58316-0-80431700-1553398997_thumb.jpg

Edited by thelee
Link to comment
Share on other sites

  • 0

wow, with this save/reload cycle this is pretty exploitable. i'm not sure there's a cap anymore to how many stacks i can build up.

 

maxquest - do you think it'd be as simple as switching the stacking method as you hypothesize?

Link to comment
Share on other sites

  • 0

ok, i think the character screen me is showing the original hunter's claw stack and then max(allOtherHuntersClaw). I am still capped at 20 with my most recent one - once I hit 20 I can't stack anymore. However, this can easily be circumvented by just doing a save/relaod when I hit 19 and that should let me start producing a new stack.

 

in related news, i just came up with some hawt new tech for taking out the megabosses!

Edited by thelee
Link to comment
Share on other sites

  • 0

holy crap guys, hunter's claw is busted in all the most insane ways.

 

maia got arcane dampened. that erased some of the stacks from the visual indicators on my character sheet and hover-over tooltip, but all the stacks are still being used for combat log calculations. importantly, being arcane dampened removes the 20 cap I had just hit, so I'm creating a fourth stack of hunter's claw and all stacks are still being included for bonus accuracy and damage.

 

no kidding guys, hanging sepulchers has steadily been going from "very challenging at my level and party" to "increasingly trivial and maia is MVP"

 

edit - i misread the character sheet - it is showing me all the hunters's claw stacks, it is just grouping all the secondary ones into one entry. see below screenshot, which is my character sheet grouping everything together after using hte luminous adra bathhouse. 

 

post-58316-0-84672300-1553401556_thumb.png

Edited by thelee
Link to comment
Share on other sites

  • 0
Well, they are looking for local applicants only.

 

Btw, what really caught my attention is "Experience with Unreal Engine 4" listed as a plus. Not Unity and UE4, but just UE. Did they tire from Unity enough that it was cheaper to retrain the team? Is UE that much better? Or do they focus on Outer Space only?)

 

 

Btw @thelee:

- could it be that your fifth Hunter's Claw attack was a killing blow?

- do you have only 1 ranger with Hunter's Claw or there were more of them attacking the same enemy?

- or it happens everytime you attack a different subtype of beast?

- Don't recall, it's possible.

- Only one ranger with hunter's claw.

- So far I've only had this happen with beasts. I've built up huge accuracy stacks against wilder and some other creature type (haven't played with it too long). It could just be a coincidence that it was beasts and there was some other trigger (like killing blow like you suppose).

 

I was looking for something that could make the buff think that it is of different origin)

But hey, have easily managed to replicate your save-reload scenario. And confirming that it is possible to go beyond +20 accuracy, all buffs combined.

 

maxquest - do you think it'd be as simple as switching the stacking method as you hypothesize?

I was expecting that yes, it would fix it. But have made a quick mod... and nope.

There was no difference at all between StackIfAlreadyApplied and StackWithAllSimilarDataEffects.

 

I've gone further and tried RemoveExistingIfAlreadyApplied behaviour. Still (!) no difference. And I am sure that the changes from the mod were applied (because I've increased the +acc per hit exactly for that purpose).

 

And this is weird. RemoveExistingIfAlreadyApplied should clear all existing status effects with the same ID, before applying a new one.

Here are the docs. And here's the code:

 

 

 

StatusEffectManager.cs:

protected StatusEffectAddResult TryMergeWithExisting(StatusEffectInstance instance, IStatusEffectOrigin origin)
{
  StatusEffectGameData gameData = instance.GameData;
  switch (gameData.ApplicationBehavior)
  {
  case StatusEffectApplyBehavior.UseLongerDurationIfAlreadyApplied:
    if (this.HasSimilarEffect(gameData))
    {
      StatusEffectInstance longestDurationForSimilarEffect = this.GetLongestDurationForSimilarEffect(gameData);
      if (longestDurationForSimilarEffect != null)
      {
        float localDurationLeft = longestDurationForSimilarEffect.LocalDurationLeft;
        float num = (!instance.IsDurationOverridden) ? gameData.CalculateDuration(origin, this.Target, 1f, instance.Empowered, instance.ShapeAdjust, null) : instance.OverrideTotalDuration;
        longestDurationForSimilarEffect.AddBonusDuration(Mathf.Max(num, localDurationLeft) - longestDurationForSimilarEffect.DurationLeft);
        return new StatusEffectAddResult(StatusEffectAddResultType.Merged, instance, longestDurationForSimilarEffect);
      }
    }
    break;
  case StatusEffectApplyBehavior.RemoveExistingIfAlreadyApplied:
    if (this.HasSimilarEffect(gameData))
    {
      this.ClearSimilarEffects(gameData);
    }
    break;
  case StatusEffectApplyBehavior.StackIfAlreadyApplied:
  {
    StatusEffectInstance similarEffectFromOrigin = this.GetSimilarEffectFromOrigin(gameData, origin);
    if (similarEffectFromOrigin != null)
    {
      return this.TryMergeStack(instance, similarEffectFromOrigin, origin);
    }
    break;
  }
  case StatusEffectApplyBehavior.StackWithAllSimilarDataEffects:
  {
    StatusEffectInstance similarEffect = this.GetSimilarEffect(gameData);
    if (similarEffect != null)
    {
      return this.TryMergeStack(instance, similarEffect, origin);
    }
    break;
  }
  case StatusEffectApplyBehavior.AddDurationIfAlreadyApplied:
    if (this.HasSimilarEffect(gameData))
    {
      StatusEffectInstance longestDurationForSimilarEffect2 = this.GetLongestDurationForSimilarEffect(gameData);
      if (longestDurationForSimilarEffect2 != null)
      {
        float seconds = gameData.CalculateDuration(origin, this.Target, 1f, instance.Empowered, instance.ShapeAdjust, null);
        longestDurationForSimilarEffect2.AddBonusDuration(seconds);
        return new StatusEffectAddResult(StatusEffectAddResultType.Merged, instance, longestDurationForSimilarEffect2);
      }
    }
    break;
  }
  return new StatusEffectAddResult(StatusEffectAddResultType.Success, instance);
}

protected bool HasSimilarEffect(StatusEffectGameData effectData)
{
  int i = 0;
  int count = this.m_statusEffects.Count;
  while (i < count)
  {
    if (this.m_statusEffects[i].IsInstanceOf(effectData))
    {
      return true;
    }
    i++;
  }
  return false;
}

protected StatusEffectInstance GetSimilarEffect(StatusEffectGameData effectData)
{
  int i = 0;
  int count = this.m_statusEffects.Count;
  while (i < count)
  {
    StatusEffectInstance statusEffectInstance = this.m_statusEffects[i];
    if (statusEffectInstance.IsInstanceOf(effectData))
    {
      return statusEffectInstance;
    }
    i++;
  }
  return null;
}
GameDataUtility.cs: 

protected static bool IsInstanceOf(this IGameDataInstance instance, GameDataObject gameData)
{
  GameDataObject gameData2 = instance.GetGameData();
  return gameData2 != null && gameData != null && gameData2.ID == gameData.ID;
}

 

Edited by MaxQuest
  • Like 1
Link to comment
Share on other sites

  • 0

Just skimming that the only possible thing I could think of is that the save/reload cycle messes up how the game is tracking the ID, but I don't know what else to say other than that. This seems like an issue only the devs can fix.

 

In the mean-time, I suppose it's a matter of honor code to not abuse this past the +20 expected limit (though it is funny running around poko kohara dungeons with +50 acc/dmg to vessels)

 

SChin? Anyone @Obsidian acknowledge the issue?

Edited by thelee
  • Like 1
Link to comment
Share on other sites

  • 0

Just skimming that the only possible thing I could think of is that the save/reload cycle messes up how the game is tracking the ID, but I don't know what else to say other than that. This seems like an issue only the devs can fix.

 

In the mean-time, I suppose it's a matter of honor code to not abuse this past the +20 expected limit (though it is funny running around poko kohara dungeons with +50 acc/dmg to vessels)

 

SChin? Anyone @Obsidian acknowledge the issue?

My honor code is: Anything left in the game by developers is fair game, they leave things that cripple but also work as a benefit, why only get screwed by their carelessness? (unless, of course, it makes the game trivial or whatever)

Edited by DiabloStorm
Link to comment
Share on other sites

  • 0

Glad I dodged this bullet, ability looked nice on paper (as with a lot of things in this game) ultimately wasn't sure if the bonus applied only to melee attacks so I skipped it

 

FWIW it applies to everything, including the damage bonus (so includes spells cast against the target race). So this ability is extremely balance-breaking if exploited.

 

Theoretically you could upgrade it to the defense boosting version instead of the dmg I did and make any ranger untouchable against creature types--including megabosses--as well (while basically having 100% crit rate). It didn't even require that much effort to get up the 50ish stacks I'm sitting at right now, with 8 bond and dual-wielding I get 6-8 per encounter, and I'm on Berath's so if you split up encounters outside of Berath's challenge you can do a lot per any small gathering of creature types (just split one at a time so you can build up a bunch of stacks). Wouldn't work so well with Woedica's challenge alas (at least without a cipher to help you regen resources).

Edited by thelee
Link to comment
Share on other sites

  • 0

Yes, it applies to every offensive action.

 

You can also use blunderbusses or mortars + Driving Flight to stack more quickly. You only need one melee weapon to unlock the use.

So, not sure I understand... First, what do you mean by Mortars?

 

Also....so, the first melee hit determines the target race and then any hits by any means increase the stack? Do aoe spells work?

 

 

Mortar?

Tdb0cB0.png

Edited by DiabloStorm
Link to comment
Share on other sites

  • 0

Yes, it applies to every offensive action.

 

You can also use blunderbusses or mortars + Driving Flight to stack more quickly. You only need one melee weapon to unlock the use.

 

I tried this based on you saying something like this earlier, and I could not get this interaction to work. The ranged weapon is ignored for the full attack.

Link to comment
Share on other sites

  • 0

@thelee:

You have to start the full attack from range and not from melee distance. Then the melee weapon gets ignored. With a blunderbuss you still get 8 stacks per shot which is better than 2 with melee. Ooor they patched it. :)

 

@DiabloStorm:

Only hits with Hunter's Flaw add stacks, no spells.

 

But yes, once you have stacks they will add +ACC (and the upgrade +dmg) to everything including spells.

 

Of course Hand Mortars (Hand Mortar and Fire in the Hole). It may even be that Blinding Smoke counts as hit. Can't remember. Fire in the Hole has an additional jump that helps to generate more hits (=stacks) per shot.

 

Other AoE ranged weapons are two handed except Minor Blights and Rot Skulls and thus won't work since you need(ed?) a melee weapon to trick the game since Hunter's Flaw is melee only.

Edited by Boeroer

Deadfire Community Patch: Nexus Mods

Link to comment
Share on other sites

  • 0

With a blunderbuss you still get 8 stacks per shot which is better than 2 with melee. Ooor they patched it. :)

Can't check this atm.

 

But when I was using Hunter's Claw with dual-warhammers, I was getting: +1 accuracy per ability usage.

+1, +2, +3, etc.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...