drop_obj()
**********


FUNKTION
========

   int drop_obj(object ob);


DEFINIERT IN
============

   /std/living/put_and_get.c


ARGUMENTE
=========

   ob  Das Objekt, das von dem Lebewesen, in dem diese Funktion aufgerufen
       wird, fallengelassen werden soll.


BESCHREIBUNG
============

   Das Lebewesen, in dem diese Funktion aufgerufen werden soll, laesst
   den angegebenen Gegenstand fallen, wenn dies moeglich ist.


RUeCKGABEWERT
=============

   1, wenn das Objekt fallen gelassen wurde oder dies nicht moeglich war.
   (in diesem Fall wird auch direkt eine Textausgabe ausgegeben)
   0 sonst, in diesem Fall wird in notify_fail eine passende Ausgabe
   plaziert.


SIEHE AUCH
==========

   find_obs(), give_obj(), pick_obj(), put_obj(), /std/living/put_and_get.c
