Lpc Manpages

VERALTET
SYNOPSIS
        int transfer(object item, object dest)

BESCHREIBUNG
        Diese Funktion existiert lediglich aus Kompatibilitaetsgrunden, und
        dann auch nur, wennn der Driver mit USE_DEPRECATED kompiliert wird.

        Das Object <item> wird in Objekt <dest> bewegt. Verschiedene Tests
        werden durchgefuehrt, und das Resultat beschreibt den (Miss)Erfolg:

        0: Erfolg.
        1: Zu schwer fuer <dest>
        2: Kann nicht fallen gelassen werden.
        3: Kann nicht aus seinem  Behaelter genommen werden.
        4: <item> kann in keinen Behaelter gesteckt werden.
        5: <dest> akzeptiert <item> nicht.
        6: <item> kann nicht aufgenommen werden.

        Die Funktion ruft die lfuns add_weight(), drop(), get(),
        prevent_insert(), add_weight(), und can_put_and_get() nach Bedarf..

ERSATZ
        Diese Funktion kann einfach mit einer simul-efun simuliert werden: 

        /*--------------------------------------------------------*/
        int transfer(object item, object dest)
        {
            int weight;
            object from;

            efun::set_this_object(previous_object());

            weight = item->query_weight();
            if (!item)
                return 3;

            from = environment(item);
            if (from)
            {
                /*
                 * If the original place of the object is a living object,
                 * then we must call drop() to check that the object can be
                 * dropped.
                 */
                if (living(from))
                {
                    if (item->drop() || !item)
                        return 2;
                }
                /*
                 * If 'from' is not a room and not a player, check that we may
                 * remove things out of it.
                 */
                else if (environment(from))
                {
                    if (!from->can_put_and_get() || !from)
                        return 3;
                }
            }

            /*
             * If the destination is not a room, and not a player,
             * Then we must test 'prevent_insert', and 'can_put_and_get'.
             */
            if (environment(dest) && !living(dest))
            {
                if (item->prevent_insert())
                    return 4;
                if (!dest->can_put_and_get() || !dest)
                    return 5;
            }

            if (living(dest))
            {
                if (!item->get() || !item)
                    return 6;
            }

            /*
             * If it is not a room, correct the total weight in the
             * destination.
             */
            if (environment(dest) && weight)
            {
                if (!dest->add_weight(weight) || !dest)
                    return 1;
            }

            /*
             * If it is not a room, correct the weight in the 'from' object.
             */
            if (from && environment(from) && weight)
            {
                from->add_weight(-weight);
            }

            move_object(item, dest);

            return 0;
        }
        /*--------------------------------------------------------*/

SIEHE AUCH
         move_object(E), drop(A), get(A), prevent_insert(A),
         can_put_and_get(A), add_weight(A)