diff --git a/doc/sphinx/man/lfun/drop_objects b/doc/sphinx/man/lfun/drop_objects
new file mode 100644
index 0000000..93cbee5
--- /dev/null
+++ b/doc/sphinx/man/lfun/drop_objects
@@ -0,0 +1,73 @@
+
+drop_objects()
+**************
+
+
+FUNKTION
+========
+
+   public varargs int drop_objects(string str, mixed msg);
+
+
+DEFINIERT IN
+============
+
+   /std/living/put_and_get.c
+
+
+ARGUMENTE
+=========
+
+   string str
+       Was fallengelassen werden soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_DROP_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC laesst die in <str> benannten Sachen fallen.
+   Kann er ein Objekt nicht fallenlassen, bekommt er eine entsprechende
+   Fehlermeldung. Wenn keine Objekte auf <str> passen, wird per
+   _notify_fail() eine Meldung gesetzt, aber noch nicht ausgegeben.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn <str> irgendwelche vorhandenen Sachen sind, 1, sonst 0.
+
+
+BEMERKUNG
+=========
+
+   Wenn die Funktion 1 zurueckgibt, heisst das noch nicht, dass der Spieler
+   etwas fallengelassen hat! Er hat es nur versucht, d.h. auf jeden Fall eine
+   Meldung bekommen. Gibt die Funktion 0 zurueck, hat er noch keine bekommen.
+
+
+BEISPIEL
+========
+
+   private int cmd_opfern(string str)
+   {
+       notify_fail("WAS moechtest Du opfern?\n");
+
+       if (!this_player()->drop_objects(str, ({ "Du opferst @WEN2.",
+                                                "@WER1 opfert @WENU2.\n" })))
+           return 0;
+
+       filter_objects(this_player()->moved_objects(), "remove");
+       return 1;
+   }
+
+
+SIEHE AUCH
+==========
+
+   move(L), drop(L), P_DROP_MSG, find_objects(L), moved_objects(L)
+
+Last modified: Fri Jul 25 10:59:37 2008 by Amynthor
