#include "X_O2_CONINCLUDE"
#include "GSLOOT_LIB"

//  Modified by AW Olorin 1-12-2004
//  Anti-GS Looting

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();
    if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0) {
        string sReport;
        sReport = ">>> ID: " + GetPCPlayerName( oLastOpener )
                    + "; Name: "+ GetName( oLastOpener )
                    + "; CD Key:" + GetPCPublicCDKey( oLastOpener )
                    + "; IP:" + GetPCIPAddress( oLastOpener );
         SendMessageToAllDMs(sReport + "  Attempted Spam Looting!! " );

       return; }

   SetLocalInt(OBJECT_SELF, "GT_MAX_LEVEL", 9);
   // 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);

   if (GetIsObjectValid(oLastOpener) == TRUE)
      {
         if(!GS_Check(oLastOpener,1))
            {
               // * May 13 2002: Must create appropriate treasure for each
               // * faction member in the party.
               object oMember = GetFirstFactionMember(oLastOpener, TRUE);
               while (GetIsObjectValid(oMember) == TRUE )
                  {
                     if (GetArea(OBJECT_SELF) == GetArea(oMember))
                        GenerateBossTreasure(oMember, OBJECT_SELF);
                     oMember = GetNextFactionMember(oLastOpener, TRUE);
                  }
            }
         else
            {
               RogueSpectreSpawn(oLastOpener);
               DropNote(lLoc);
            }
         ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUNBEAM), OBJECT_SELF);
      }
   SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1);
   ShoutDisturbed();

string sTag = GetTag(OBJECT_SELF);
int iType = GetObjectType(OBJECT_SELF);
float fDelay = 1000.0;  // 1000 second delay

DestroyObject(OBJECT_SELF, 0.0);
AssignCommand(GetArea(OBJECT_SELF), DelayCommand(fDelay, RespawnObject(sTag, iType, lLoc)));
}