Added BESIE, MS Moneclature
Added BESIE, Markshire's Nomeclature & started initial setup for commoners in Baleas.
This commit is contained in:
62
_module/nss/spawn_corpse_dcy.nss
Normal file
62
_module/nss/spawn_corpse_dcy.nss
Normal file
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// NESS V8.0
|
||||
// Spawn: Corpse Decay Script
|
||||
//
|
||||
//
|
||||
// Do NOT Modify this File
|
||||
// See 'spawn__readme' for Instructions
|
||||
//
|
||||
|
||||
#include "spawn_functions"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oHostBody = OBJECT_SELF;
|
||||
object oLootCorpse = GetLocalObject(oHostBody, "Corpse");
|
||||
object oItem;
|
||||
float fCorpseDecay;
|
||||
|
||||
// Don't Decay while Someone is Looting
|
||||
if (GetIsOpen(oLootCorpse) == TRUE)
|
||||
{
|
||||
// try again
|
||||
fCorpseDecay = GetLocalFloat(oHostBody, "CorpseDecay");
|
||||
DelayCommand(fCorpseDecay, ExecuteScript("spawn_corpse_dcy", oHostBody));
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't Decay if not Empty and Timer not Expired
|
||||
oItem = GetFirstItemInInventory(oLootCorpse);
|
||||
int nDecayTimerExpired = GetLocalInt(oHostBody, "DecayTimerExpired");
|
||||
|
||||
// Don't think this should ever happen, since nDecayTimerExpired should
|
||||
// be set to try by the command immediately beforethe one invoking this
|
||||
// script!
|
||||
if (oItem != OBJECT_INVALID && nDecayTimerExpired == FALSE)
|
||||
{
|
||||
fCorpseDecay = GetLocalFloat(oHostBody, "CorpseDecay");
|
||||
DelayCommand(fCorpseDecay - 0.1, SetLocalInt(oHostBody, "DecayTimerExpired", TRUE));
|
||||
DelayCommand(fCorpseDecay, ExecuteScript("spawn_corpse_dcy", oHostBody));
|
||||
return;
|
||||
}
|
||||
|
||||
int bDeleteLootOnDecay = GetLocalInt(oHostBody, "CorpseDeleteLootOnDecay");
|
||||
|
||||
// To avoid potential memory leaks, we clean everything that might be left on the
|
||||
// original creatures body
|
||||
NESS_CleanCorpse(oHostBody);
|
||||
|
||||
// Destroy all loot if indicated (R7 subflag)
|
||||
if (bDeleteLootOnDecay)
|
||||
{
|
||||
NESS_CleanInventory(oLootCorpse);
|
||||
}
|
||||
|
||||
// Destroy the invis corpse and drop a loot bag (if any loot left)
|
||||
SetPlotFlag(oLootCorpse, FALSE);
|
||||
DestroyObject(oLootCorpse);
|
||||
|
||||
// Destroy the visible corpse
|
||||
SetObjectIsDestroyable(oHostBody, TRUE, FALSE, FALSE);
|
||||
DestroyObject(oHostBody, 0.2);
|
||||
}
|
Reference in New Issue
Block a user