Jump to content

Getting rid of dead NPCs


llamaRCA

Recommended Posts

Okay,

 

so here's what's going on. I'm working merrily away on my companion mod and I have some accessory NPCs, they run around and do stuff and, because I want them to be fun, they can be killed. And this is where I'm having my problem. Once they are dead their corpses will not go away. I've not made extra NPCs before and haven't tried to get rid of them before and, so, I've only just discovered that apparently, I suck at this particular part of modding. I've tried a few ways, looked in the wiki, read some threads, tried again, all to no avail, their dead little corpses stay and stay and stay and stay....you get the idea.

 

So, what I'm hoping one of you guys will tell me is what is the best way to get rid of these things. As you can imagine, this problem is making me a little, :confused: and :wallbash:

 

Thanks.

 

:) llama

Link to comment
Share on other sites

i'm not sure that this is possible

 

as far as i know, the only corpses that are removed, are those of spawned NPCs (like normal enemies)

but NPCs that are placed directly into the world stay, even after they are killed (this is as far as i know)

 

however, this appears to only happen in interior areas (i'm basing this on Fallout 3, where i have some dead NPCs in Megaton, but the ones outside of it have vanished, but maybe they are encounter NPCs, so they don't count)

 

it's probably related to the area not respawning, that is causing the issue (at least i think so)

but as i said, don't know really why this is happening, and so how to get around this

Link to comment
Share on other sites

Make sure they're not marked as 'quest item'.

 

 

I did mark them as a quest item to get their lazy butts moving around the map when the PC wasn't in the same cell, but I turned it off again in an OnDeath block. Maybe there's a better way to make that work?

Link to comment
Share on other sites

Why not just "disable" them by script sometime after their death? All you need is to create a Reference ID for it. To do so, right click it in their placed copy at the Render Window, go to Properties and you'll find the field where to enter the RefID.

 

That ability to use the RefID for any specifically placed object at the Render Window can have many useful uses beyond the above.

Edited by nosisab
Link to comment
Share on other sites

Why not just "disable" them by script sometime after their death? All you need is to create a Reference ID for it. To do so, right click it in their placed copy at the Render Window, go to Properties and you'll find the field where to enter the RefID.

 

That ability to use the RefID for any specifically placed object at the Render Window can have many useful uses beyond the above.

 

 

One of the things I tried, which I read somewhere in a thread, was to disable them in an OnDeath block. I tried that but it didn't work. I can't remember if I've tried it in the quest script for the quest, but I'm pretty sure I tried it there first. I unmarked them from being a quest item, disabled them and marked them for delete. So, it's not working and I'm assuming it's because I'm doing it wrong and the OnDeath block is the wrong way to go about it or I've flubbed it somehow and I am pretty sure I tried it in the quest script itself, but cannot remember exactly how I went about that. But anyway, am now asking for someone to come along and tell me how to do it.

 

Also, I'm assuming they should be gone in the amount of time it takes the game to respawn things, as they are still there while stuff has respawned around them. Is that a bad assumption on my part?

 

:blink: Thanks; I just cannot get this working, and although not a huge thing it is a loose end.

Link to comment
Share on other sites

This Object script for the NPC worked for me with spawned NPCs using PlaceAtMe, for placed NPCs, and for Placed NPCs marked as quest items to disable after 10 seconds:

 

 

scn ExpendableNPCScript

short iHelloImDead
float fTimer

BEGIN GameMode


if (iHelloImDead == 0)
 if (GetDead)
  set iHelloImDead to 1
  set fTimer to 10
 endif
elseif (iHelloImDead == 1)
 if (fTimer <= 0)
  Disable
  MarkForDelete
  set iHelloImDead to 2
 else
  set fTimer to fTimer - GetSecondsPassed
 endif
endif


END


 

 

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...