final_realms_fluffos_v1/
final_realms_fluffos_v1/bin/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/ChangeLog.old/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/Win32/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/compat/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/compat/simuls/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/include/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/clone/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/command/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/data/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/etc/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/include/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/inherit/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/inherit/master/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/log/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/tests/compiler/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/tests/efuns/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/tests/operators/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/u/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/tmp/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/windows/
final_realms_fluffos_v1/lib/baseobs/guilds/
final_realms_fluffos_v1/lib/baseobs/misc/
final_realms_fluffos_v1/lib/baseobs/races/shadows/
final_realms_fluffos_v1/lib/cmds/god/
final_realms_fluffos_v1/lib/cmds/handlers/
final_realms_fluffos_v1/lib/cmds/handlers/cmds/
final_realms_fluffos_v1/lib/d/heaven/
final_realms_fluffos_v1/lib/d/heaven/heaven/ave/
final_realms_fluffos_v1/lib/d/mudlib/
final_realms_fluffos_v1/lib/d/newbie/
final_realms_fluffos_v1/lib/d/newbie/docs/
final_realms_fluffos_v1/lib/d/newbie/drow/armour/
final_realms_fluffos_v1/lib/d/newbie/drow/items/
final_realms_fluffos_v1/lib/d/newbie/drow/mobs/
final_realms_fluffos_v1/lib/d/newbie/drow/oldmobs/
final_realms_fluffos_v1/lib/d/newbie/drow/weapons/
final_realms_fluffos_v1/lib/d/newbie/duergar/weapons/
final_realms_fluffos_v1/lib/d/newbie/dwarf/weapons/
final_realms_fluffos_v1/lib/d/newbie/elf/cafe/
final_realms_fluffos_v1/lib/d/newbie/elf/chars/equip/
final_realms_fluffos_v1/lib/d/newbie/elf/items/armours/
final_realms_fluffos_v1/lib/d/newbie/elf/items/obj/
final_realms_fluffos_v1/lib/d/newbie/elf/items/weapons/
final_realms_fluffos_v1/lib/d/newbie/elf/quick_fix/
final_realms_fluffos_v1/lib/d/newbie/gnome/armour/
final_realms_fluffos_v1/lib/d/newbie/gnome/buildings/
final_realms_fluffos_v1/lib/d/newbie/gnome/items/
final_realms_fluffos_v1/lib/d/newbie/gnome/npcs/clones/
final_realms_fluffos_v1/lib/d/newbie/gnome/rooms/northrooms/
final_realms_fluffos_v1/lib/d/newbie/gnome/weapons/
final_realms_fluffos_v1/lib/d/newbie/goblin/armour/
final_realms_fluffos_v1/lib/d/newbie/goblin/items/
final_realms_fluffos_v1/lib/d/newbie/grads/log/
final_realms_fluffos_v1/lib/d/newbie/grads/npcs/
final_realms_fluffos_v1/lib/d/newbie/grads/rooms/
final_realms_fluffos_v1/lib/d/newbie/grads/rooms/cave1/
final_realms_fluffos_v1/lib/d/newbie/grads/temp/
final_realms_fluffos_v1/lib/d/newbie/guests/weapons/
final_realms_fluffos_v1/lib/d/newbie/half-elf/items/
final_realms_fluffos_v1/lib/d/newbie/half-elf/newroomss/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/castle/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/drows/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/savannah/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/secret/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/town/
final_realms_fluffos_v1/lib/d/newbie/halfling/
final_realms_fluffos_v1/lib/d/newbie/halfling/misc/
final_realms_fluffos_v1/lib/d/newbie/halfling/rooms/cave/
final_realms_fluffos_v1/lib/d/newbie/human/
final_realms_fluffos_v1/lib/d/newbie/human/armour/
final_realms_fluffos_v1/lib/d/newbie/human/monsters/
final_realms_fluffos_v1/lib/d/newbie/human/obj/
final_realms_fluffos_v1/lib/d/newbie/human/weapons/
final_realms_fluffos_v1/lib/d/newbie/lizard/armour/
final_realms_fluffos_v1/lib/d/newbie/lizard/items/
final_realms_fluffos_v1/lib/d/newbie/lizard/underwater/
final_realms_fluffos_v1/lib/d/newbie/lizard/weapons/
final_realms_fluffos_v1/lib/d/newbie/logs/
final_realms_fluffos_v1/lib/d/newbie/new_halfelf/
final_realms_fluffos_v1/lib/d/newbie/new_halfelf/npcs/
final_realms_fluffos_v1/lib/d/newbie/newdrow/npcs/
final_realms_fluffos_v1/lib/d/newbie/newdrow/rooms/
final_realms_fluffos_v1/lib/d/newbie/newelf/
final_realms_fluffos_v1/lib/d/newbie/newelf/chars/
final_realms_fluffos_v1/lib/d/newbie/newelf/npcs/
final_realms_fluffos_v1/lib/d/newbie/newelf/npcs/recopied/
final_realms_fluffos_v1/lib/d/newbie/newelf/obj/
final_realms_fluffos_v1/lib/d/newbie/newelf/quest_docs./
final_realms_fluffos_v1/lib/d/newbie/newken/
final_realms_fluffos_v1/lib/d/newbie/newken/chars/
final_realms_fluffos_v1/lib/d/newbie/newken/misc/
final_realms_fluffos_v1/lib/d/newbie/newken/npcs/
final_realms_fluffos_v1/lib/d/newbie/newken/obj/
final_realms_fluffos_v1/lib/d/newbie/newliz/
final_realms_fluffos_v1/lib/d/newbie/newliz/cave/
final_realms_fluffos_v1/lib/d/newbie/newliz/npcs/
final_realms_fluffos_v1/lib/d/newbie/orc/items/misc/
final_realms_fluffos_v1/lib/d/newbie/orc/items/weapons/
final_realms_fluffos_v1/lib/d/newbie/orc/tower/
final_realms_fluffos_v1/lib/d/vehicle/
final_realms_fluffos_v1/lib/doc/
final_realms_fluffos_v1/lib/doc/driver/
final_realms_fluffos_v1/lib/doc/driver/concepts/
final_realms_fluffos_v1/lib/doc/driver/driver/
final_realms_fluffos_v1/lib/doc/driver/efuns/arrays/
final_realms_fluffos_v1/lib/doc/driver/efuns/bitstrings/
final_realms_fluffos_v1/lib/doc/driver/efuns/communication/
final_realms_fluffos_v1/lib/doc/driver/efuns/core/
final_realms_fluffos_v1/lib/doc/driver/efuns/debugging/
final_realms_fluffos_v1/lib/doc/driver/efuns/filesystem/
final_realms_fluffos_v1/lib/doc/driver/efuns/interactive/
final_realms_fluffos_v1/lib/doc/driver/efuns/mappings/
final_realms_fluffos_v1/lib/doc/driver/efuns/objects/
final_realms_fluffos_v1/lib/doc/driver/efuns/security/
final_realms_fluffos_v1/lib/doc/driver/efuns/strings/
final_realms_fluffos_v1/lib/doc/driver/efuns/system/
final_realms_fluffos_v1/lib/doc/driver/efuns/types/
final_realms_fluffos_v1/lib/doc/driver/lpc/constructs/
final_realms_fluffos_v1/lib/doc/driver/lpc/types/
final_realms_fluffos_v1/lib/doc/driver/platforms/
final_realms_fluffos_v1/lib/doc/lpc/
final_realms_fluffos_v1/lib/doc/mail/
final_realms_fluffos_v1/lib/doc/man/
final_realms_fluffos_v1/lib/doc/man/html/
final_realms_fluffos_v1/lib/doc/man/html/applies/
final_realms_fluffos_v1/lib/doc/man/html/applies/parsing/
final_realms_fluffos_v1/lib/doc/man/html/driver/
final_realms_fluffos_v1/lib/doc/man/html/efuns/
final_realms_fluffos_v1/lib/doc/man/html/efuns/arrays/
final_realms_fluffos_v1/lib/doc/man/html/efuns/buffers/
final_realms_fluffos_v1/lib/doc/man/html/efuns/compile/
final_realms_fluffos_v1/lib/doc/man/html/efuns/floats/
final_realms_fluffos_v1/lib/doc/man/html/efuns/functions/
final_realms_fluffos_v1/lib/doc/man/html/efuns/general/
final_realms_fluffos_v1/lib/doc/man/html/efuns/numbers/
final_realms_fluffos_v1/lib/doc/man/html/efuns/parsing/
final_realms_fluffos_v1/lib/doc/man/local/
final_realms_fluffos_v1/lib/doc/man/local/applies/
final_realms_fluffos_v1/lib/doc/man/local/applies/interactive/
final_realms_fluffos_v1/lib/doc/man/local/applies/master/
final_realms_fluffos_v1/lib/doc/man/local/concepts/
final_realms_fluffos_v1/lib/doc/man/local/defines/
final_realms_fluffos_v1/lib/doc/man/local/driver/
final_realms_fluffos_v1/lib/doc/man/local/efuns/
final_realms_fluffos_v1/lib/doc/man/local/efuns/arrays/
final_realms_fluffos_v1/lib/doc/man/local/efuns/buffers/
final_realms_fluffos_v1/lib/doc/man/local/efuns/calls/
final_realms_fluffos_v1/lib/doc/man/local/efuns/compile/
final_realms_fluffos_v1/lib/doc/man/local/efuns/filesystem/
final_realms_fluffos_v1/lib/doc/man/local/efuns/floats/
final_realms_fluffos_v1/lib/doc/man/local/efuns/functions/
final_realms_fluffos_v1/lib/doc/man/local/efuns/general/
final_realms_fluffos_v1/lib/doc/man/local/efuns/interactive/
final_realms_fluffos_v1/lib/doc/man/local/efuns/internals/
final_realms_fluffos_v1/lib/doc/man/local/efuns/mappings/
final_realms_fluffos_v1/lib/doc/man/local/efuns/mudlib/
final_realms_fluffos_v1/lib/doc/man/local/efuns/numbers/
final_realms_fluffos_v1/lib/doc/man/local/efuns/objects/
final_realms_fluffos_v1/lib/doc/man/local/efuns/parsing/
final_realms_fluffos_v1/lib/doc/man/local/efuns/sockets/
final_realms_fluffos_v1/lib/doc/man/local/efuns/strings/
final_realms_fluffos_v1/lib/doc/man/local/efuns/system/
final_realms_fluffos_v1/lib/doc/man/local/historical/
final_realms_fluffos_v1/lib/doc/man/local/lfun/QC/
final_realms_fluffos_v1/lib/doc/man/local/lfun/events/
final_realms_fluffos_v1/lib/doc/man/local/lfun/monster/
final_realms_fluffos_v1/lib/doc/man/local/lfun/properties/
final_realms_fluffos_v1/lib/doc/man/local/lpc/
final_realms_fluffos_v1/lib/doc/man/local/lpc/constructs/
final_realms_fluffos_v1/lib/doc/man/local/lpc/types/
final_realms_fluffos_v1/lib/doc/man/local/standards/
final_realms_fluffos_v1/lib/doc/man/local/tutorials/
final_realms_fluffos_v1/lib/doc/man/local/tutorials/basic/
final_realms_fluffos_v1/lib/doc/man/local/tutorials/intermediate/
final_realms_fluffos_v1/lib/doc/man/mudos/applies/
final_realms_fluffos_v1/lib/doc/man/mudos/applies/interactive/
final_realms_fluffos_v1/lib/doc/man/mudos/applies/parsing/
final_realms_fluffos_v1/lib/doc/man/mudos/concepts/
final_realms_fluffos_v1/lib/doc/man/mudos/driver/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/arrays/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/buffers/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/calls/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/compile/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/filesystem/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/floats/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/functions/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/general/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/mappings/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/mixed/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/mudlib/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/numbers/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/parsing/
final_realms_fluffos_v1/lib/doc/man/mudos/lpc/constructs/
final_realms_fluffos_v1/lib/doc/man/mudos/lpc/types/
final_realms_fluffos_v1/lib/doc/races/
final_realms_fluffos_v1/lib/doc/races/old_race/
final_realms_fluffos_v1/lib/global/virtual/
final_realms_fluffos_v1/lib/global/wiz_backup/
final_realms_fluffos_v1/lib/net/config/
final_realms_fluffos_v1/lib/net/daemon/chars/
final_realms_fluffos_v1/lib/net/inherit/
final_realms_fluffos_v1/lib/net/intermud3/
final_realms_fluffos_v1/lib/net/intermud3/cmds/
final_realms_fluffos_v1/lib/net/intermud3/save/
final_realms_fluffos_v1/lib/net/intermud3/services/
final_realms_fluffos_v1/lib/net/obj/
final_realms_fluffos_v1/lib/net/old/
final_realms_fluffos_v1/lib/net/old/intermud/
final_realms_fluffos_v1/lib/net/old/intermud/adm/
final_realms_fluffos_v1/lib/net/old/intermud/services/
final_realms_fluffos_v1/lib/net/old/intermud/udp/
final_realms_fluffos_v1/lib/net/virtual/
final_realms_fluffos_v1/lib/obj/b_day/
final_realms_fluffos_v1/lib/obj/chars/
final_realms_fluffos_v1/lib/obj/handlers/lists/
final_realms_fluffos_v1/lib/obj/handlers/useless/
final_realms_fluffos_v1/lib/obj/monsters/
final_realms_fluffos_v1/lib/obj/roomgen/
final_realms_fluffos_v1/lib/obj/soul/
final_realms_fluffos_v1/lib/obj/vegetation/
final_realms_fluffos_v1/lib/obj/weapons/oldsys/
final_realms_fluffos_v1/lib/open/
final_realms_fluffos_v1/lib/players/g/
final_realms_fluffos_v1/lib/releasefiles/d/heaven/
final_realms_fluffos_v1/lib/releasefiles/d/mudlib/
final_realms_fluffos_v1/lib/releasefiles/d/newbie/
final_realms_fluffos_v1/lib/releasefiles/doc/
final_realms_fluffos_v1/lib/releasefiles/players/g/
final_realms_fluffos_v1/lib/releasefiles/save/
final_realms_fluffos_v1/lib/releasefiles/save/environ/
final_realms_fluffos_v1/lib/releasefiles/save/roomgen/
final_realms_fluffos_v1/lib/releasefiles/secure/
final_realms_fluffos_v1/lib/releasefiles/w/
final_realms_fluffos_v1/lib/releasefiles/w/god/
final_realms_fluffos_v1/lib/room/
final_realms_fluffos_v1/lib/save/
final_realms_fluffos_v1/lib/save/environ/
final_realms_fluffos_v1/lib/save/roomgen/
final_realms_fluffos_v1/lib/scripts/
final_realms_fluffos_v1/lib/secure/crerem/
final_realms_fluffos_v1/lib/secure/dom/
final_realms_fluffos_v1/lib/secure/log/
final_realms_fluffos_v1/lib/secure/misc/
final_realms_fluffos_v1/lib/std/adnd/
final_realms_fluffos_v1/lib/std/commands/shadows/
final_realms_fluffos_v1/lib/std/creator/
final_realms_fluffos_v1/lib/std/curses/
final_realms_fluffos_v1/lib/std/curses/old_sys/
final_realms_fluffos_v1/lib/std/curses/shadows/
final_realms_fluffos_v1/lib/std/dom/
final_realms_fluffos_v1/lib/std/effects/
final_realms_fluffos_v1/lib/std/effects/healing/
final_realms_fluffos_v1/lib/std/effects/other/
final_realms_fluffos_v1/lib/std/effects/poisons/
final_realms_fluffos_v1/lib/std/environ/
final_realms_fluffos_v1/lib/std/guilds/
final_realms_fluffos_v1/lib/std/guilds/priests/samples/
final_realms_fluffos_v1/lib/std/guilds/wizards/
final_realms_fluffos_v1/lib/std/living/baldy/
final_realms_fluffos_v1/lib/std/living/divstuff/
final_realms_fluffos_v1/lib/std/paran/
final_realms_fluffos_v1/lib/std/poisons/
final_realms_fluffos_v1/lib/std/poisons/shadows/
final_realms_fluffos_v1/lib/std/poisons/weapons/
final_realms_fluffos_v1/lib/std/race_groups/
final_realms_fluffos_v1/lib/std/room/
final_realms_fluffos_v1/lib/std/room/old/
final_realms_fluffos_v1/lib/std/rooms/
final_realms_fluffos_v1/lib/std/shadows/
final_realms_fluffos_v1/lib/std/shadows/test_shad/
final_realms_fluffos_v1/lib/std/socket/
final_realms_fluffos_v1/lib/std/spells/
final_realms_fluffos_v1/lib/std/vaults/
final_realms_fluffos_v1/lib/tmp/
final_realms_fluffos_v1/lib/w/
final_realms_fluffos_v1/lib/w/god/
final_realms_fluffos_v1/old/
final_realms_fluffos_v1/win32/
/*
 * has all the give/get stuff.
 * Fixed so that the objects are unworn/unheld..
 * Baldrick..
 */

