//This script completely prevents lagg in many ways and prevents duping exploits
//PROTOTYPE
int GetTrueValue(object oItem)
{
 int i = 0;

 //Get the state of the item before altering
 int n = GetIdentified(oItem);

if(n==FALSE)
{ SetIdentified(oItem, TRUE); }

 i = GetGoldPieceValue(oItem);

 SetIdentified(oItem, n);

 return i;
}

void main()
{
    object oPC = (GetModuleItemLostBy());
    object oItem = (GetModuleItemLost());
    object oArea = GetArea(oItem);
    int nType = GetBaseItemType(oItem);

    //Give gold for plot items too
    SetPlotFlag(oItem, FALSE);

    int n = GetTrueValue(oItem);
    int b, c;
    int nGP;

    if(n>=100)
    {
     b = n/100;
     c = b * 50;  //The % used..
     nGP = c;
    }
    else
    { nGP = 500; }

    //Do not purchase ammunition!
    if(nType == BASE_ITEM_ARROW || nType == BASE_ITEM_BOLT ||
      nType == BASE_ITEM_BULLET || nType == BASE_ITEM_DART ||
      nType == BASE_ITEM_SHURIKEN || nType == BASE_ITEM_THROWINGAXE)
    { nGP = 500; }
    else
    {
     //cap the gold @ 400,000 Gold
     if(nGP >=400000)
     { nGP = 400000; }
    }

    if (!GetIsPC(oPC))
      return;//so that npc dropped items won't be destroyed.
        {
        if (oArea != GetArea(oPC))
         return;

        if (GetIsInCombat(oPC))
         return;

        if (oItem != OBJECT_INVALID)
        {

         GiveGoldToCreature(oPC, nGP);
         DestroyObject(oItem);
         FloatingTextStringOnCreature("The item you dropped was destroyed!!!", oPC);
         DelayCommand(1.2, FloatingTextStringOnCreature
         (IntToString(nGP) + " - Gold (50%) was given to you for the item!!", oPC));

        }

}
}