Mutants can grab veteran even in stealth

Issue Type (Required):

Player Mechanics

Issue Description (Required):

I have experienced a few times recently that mutants are able to grab me, when playing veteran, even when im stealthed (“iniflitrate” talent.)

Steps to Reproduce (Required):

1- Hear a mutant
2-Engage infiltrate.
3- if he was going for you, he will grab you anyway.

[PC] Do You Use Mods? (Optional):

Yes, but I haven’t tried disabling them

Reproduction Rate (Required):

Often (<75%)

Platform (Required):

PC - Steam

Pretty sure this is not a bug. Muties will grab anyone in their path even if they have another target.

You can even use this to sometimes enable a team mate to ress a downed player, or finish a hacking event. If the mutie is aimed for the resser/hacker, just run into in the path of the mutie so it grabs you instead, allowing your mate to finish the ress/hack.

Same goes for trappers, possibly even dogs.

can confirm dogs, few times got jumped by them while in stealth

With dogs you can even do something funnier by dodging the dog at the last moment and let it fly into someone else.

Yup. Have used “putting myself in their path” to save people doing the hacking puzzles.

So you are saying getting grabbed by Mutant while in stealth is the correct behavior?

The mutant isn’t supposed to lock on the player, but if it lock on a player behind the player (or path through the invisible player), it can pick up the stealthed player.

It’s stealth, not intangibility

Sure, but can you grab something that you cant see? Regardless thanks for the explanation.

Close your eyes, turn to the side, and grab the nearest cup on your desk.

If the cup was moving as i am in DT, i might have a problem:)

True! But now imagine that cup incidentally runs right into your palm! And that’s basically what happens with the mutants.

I’ve also had mutants grab me when I’m physically behind them, which makes no sense. It feels like there’s some status quo bias in this thread to justify the janky behavior of mutant grabs. If we were designing a new enemy from scratch, would we want it to behave in these strange ways? That should be the mentality for assessing how it should work, rather than justifying how it currently works.

veteran stealth is still pretty garbanzo beans to me, kudos to people who enjoy it but I’d rather just use executioner stance even if I were to melee (I’m too zealot brained so stun immunes are goated to me). worst ult in the game, the psyker wall is not far behind.

I alwys tought that way, but i actually think its pretty good nowadays after retrying it. The additional perks, specially the one which makes you -90 threat for 10 seconds after cloak really make it work. I can routinely run in cloak to a group of gunners thats firing at my team, wipe them out with my power sword, and go back, safe becuse of that perk. I also think it synergizes perfectly with power sword, which might be one of the most powerful melee wepaons in Darktide, whose only weakness is it leaves you pretty vulnerable … which the 2 stock cloak perfectly mitigates.

Oh yeah thats another thing, i think it was more reasonable in distant past, nowadays the mutant can be seen to passing you by the side, tottaly not looking at you, and he will still grab you. Or a dog thats close doesnt even have to jump , he just is suddnely on top of you.

Honestly I’m fine with them being able to grab (but not track) invis characters directly on their path as long as they add a new animation where they stop the charge to look at their hand in confusion.

Must be a freaky sensation to accidentally grab something you can’t see.

Correct.

This is gonna be long, but I feel it’s worth documenting all of this stuff to clear some doubts, and with the hope that Fatshark may address some of the issues.

Mainly for stuff like this.

I’ll start by addressing what was said in the first quote.

