void main()
{
  object oItem = GetFirstItemInInventory(OBJECT_SELF);
  object oSelf = OBJECT_SELF;
  location lSelf = GetLocation(oSelf);
  object oDuplicate = GetNearestObjectByTag(GetTag(oSelf),oSelf,1);
  object oPC = GetLastClosedBy();
  DeleteLocalObject(oPC,"oLastOpened");
  if (GetDistanceBetween(oDuplicate,oSelf)<0.3)DestroyObject(oDuplicate);
  if (GetLocalInt(oSelf,"iAmInUse")==0)
   {
    CreateObject(OBJECT_TYPE_PLACEABLE, GetResRef(oSelf),lSelf,FALSE);
    DestroyObject(oSelf,0.5);
   }

  if (oItem == OBJECT_INVALID) return;
  while (oItem != OBJECT_INVALID)
   {
    if (GetStringLeft(GetResRef(oItem),7) == "pattern") DestroyObject(oItem);
    if (GetStringLeft(GetResRef(oItem),10) == "flagswitch") DestroyObject(oItem);
    if (GetStringLeft(GetResRef(oItem),8) == "essence_") DestroyObject(oItem);
    if (GetStringLeft(GetTag(oItem),2) == "P_") DestroyObject(oItem);
    if (GetStringLeft(GetResRef(oItem),6) == "recipe") DestroyObject(oItem);
    oItem = GetNextItemInInventory(OBJECT_SELF);
    if (oItem == OBJECT_INVALID) break;
   }
   //SendMessageToPC(GetFirstPC(),"DONE WITH CLOSE SCRIPT");

}