#include "move_failures.h"
#define TIME_DIV 10
#define PASSED_OUT "passed out"

void handle_commands() 
{
    add_action("take", "get");
    add_action("take", "take");
    add_action("give", "give");
    add_action("give", "put");
    add_action("drop_ob", "drop");
}

/* this will work as give and put...
 */
int give(string str, string verb, object *bing, string bing2, int blue) 
{
    string person,
    thing,
    sh, con;

    int i, j, tot, max;

    object *obs,
    *per,
    *ret,
    *fail;

    if (!str && !verb) 
    {
    notify_fail("Usage: "+query_verb()+" <object> <to/in/on> <object>\n");
    return 0;
    }
    if ((verb?verb:query_verb()) == "give")
    con = " to ";
    else
    con = " in ";
    if (bing) {
    obs = bing;
    thing = bing2;
    j = blue;
    } else {
    if (sscanf(str, "%s to %s", thing, person) != 2)
        if (sscanf(str, "%s in %s", thing, person) != 2)
        if (sscanf(str,"%s on %s", thing, person) != 2) {
            notify_fail("Usage: "+query_verb()+" <object> <to/in/on> <object>\n");
            return 0;
        }
    obs = find_match(person, ({ this_object(), environment() }));
    if (!sizeof(obs)) {
        notify_fail("Cannot find "+person+" to "+query_verb()+" anything "+con+".\n");
        return 0;
    }
    per = obs;
    }
    /* should check to see that we can give things to this person/thing... */
    if (!per) per = ({ });
    for (;j<sizeof(per);j++) {
    if (per[j] == this_object())
        continue;
    obs = find_match(thing, this_object());
    obs -= ({ per[j] });
    if (!sizeof(obs)) {
        write("Nothing to "+query_verb()+con+per[j]->short()+".\n");
        continue;
    }
    ret = ({ });
    fail = ({ });
    for (i=0;i<sizeof(obs);i++)
    {
        if(!obs[i]->query_property("cursed"))
        {
        if (obs[i]->query_in_use() && obs[i]->query_holdable() )
            this_object()->unhold_ob(obs[i]);

        if ( obs[i]->query_in_use() && obs[i]->query_wearable() )
            this_object()->unwear_ob(obs[i]);
        }
        if( obs[i]->query_in_use() || obs[i]->query_property("cursed") )
        {
        fail += ({ obs[i] });
        }
        else
        if( ((int)obs[i]->move(per[j])) == MOVE_OK )
        {
        if(!interactive(per[j]) && interactive(this_object())) {
            obs[i]->add_static_property("pc_gave_npc",1);
        }
        ret += ({ obs[i] });
        tot += (int)obs[i]->query_weight();

        } /* if (((.. */
        else
        fail += ({ obs[i] });
    }

    if (sizeof(ret)) 
    {
        sh = query_multiple_short(ret);
        write("You "+query_verb()+" "+sh+con+
          (string)per[j]->short()+".\n");
        say(capitalize((string)this_object()->short())+" "+query_verb()+"s "+
          sh+con+(string)per[j]->short()+".\n", ({ per[j] }) );
        per[j]->event_say(this_object(), capitalize((string)this_object()->short())+
          " "+query_verb()+"s "+sh+con+"you.\n", ({ }));
        max = (int)per[j]->query_max_weight();

        if(max > 0)
        {
        if(tot > max) tot = max;
        max = (tot * 100)/max;

        switch(max)
        {
        case 0..25:            
            break;
        case 95..100:
            tell_room(environment(),
              per[j]->short()+" staggers under a weight "+
              per[j]->query_pronoun()+" can only just carry.\n", ({ per[j] }) );
            tell_object(per[j], 
              "You stagger under a weight you can only just carry.\n");
            break;
        default:
            tell_room(environment(),
              per[j]->short()+ ({
            " is only mildly discomforted by the additional weight.\n",
            " braces "+per[j]->query_objective()+"self to take the load.\n",
            " stumbles as "+per[j]->query_pronoun()+" takes the load.\n"
              })[(max/25)-1], ({ per[j] }) );
            tell_object(per[j], "You"+ ({
            " are only mildly discomforted by the additional weight.\n",
            " brace yourself under the load.\n",
            " stumble as you take the load.\n"
              })[(max/25)-1]);
        }
        this_object()->add_timed_property(PASSED_OUT,"You are still struggling with your load.\n",max/TIME_DIV);
        }
        /* Taniwha, I *think* this locks the whole mud 
                this_object()->adjust_time_left(-tot/TIME_DIV);
                if (this_object()->query_time_left() < 0)
                    this_object()->set_interupt_command("get_put_interupt", this_object(),
                  ({ tot, ret, query_verb(), con, per, j, thing }));
        */    
    }

    if (sizeof(fail))
        write("You cannot "+query_verb()+" "+query_multiple_short(fail)+
          con+per[j]->short()+".\n");
    }
    return 1;
}

