#include "X_O2_CONINCLUDE" void RespawnObject(string sTag, int iType, location lLoc) { // ResRef must be derivable from Tag string sResRef = GetStringLowerCase(GetStringLeft(sTag, 16)); CreateObject(iType, sResRef, lLoc); } void main() { object oLastOpener = GetLastOpener(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectNegativeLevel(5), oLastOpener, 600.0); if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0) { return; } SetLocalInt(OBJECT_SELF, "GT_MAX_LEVEL", 20); // * May 13 2002: Must create appropriate treasure for each // * faction member in the party. if (GetIsObjectValid(oLastOpener) == TRUE) { object oMember = GetFirstFactionMember(oLastOpener, TRUE); while (GetIsObjectValid(oMember) == TRUE) { object oContainer = OBJECT_SELF; GenerateBossTreasure(oMember, OBJECT_SELF); GenerateBossTreasure(oMember, OBJECT_SELF); GenerateBossTreasure(oMember, OBJECT_SELF); oMember = GetNextFactionMember(oLastOpener, TRUE); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUNBEAM), oContainer); } SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1); } ShoutDisturbed(); string sTag = GetTag(OBJECT_SELF); int iType = GetObjectType(OBJECT_SELF); // For creatures, save the location at spawn-time as a local location and // use it instead. Otherwise, the creature will respawn where it died. location lLoc = GetLocation(OBJECT_SELF); float fDelay = 1000.0; // 1000 second delay DestroyObject(OBJECT_SELF, fDelay); AssignCommand(GetArea(OBJECT_SELF), DelayCommand(fDelay, RespawnObject(sTag, iType, lLoc))); }