Newly created Humanoid's have Enum.HumanoidStateType.Dead enabled by default

Explanation:

I noticed recently that there was a bug for god mode. I will not disclose how that works due to it being able to be used via both server and client. If this does get patched it will also patch the god mode bug/exploit. When I was messing around with that I noticed that no matter what, when you respawn you are automatically spawned with the Humanoid state Enum.HumanoidStateType.Dead otherwise known as (15) set to true even though you aren’t dead.

EDIT: I discovered that even new humanoids are dead when created. For example run the code below;

local Hum = Instance.new(‘Humanoid’); print(Hum:GetStateEnabled(Enum.HumanoidStateType.Dead))

Not sure why this is the case but it is quite interesting.

How to replicate such bug:

All you have to do is spawn in game and run this code. It has this state enabled for both R6 and R15.

print(game:GetService(‘Players’)[‘YOURUSERNAMEHERE’].Character.Humanoid:GetStateEnabled(Enum.HumanoidStateType.Dead))

You will see that it prints that you are in-fact dead. It’s not an error with printing or GetStateEnabled. You genuinely are set to the state dead when spawning in. When you die it remains set to true.

Expected behavior

I expect roblox to fix this, if they do that will also patch the god mode exploit I found.

How will this be fixed? Easy, make it so the player doesn’t spawn with Enum.HumanoidStateType.Dead set to true. I assume someone was messing with Humanoid on the internal engine and accidentally set the dead state for Humanoid to true. Since it didn’t really affect behavior of the character very obviously this went ignored for quite some time.

A private message is associated with this bug report

If anyone would like video feel free to LMK. I am willing to provide a video but anyone can just run the print script and see that this is true. I’ve tested it in multiple games.

This doesn’t mean that the Humanoid is “dead”, but rather that the Humanoid is able to change to the Dead state. Unless I’m missing something, you seem to be confusing Humanoid:GetStateEnabled() with Humanoid:GetState().

GetState() returns the Humanoid’s current state, and GetStateEnabled(state) returns whether that specific state can be changed to or not. You can “disable” a specific state with SetStateEnabled(state, false) to prevent it from being changed to.

2 Likes

Recommend proving the abuse and the broken behavior before making a bug report. Don’t think anything is broken here.

Further, I think the client can keep themselves alive if the damage applied to them is also only done on the client. This is just the way the engine works with respect to replication.

1 Like