//Contributed by Mike Daneman aka. Mishenka
//Modified: 69MEH69 Added more items to pick up
#include "69_inc_henai"

void main()
{
    object oMaster = GetMaster();
    ClearAllActions();
    SetAssociateState(NW_ASC_IS_BUSY);
    int bFound = FALSE;
    string sName;
    location lCenter = GetLocation(OBJECT_SELF);
    object oThing = GetFirstObjectInShape(SHAPE_SPHERE,15.0,lCenter,TRUE,OBJECT_TYPE_PLACEABLE | OBJECT_TYPE_ITEM);
    while(GetIsObjectValid(oThing))
    {
        if(GetObjectType(oThing)==OBJECT_TYPE_ITEM & GetTag(oThing)!="NW_IT_GOLD001")
        {
            bFound = TRUE;
            /*switch(GetBaseItemType(oThing)) {
                case BASE_ITEM_POTIONS:
                case BASE_ITEM_HEALERSKIT:
                case BASE_ITEM_SPELLSCROLL:
                case BASE_ITEM_ARMOR:*/
                    sName = GetName(oThing);
                    TurnToFaceObject(oThing);
                    ActionPickUpItem(oThing);
                    ActionDoCommand(SendMessageToPC(oMaster,GetName(OBJECT_SELF)+" picked up "+sName+"."));
                    /*break;

                default:
                    break;
            }*/
        }
        else // oThing is a placeable
        {
            if(GetHasInventory(oThing)) // Containers (including corpses)
            {
                // Don't search locked containers
                // Only search trapped containers if you can't see the trap
                if(!GetLocked(oThing) && (!GetIsTrapped(oThing)
                    || (GetIsTrapped(oThing) && !GetTrapDetectedBy(oThing,OBJECT_SELF))))
                {
                    bFound = TRUE;
                    ActionMoveToObject(oThing);
                    ActionDoCommand(AssignCommand(oThing,PlayAnimation(ANIMATION_PLACEABLE_OPEN)));
                    //ActionInteractObject(oThing);
                    //ActionDoCommand(DoPlaceableObjectAction(oThing,PLACEABLE_ACTION_USE));
                    TurnToFaceObject(oThing);
                    ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,3.0);
                    object oItem = GetFirstItemInInventory(oThing);
                    while(GetIsObjectValid(oItem))
                    {
                       /* switch(GetBaseItemType(oItem)) {
                            case BASE_ITEM_POTIONS:
                            case BASE_ITEM_HEALERSKIT:
                            case BASE_ITEM_SPELLSCROLL:
                            case BASE_ITEM_ARMOR:*/
                                ActionDoCommand(SendMessageToPC(oMaster,GetName(OBJECT_SELF)+" picked up "+GetName(oItem)+" from "+GetName(oThing)+"."));
                                ActionTakeItem(oItem,oThing);
                             /*   break;
                            default:
                                break;
                        }*/
                        oItem = GetNextItemInInventory(oThing);
                    }
                    ActionDoCommand(AssignCommand(oThing,PlayAnimation(ANIMATION_PLACEABLE_CLOSE)));
                }
            }
        } // else
        oThing = GetNextObjectInShape(SHAPE_SPHERE,15.0,lCenter,TRUE,OBJECT_TYPE_PLACEABLE | OBJECT_TYPE_ITEM);
    } // while(GetIsObjectValid(oThing))
    ActionDoCommand(SetAssociateState(NW_ASC_IS_BUSY,FALSE));
    if(!bFound)
        SpeakString("I don't see where I can find any around here.");
}