What Mutants do is that, they run a quick physics overlap search for players only, then iterate through the results (players found within the radius) of said search like this:

  1. Has this player dodged this charge before? If so, ignore.
  2. Is this player dodging? If so, check if they’re within the dodge radius. If so, keep track of this player as having dodged this charge (relevant for point 1).
    • Note: I put “within” in bold text because it’s unintended due to an oversight (used distance < dodge_radius instead of distance > dodge_radius) and they’re supposed to check if you’re outside of that radius. Here’s a report of it going into detail. But basically, yeah, Mutants are way more forgiving than intended as you can just dodge into them on the server, and they’ll go through you or physically push you without grabbing you.
  3. Is this player incapacitated or isn’t our enemy? If so for either, ignore.
    • (the “is this player not our side” bit is kinda funny to be there at all, given the player filter for the physics check, but it makes me wonder if at some point, they wanted Mutants to accidentally grab enemies, or NPCs allied with the player).
  4. Proceed with the final steps for the grab.
    1. If the player is a remote player (always the case unless you play with an unofficial solo mod, or you’re in the Meat Grinder or a tutorial or so)? Set this player as the current lag compensation target and set a timer based on latency of said player. Then proceed with point 4.2.
      • If not a remote player, the grab happens right then and there with no further delay.
    2. Wait out the timer without checking for any collisions with players, effectively ignoring all players (even the main target they were running towards).
    3. Once the timer expires, check the following only for the lag compensation target:
      • If dodging: check if the player is outside the dodge radius. If not, grab them. Note that dodging here doesn’t make the Mutant track you as “dodged this charge” to be ignored by step 1, meaning that you could immediately go into step 4.1 again.
      • If not dodging: check if the player is outside of a 2 unit radius (for reference, the physics overlap radius is 1, and the dodge radius is 0.5). If not, grab them.
  5. If a Mutant slows down almost to a halt during a charge due to colliding with geometry, they’re able to grab their main target if there’s any height difference with them, and the player is close enough (radius is 3 units). This is mainly to counter a player standing on some crates or barrel or so, where the Mutant can’t physically collide with them.

Note that Mutants winding up their hand in preparation to grab their main target doesn’t mean anything for the grab mechanics (as in, they don’t get more reach or anything like that), instead what that signals is that they entered a different stage of the charge, which does affect their movement and if they collide with a wall and get stunned (or simply stop after missing).

Correct, though there are some similarities and differences:

  • Hounds:
    • They push players that aren’t the main target. They do this before checking for player collisions, and with a bigger radius than the “collision” radius, making it not that common to get pounced when you’re not the main target. You have to be physically blocked or immediately undo the push force in some way.
    • Like Mutants, they also have a standard radius (0.8) and dodge radius (0.65), and have very similar lag compensation mechanics. One key difference is that the Hound will completely freeze when triggering the lag compensation timer (this is more noticeable when you have lower ping and see a player with higher ping collide with a pouncing Hound).
      • Unlike with Mutants, lag compensation timer is capped to 0.2 seconds. If the player is considered blocking when setting the lag compensation timer, add 0.1 seconds to it regardless of ping, allowing the timer to go up to 0.3 seconds.
    • Besides the usual physics overlap search and dodge radius check (which are done correctly), they also have to check if the player is within a certain angle (except on the frame they start the leap, while still grounded, where angle is ignored).
      • An angle check is also done when their lag compensation timer is up and unfreeze. Effectively checking if you’re right in front of them. This is required along with you being within a radius of 3 units (more than 3 times the size of their non-dodge radius) for them to successfully grab you.
      • There’s no dodge radius check for when the lag compensation timer is up. This along with the big radius mentioned above is why they seemingly magnetize to you after they freeze, especially when you have higher ping. Thing is, you’re expected to use that entire extra time window to do a push action (aiming doesn’t matter if you’re the main target) and push them or even kill them while they’re frozen.
    • Arbites lunging with Break the Line gets an unmentioned unique buff that makes Hound pounces ignore them entirely, and count as dodging against it.
    • They can’t collide with players who are climbing ladders (the lag compensation checks don’t check for this though, but this is intentional).
  • Trappers
    • No lag compensation, at all, in any way. This is why they’re the most unforgiving one not just in terms of the punishment, but on trying to dodge the net in the first place.
      • This is weird given that, unlike Hounds, which are a more complex entity with physics, AI behavior and logics, a collision hitbox, etc, still get frozen in midair, in favor of the player, despite that it can make it look weird for other players. While nets don’t, despite essentially being a completely separate simple entity that is moved by the “shoot net” action and is technically purely visual.
        • This is also why it despawns the moment you interrupt the Trapper. You’re interrupting the action which is what handles everything about it. The net isn’t a separate projectile, it just gets moved by the action in a straight line. But I guess it also makes some sense for it to get deleted when interrupted, since they do pull you in with it, so it has to be attached to their gun.
    • The net also checks using physics overlap with a certain radius (0.5), but it only ever checks the closest player to it while ignoring the rest. It also has a dodge radius (0.35).
      • This means that if the closest player to it is dodging, and outside the dodge radius, other players technically within the net’s radius are ignored. Don’t ever try to play around this though, it’s too precise, but it might explain some weird edge cases you might’ve witnessed.
      • Even after the game has considered you as having dodged the net, and even triggered dodge talents/perks/etc, it’s still able to catch you.
        • This is extra bad when you think about it because it can mean that if you dodge it properly by being outside the dodge radius, but still end within the physics overlap radius by the time you’re not considered dodging, you will be caught.
    • Arbites lunging with Break the Line gets an unmentioned hidden unique buff that makes the net ignore them entirely, and count as dodging against it.
    • The net uses a simple raycast from the center of it to check against geometry to stop, but as stated, used a physics overlap search using a radius against players. This is why they can hit you around corners or so. So long as the net doesn’t hit the wall from its center, it won’t stop, but a player around that corner can easily be within its collision radius.
      • Also, the reason they can catch you within a Psyker dome, is that they check for this at the end of their updating cycle.