int drop_ob(string str) 
{
    int i, num;
    object *ob, *ret, *fail;
    string sh;

    if (!str) 
    {
    notify_fail("Usage: "+query_verb()+" <object(s)>\n");
    return 0;
    }
    if(this_object()->query_property("loading"))
    {
    notify_fail("Your equipment is still in limbo, so it's rather difficult to drop things.\n");
    return 0;
    }
    ob = find_match(str, this_object());
    if (!sizeof(ob)) 
    {
    notify_fail("Cannot find "+str+" to drop.\n");
    return 0;
    }
    ret = ({ });
    fail = ({ });
    for (i=0;i<sizeof(ob);i++) 
    {
    if (!ob[i]->short())
        continue;
    /* Add by Baldrick, so the players willl unhold the object they drop..
     * This method is *NOT* good, but faster than the hard way.. 
     * but we should do it the hard way, later. 
     */
    if(!ob[i]->query_property("cursed"))
    {
        if (ob[i]->query_in_use() && ob[i]->query_holdable() )
        {
        this_object()->unhold_ob(ob[i]);
        }

        if ( ob[i]->query_in_use() && ob[i]->query_wearable() )
        {
        this_object()->unwear_ob(ob[i]);
        }

    }
    if( !ob[i]->query_property("cursed") && !ob[i]->query_in_use() &&
      ob[i]->move(environment()) == MOVE_OK)
        ret += ({ ob[i] });
    else
        fail += ({ ob[i] });
    }
    if (sizeof(ret)) 
    {
    sh = query_multiple_short(ret);
    if (!this_object()->query_hidden())
        say(capitalize((string)this_object()->short())+" drops "+sh+".\n");
    write("You drop "+sh+".\n");
    }
    if (sizeof(fail))
    write("You cannot drop "+query_multiple_short(fail)+".\n");
    num += sizeof(fail)+sizeof(ret);
    if (!num) {
    notify_fail("Cannot drop "+str+".\n");
    return 0;
    }
    return 1;
}

