Scriptname _00E_DeadBodyCleanupScript extends Actor ;This script cleans up dead actors, enables a container and moves all their inventory, after it Loads/unloads after a certain period of time. ;See WIDeadBodyCleanupScript for original code. float Property DaysBeforeCleanUp = 0.5 Auto {Default = 0.5: What's the minimum amount of time (in days) that the body should stick around before being cleaned up. (Clean up happens during while loop.)} ObjectReference Property _00E_DeathContainer Auto {Container to move all the items the actor has in his inventory when cleaned up.} ObjectReference Property _00E_NPCDumpMarker Auto {Marker where the dead actor will be stored when cleaned up.} actor SelfRef ;used to keep me persistent so I get UnLoad events while I exist state Dead ;do nothing Event OnDeath(Actor akKiller) EndEvent EndState Event OnDeath(Actor akKiller) GoToState("Dead") if _00E_DeathContainer bool cleanedUp = false while cleanedUp == false ; debug.trace("_00E_DeadBodyCleanupScript" + self + "OnDeath() In While Loop, will try cleaning up after waiting " + DaysBeforeCleanUp) Utility.waitGameTime(DaysBeforeCleanUp * 24) cleanedUp = checkForCleanup() endWhile else ; debug.trace("_00E_DeadBodyCleanupScript" + self + " WARNING: NO _00E_DeathContainer!", 2) endif EndEvent bool function checkForCleanup() if Is3DLoaded() == False ; debug.trace("_00E_DeadBodyCleanupScript" + self + "Cleaning up body.") cleanUpBody() return true Else ; debug.trace("_00E_DeadBodyCleanupScript" + self + "Not cleaning up body, because my 3D is loaded.") EndIf return false endfunction function cleanUpBody() ; debug.trace("_00E_DeadBodyCleanupScript" + self + "cleanUpBody() moving to WIDeadBodyCleanupCellMarker in WIDeadBodyCleanupCell and Calling RemoveAllItems() to _00E_DeathContainer, and enabling it:" + _00E_DeathContainer) ;Disable() ;*** It has been decided it's safer to move them to a holding cell, for quests that might be filling allowing for dead actors but not allowing checking for disabled actors MoveTo(_00E_NPCDumpMarker) _00E_DeathContainer.SetActorOwner(GetActorBase()) _00E_DeathContainer.Enable() RemoveAllItems(_00E_DeathContainer) EndFunction