If you want more details on these last two, I’m pretty sure I’ve explained these in the past in more detail, so it should be there in some of my comments if you go through my activity.

Conclusions:

  • Mutants catching invisible players is fully intended, as they can catch anyone they collide with.
  • Mutants are unintentionally very forgiving. And would still be reasonably forgiving if the inverted dodge radius check on initial server collision was fixed (the lag compensation one is working correctly).
  • Hounds are also mostly fine, they have a few thing that could be potentially tweaked for further improvements (like adding a dodge radius check for their lag compensation check, instead of just the massively increased radius check they have).
  • Trappers are literally satan and are extremely unforgiving against players with higher ping, compared to the other disabler units. A lot of it, either deliberately, or from the neglect to allocate time to improve them.
    • Most likely the latter, given that they also very deliberately allow the net to go around corners (partially clipping through the wall) and catching people behind the wall, and it hasn’t been improved yet (not using a raycast for this could be a start). As well as that they still haven’t fixed checking for Psyker domes at the end of their updates, when that’d just require to cut and paste a few lines.
    • I also don’t understand the neglect to give them any sort of lag compensation when Hounds have it and it’s really good. And it’d be way easier to account for presentation given that the net is visually completed detached from the Trapper, unlike a Hound pouncing and having to physically move.
  • Honorable mention I haven’t talked about here, the Chaos Spawn grab attack also lacks lag compensation entirely because of.. some reason. Even if it’s not really that punishing, it has very little reason to not have lag compensation.

I had my suspicions that this was how it worked. Thanks for the detailed write-up!

If it’s intentional that mutants can grab stealthed players, I’m not sure I agree with the design but I can accept it as a weird edge case.

In addition to what you suggested, it sounds like some of the other issues should be pretty easily fixable by adding a couple extra checks:

  1. Trapper nets should have a sanity-check collision raycast after finding a trappable target in net radius. This collision raycast should probably be between the trapper and the player, to check for obstacles in the net’s path to reach the player. This would fix the “trapped around a corner” issue.
  2. After a charging mutant detects a grabbable target in radius, check the target’s position relative to the mutant’s position and facing direction. Ignore targets that are behind the mutant. Maybe they could leverage the existing backstab code to check for this.

I’ve been actively targeted by a mutie once or twice in stealth and it wasn’t because I was in its path.