int take(string str, string verb, object *bing, string bing2, int blue) {
    object *dest, *obs, *fail, *ret_a;
    mixed *ret;
    string s2, sh;
    int i, num, j, cap, perc, we, tot, max;

    /* Added to get rid of one more auto_load bug..
     * Baldrick, nov '94
     */
    if (this_object()->query_loading() ||
      this_object()->query_property("loading"))
    {
    notify_fail("You have to wait until all equipment is loaded.\n");
    return 0;
    }
    if (!str && !verb) {
    notify_fail("Syntax: "+query_verb()+" <object> [from <object>]\n");
    return 0;
    }
    cap = (int)this_object()->query_max_weight()+1;
    if (verb) {
    dest = bing;
    i = blue;
    str = bing2;
    } else {
    dest = ({ environment() });
    if (sscanf(str, "%s from %s", str, s2) == 2) {
        /* since we only allow one lvl anyway... (*/
        dest = find_match(s2, ({ environment(), this_object() }));
        if (!sizeof(dest)) {
        notify_fail("Cannot find any "+s2+" here.\n");
        return 0;
        }
    }
    i = 0;
    }
    for (;i<sizeof(dest);i++) {
    if (dest[i]->cannot_get_stuff())
        continue;
    obs = find_match(str, dest[i]);
    ret = ({ ({ }), ({ }), ({ }), ({ }), ({ }), });
    ret_a = ({ });
    fail = ({ });
    tot = 0;
    for (j=0;j<sizeof(obs);j++)
        if (obs[j]->move(this_object()) == MOVE_OK) {
        if ((perc = (we = (int)obs[j]->query_weight())*100/cap) >= 95)
            ret[4] += ({ obs[j] });
        else
            ret[perc/25] += ({ obs[j] });
        tot += we;
        ret_a += ({ obs[j] });
        } else if (!living(obs[j]))
        fail += ({ obs[j] });
    for (j=0;j<sizeof(ret);j++)
        if (sizeof(ret[j])) {
        sh = query_multiple_short(ret[j]);
        write("You "+({ "get", "get with a bit of difficulty",
            "struggle somewhat to get",
            "find it very difficult to get",
            "use all your strength and just barely manage to get" })[j]+
          " "+sh+" from the "+(string)dest[i]->short()+".\n");
        if (!this_object()->query_hidden())
            say((string)this_object()->query_cap_name()+" "+
              ({ "gets", "gets with a bit of difficulty",
            "struggles somewhat to get",
            "finds it very difficult to get",
            "uses all "+this_object()->query_pronoun()+
            " strength and just barely manages to get" })[j]+
              " "+sh+" from the "+(string)dest[i]->short()+".\n");
        num += sizeof(ret[j]);
        }
    if (tot) {
        /*
            this_object()->adjust_time_left(-tot/TIME_DIV);
            if (this_object()->query_time_left() < 0) {
                this_object()->set_interupt_command("get_put_interupt", this_object(),
                  ({ tot, ret_a, "get", "from", dest, i, str }));
            }
        */
        max = (int)this_object()->query_max_weight();
        if(max && tot)
        {
        if(tot > max) tot = max;
        tot = (tot * 100)/max;
        this_object()->add_timed_property(PASSED_OUT,"You are still struggling with your load.\n",tot/TIME_DIV);
        }
    }
    if (sizeof(fail))
        write("You cannot get "+query_multiple_short(fail)+".\n");
    num += sizeof(fail);
    }
    if (!num) {
    notify_fail("Nothing to "+query_verb()+".\n");
    return 0;
    }
    return 1;
}

