find_objects() kommentiert.

Change-Id: I7fda6ac7c0c267d4c3590c3be46307092a83dd35
diff --git a/std/living/put_and_get.c b/std/living/put_and_get.c
index 7340936..a0b9575 100644
--- a/std/living/put_and_get.c
+++ b/std/living/put_and_get.c
@@ -580,6 +580,9 @@
     //              1: Objekt soll bewegt werden ("topf von herd")
     //              2: intern
 
+    // ganz am Ende von den tokens steht ggf. der vom User gewuenschte Anfang
+    // der Suche nache dem Objekt (z.B. "fackel aus truhe hier" oder "seil aus
+    // paket in mir".
     if (!env && sizeof(tokens) > 1 && tokens[<1] == "hier") {
         tokens = tokens[..<2];
         env = environment();
@@ -598,6 +601,9 @@
     }
 
     for (int i = sizeof(tokens)-1; i > 1; i--) {
+        // wird fangen am Ende der Tokens an und arbeiten uns wortweise nach
+        // vorne, um ein Objekt zu finden. (z.B. "... in paket 12" wuerde 2
+        // Durchlaeufe brauchen)
         if (env)
             ob = present(implode(tokens[i..], " "), env);
         else
@@ -607,20 +613,32 @@
         if (!ob)
             continue;
 
+        // aus Lebewesen darf man nix rausnehmen oder reingucken
         if (living(ob)) {
             NF("Aber " + ob->name(WER, 1) + " lebt doch!");
             continue;
         }
 
+        // und aus geschlossenen Containern auch nicht.
         if (ob->QueryProp(P_CNT_STATUS)) {
             NF("Aber " + ob->name(WER, 1) + " ist doch geschlossen!");
             continue;
         }
-
+        // Wenn was rausgenommen werden soll und jetzt vor dem gefundenen
+        // Container die passende Praeposition steht (z.B. "aus"), wird
+        // angenommen, dass der vordere Teil der Tokens zu aus diesem
+        // Container zu nehmende Objekt bezeichnet und in present_objects
+        // dieses Containers verzweigt.
         if (is_source != 0 &&
             tokens[i-1] == ob->QueryProp(P_SOURCE_PREPOSITION))
             return ob->present_objects(implode(tokens[..i-2], " "));
 
+        // Wenn vor dem gefundenen Objekt dessen normale Praeposition steht
+        // (z.B. "in", "auf"), wird rekursiv geschaut, ob der vordere Teil der
+        // Tokens erneut einen Container bezeichnet. is_source==2 wird
+        // uebergebeb, damit in der Rekursion nur Objekte vor der
+        // P_SOURCE_PREPOSITION geliefert werden, aber keine aus
+        // Environment/this_object() (s.u. nach der Schleife).
         if (tokens[i-1] == ob->QueryProp(P_PREPOSITION))
             return __find_objects(tokens[..i-2], ob, is_source ? 2 : 0);
 
@@ -630,14 +648,19 @@
 
     if (is_source == 2)
         return ({});
-
+    // wenn das for keine Container gefunden hat (auch:  wenn tokens zu kurz
+    // fuers for), wird im uebergebenen env geguckt, ob der vorderste Rest von
+    // tokens nen Objekt bezeichnet.
+    // geguckt, ob nen pass
     if (env)
         return env->present_objects(implode(tokens, " "));
 
+    // Und wenn kein env uebergeben und gefunden wurde, wird geguckt, ob unser
+    // Environment nen passendes Objekt fuer tokens hat...
     if (environment() &&
         sizeof(obs = environment()->present_objects(implode(tokens, " "))))
         return obs;
-
+    // oder eben wir selbst.
     return present_objects(implode(tokens, " "));
 }