Lpc Manpages

FUNKTION:
     varargs int move(mixed dest, int method);
     varargs int move(mixed dest, int method, string dir, string textout,
     string textin);

DEFINIERT IN:
     /std/thing/moving.c
     /std/living/moving.c

ARGUMENTE:
     dest
          Das Zielobjekt (entweder der Dateiname oder das Objekt selbst).

     method
          Die Art der Bewegung (eine der unten aufgefuehrten Arten; es
          koennen auch mehrere zusammenge-ODER-t werden).

     dir
          Die Richtung, in die ein Lebewesen geht. Normalerweise ist das die
          eingeschlagene Laufrichtung (zB. "nach Norden").

     textout
          Verlaesst ein Lebewesen einen Raum, so wird diese Meldung in den
          Raum geschickt. Ist bei dir ein String angegeben, so wird dieser
          noch an textout angehaengt. Der Name des Lebewesens wird der
          Meldung in jedem Fall vorangestellt.

     textin
          Dieser Text wird im Zielraum ausgegeben, wenn ein Lebewesen ihn
          betritt. Bei normaler Fortbewegung ist das "kommt an". Dem Text
          wird noch der Name des Spielers vorangestellt.

BESCHREIBUNG:
     Es wird versucht, das Objekt in das Zielobjekt dest zu bewegen.
     Abhaengig vom momentanen Aufenthaltsort und dem Zielobjekt ist die
     Bewegungsmethode method zu waehlen.

     In <moving.h> sind folgende Konstanten fuer die Art der Bewegung
     definiert:
     M_NOCHECK
          Es werden keine Abfragen durchgefuehrt, ob das Objekt ueberhaupt
          in das Zielobjekt hineinpasst (was zB. aus Gewichtsgruenden der
          Fall sein koennte).

     M_GO
          Ein Lebewesen bewegt sich gehend von einem Raum in den naechsten.
          Bei normalem Gehen wird diese Methode benutzt; man sollte sie auch
          benutzen, wenn man Spieler ueber einen SpecialExit in einen
          benachbarten Raum bewegt.

     M_TPORT
          Ein Lebewesen wird von einem Raum in einen anderen teleportiert.
          Im Gegensatz zu M_GO kann ein Raum verhindern, dass man ihn
          mittels M_TPORT verlaesst oder betritt.

     M_NO_SHOW
          Beim Bewegen von Lebewesen bekommen diese die Beschreibung des
          Zielraumes nicht ausgegeben.

     M_NO_ATTACK
          Beim Bewegen von Lebewesen bekommen diese keinen
          Begruessungsschlag, wenn ein Feind im Zielraum steht.

     M_SILENT
          Es werden beim Bewegen keine Meldungen ausgegeben.

     M_GET
          Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
          Leiche, einem Beutel) in ein lebendes Objekt (Spieler oder NPC)
          bewegt.

     M_PUT
          Das Objekt wird von einem lebenden Objekt in ein unbelebtes Objekt
          bewegt.

     M_GIVE
          Das Objekt wird von einem Lebewesen an ein anderes Lebewesen
          weitergereicht.

     M_MOVE_ALL (Nur fuer Objekte, die /std/unit.c erben)
          Es wird die gesamte Menge bewegt, nicht nur ein Teil.

     M_FORCE_SPLIT (Nur fuer Objekte, die /std/unit.c erben)
          Obsolet, da Relikt aus vergangenen Tagen (wird gehandhabt wie
          M_MOVE_ALL).

     Soll das Objekt auf jeden Fall und ohne jede Abfrage bewegt werden, so
     reicht es, als 'method' M_NOCHECK zu uebergeben.

     Waffen und Ruestungen werden, soweit sie gezueckt bzw. angezogen sind,
     beim Bewegen auf jeden Fall weggesteckt bzw. ausgezogen. Ist in 'method'
     M_SILENT enthalten, so geschieht dies ohne Meldungen.

     Die erste Art des Funktionsaufrufs ist sowohl beim Bewegen von
     Lebewesen als auch von unbelebten Objekten moeglich. Die zweite Art
     laesst sich nur bei Lebewesen anwenden.

     Ist das Objekt nicht mit 'method' M_NOCHECK gewegt worden, so wird
     nach dem move() im Objekt die Funktion NotifyMoved(woher, wohin)
     aufgerufen.

RUECKGABEWERT:
     1, wenn das Objekt erfolgreich bewegt wurde, ansonsten einer der
     folgenden Werte (welche allesamt kleiner als Null und in <moving.h>
     definiert sind):
     ME_PLAYER
          Lebewesen lassen sich nicht ohne weiteres bewegen. Es muss
          mindestens eine der Methoden M_NOCHECK, M_GO oder M_TPORT
          angegeben werden.

     ME_TOO_HEAVY
          Das Zielobjekt kann dieses Objekt aus Gewichtsgruenden nicht mehr
          aufnehmen.

     ME_CANT_TPORT_IN
          Das Zielobjekt verbietet das Teleportieren in sich hinein (nur bei
          M_TPORT ohne M_NOCHECK).

     ME_CANT_TPORT_OUT
          Der Raum, in dem sich das Lebewesen befindet, verbietet das
          Teleportieren aus sich hinaus (nur bei M_TPORT ohne M_NOCHECK).

     ME_CANT_BE_DROPPED
          Das Objekt kann nicht fallen gelassen werden (zB. weil P_NODROP
          gesetzt ist).

     ME_CANT_BE_TAKEN
          Das Objekt kann nicht genommen werden (zB. weil P_NOGET gesetzt
          ist).

     ME_CANT_BE_INSERTED
          Das Zielobjekt verhindert das Einfuegen aus bestimmten Gruenden.

     ME_CANT_BE_REMOVED
          Das Environment verhindert das Entnehmen aus bestimmten Gruenden.
          
BEISPIELE:
        o Ein Objekt "gibt sich" dem Spieler:

          move(this_player(), M_GET);

        o Ein Lebewesen wird in die Abenteurergilde teleportiert:

          lv->move("/gilden/abenteurer", M_TPORT);

        o Ein Spieler "wird in die Gilde gegangen":

          this_player()->move("/gilden/abenteurer", M_GO, "in die Gilde");

          Spieler, die mit ihm im gleichen Raum stehen, sehen folgende
          Meldung:
          "<name> geht in die Gilde."

        o Ein Spieler schwimmt durchs Meer:

          this_player()->move("meer_xy", M_GO, "nach Norden", "schwimmt",
                              "schwimmt herein");

          Spieler in seinem Startraum sehen "<name> schwimmt nach Norden.",
          Spieler in seinem Zielraum sehen "<name> schwimmt herein."


SIEHE AUCH:
     Vor move:   MayAddObject, MayAddWeight,
                 PreventInsert, PreventLeave, PreventMove, PreventRemove,
                 PreventLeaveLiving, PreventInsertLiving
     Nach move:  NotifyInsert, NotifyLeave, NotifyMove, NotifyRemove
     Sonstiges:  init, exit

----------------------------------------------------------------------------
01.12.17, Torin