void get_put_interupt(int left, mixed arg) {
    int tot, j, i, weight;
    object *obs, *per;
    string sh, thing, sh2;

    per = arg[4];
    j = arg[5];
    thing = arg[6];
    obs = arg[1];
    if (left > 0) {
    object dest;
    /* We have been stopped!  How rude :) */
    tot = arg[0] - left; /* This is how much they pick up */
    if (arg[2] != "get")
        dest = this_object();
    else
        dest = per[j];

    for (i=0;i<sizeof(obs);i++) {
        weight = (int)obs[i]->query_weight();
        if (tot - weight < 0) {
        if (!i)
            sh = "none of the above";
        else
            sh = query_multiple_short(obs[0..i-1]);
        sh2 = query_multiple_short(obs);
        for (;i<sizeof(obs);i++)
            obs[i]->move(dest);
        write("Your interupted "+arg[2]+"ing "+sh2+" "+arg[3]+" "+
          per[j]->short()+", only "+arg[2]+"ing "+sh+".\n");
        say(this_object()->query_cap_name()+" is interupted "+arg[2]+"ing "+
          sh2+" "+arg[3]+" "+per[j]->short()+", only "+arg[2]+"ing "+sh+".\n");
        return ;
        }
        tot -= weight;
    }
    write("Hmmm...  here,,,?\n");
    return ;
    }
    if (j < sizeof(per)) {
    /* Keep going... */
    switch (arg[2]) {
    case "give" :
    case "put" :
        give(0, arg[2], per, thing, j+1);
        break;
    case "get" :
        take(0, arg[2], per, thing, j+1);
        break;
    }
    }
}