#include "inc_levelset"

void main()
{
    object oTarget = GetPCSpeaker();
    int iFoundItemFlag = 0;
    int i = 0;
    //for testing
    //AssignCommand(oTarget, SpeakString("stripInventory fired"));

    //valid only for creatures
    //if ( GetObjectType(oTarget) != OBJECT_TYPE_CREATURE) return;

    // set the variables
    object oItem = GetFirstItemInInventory(oTarget);

    // unflag unequipped items in inventory
    while ( GetIsObjectValid(oItem) )
        {
        //SendMessageToPC(oTarget, "Evaluating " + GetName(oItem));

        if (GetIsDMFI(oItem) != TRUE)
        {
            if (GetItemCursedFlag(oItem) == TRUE)
                {

                SetItemCursedFlag(oItem, FALSE);
                SendMessageToPC(oTarget, GetName(oItem) + " changed to droppable.");
                iFoundItemFlag = 1;
                }
            //else SendMessageToPC(oTarget, GetName(oItem) + " was not changed.");
        }
        else SendMessageToPC(oTarget, GetName(oItem) + " is a DMFI item.");

        oItem = GetNextItemInInventory(oTarget);
        }

        //unflag equipped items in slots
        for ( i = 0; i < NUM_INVENTORY_SLOTS; i++ )
        {
        oItem = GetItemInSlot(i, oTarget);
        if (GetItemCursedFlag(oItem) == TRUE)
            {
            SetItemCursedFlag(oItem, FALSE);
            SendMessageToPC(oTarget, GetName(oItem) + " changed to droppable.");
            iFoundItemFlag = 1;
            }
         }

    if (iFoundItemFlag == 0) SendMessageToPC(oTarget, "No cursed / non-droppable items found.");
}