NAME:
    P_NOINSERT_MSG                      "noinsert_msg"                      

DEFINIERT IN:
    /sys/thing/moving.h

BESCHREIBUNG:
     Diese Property enthaelt eine Meldung, die ausgegeben wird, wenn
     jemand versucht, ein Objekt in einen Behaelter zu bewegen und der
     Behaelter dieses im PreventInsert() verhindert.
     Die Property ist im Zielbehaelter zu setzen.
     Ist diese Property nicht oder auf einen nicht-String-Wert gesetzt,
     so wird die Standardmeldung ausgegeben.
     ("<Objekt> kannst Du dort nicht hineinstecken.")
     Der String in der Property wird noch durch replace_personal()
     verarbeitet, das zu bewegende Objekt wird als erstes, der Zielbehaelter
     als zweites Objekt angegeben. Danach wird der String auf 78 Zeichen
     umgebrochen.
     Das Setzen eines leeren Strings unterdrueckt die Ausgabe einer Meldung
     ganz.

BEISPIELE:
     1. Ein Kochtopf laesst im PreventInsert nur bestimmte Objekte zu, die zu
     einer Suppe gehoeren. Fuer eine passende Meldung wird im Topf jetzt die
     Property gesetzt:
     SetProp(P_NOINSERT_MSG, "Du kannst @WEN1 nicht in den Kochtopf tun, da"
	                     " gehoeren doch nur Suppenzutaten rein!");
     Wenn jemand jetzt versucht, eine Muenze reinzustecken, dann wuerde
     folgende Meldung erscheinen:
	Du kannst die Muenze nicht in den Kochtopf tun, da gehoeren doch nur
	Suppenzutaten rein!

     2. Ein Rucksack soll in einer bestimmten Reihenfolge gepackt werden, dazu
     kann im PreventInsert die Meldung je nach Bedarf gesetzt werden:
     if (<objekt noch nicht an der Reihe>)
	SetProp(P_NOINSERT_MSG, "@WEN1 solltest du erst spaeter einpacken.");
     else if (<objekt schon im Rucksack>)
	SetProp(P_NOINSERT_MSG, "Aber @WER1 ist doch schon eingepackt!");
     else ...

SIEHE AUCH:
     Aehnliches: P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_TOO_MANY_MSG,
                 P_NOLEAVE_MSG, P_NODROP, P_NOGET 
     Erfolg:     P_PICK_MSG, P_DROP_MSG, P_GIVE_MSG, P_PUT_MSG,
                 P_WEAR_MSG, P_WIELD_MSG
     Sonstiges:  replace_personal(E), /std/living/put_and_get.c
