Describe the bug:
When killing an npc, all scripts are removed from it, properties can’t be read and npc[scriptName] returns nil.
How do you cause this bug?
List the steps
Kill an npc and try to reference a script on that npc.
It will return nil. Also entity:FindScriptProperty(propertyName) will return nil.
Thank you for raising this issue up over here on the Forums!
We would need additional information if possible;
What scripts are you using to kill the NPC?
How are you trying to access it?
What game is this occurring on ? (so we can make a copy of it to see)
– Best to save the game/rename it; so that you may continue to work on your game on another version while we investigate this.
Was this seen on EGS or Stadia?
I have entered a ticket into our system so that our internal team can investigate this issue further. I await for the additional information so that I may enter it as soon as possible.
What scripts are you using to kill the NPC?
This is the script:
function Anim:Init()
self:Schedule(function()
Wait(5)
self:GetEntity():ApplyDamage(9999,Vector.Zero,self:GetEntity())
end)
end
How are you trying to access it?
The dieing NPC has a healthScript with a HealthScript:Kill(...)-function on it.
if me:IsA(CharacterBase) then
me:SetAlive(false)
end
print(self:GetEntity().healthScript.properties.maxHp) --[Error] healthScript:118: attempt to index field 'healthScript' (a nil value)
print(self:GetEntity().healthScript.properties.maxHp) --Works perfectly fine: prints 1000
if me:IsA(CharacterBase) then
me:SetAlive(false)
end
What game is this occurring on ?
I named the game “I SEE DEAD NPCS”
uh oh that’s a weird One, nobody likes dead NPC’s, i was starting in a corn field, mining some basic land (before Stasis Chamber zone, That new player area)
and i’m glad i know a little more about dead NPC’s to be careful with them
I found out that there are a few other bugs regarding dead npcs.
Printing the entity reference of an npc will show something like userdata: 0x(long number) and after killing that npcs, it should still remain the same. But printing print(self:GetEntity()) before and after the npc dies will yield two different userdata values/prints.
Also dead npcs will leave a collision box like it is still alive. So killing an npc and walking towards where it died will block the player/other npcs, like there would still be a fully alive and standing npc in that spot.
Another one is related to the overhead widget. World widgets on dead npcs will remain, even after using npc:Destroy() which means that each npc with a world widget will lead to an additional permanent world widget, that can’t be deleted anymore.