ReceiveMsg(): Prüfung von origin gefixt.

Prüfung von origin gefixt: Nicht prüfen, ob es vom
environment() gesendet wurde, sondern ob es von
einem Objekt im Transporter gesendet wurde.

Change-Id: I0fe6bf03169ea0f1f2f7de80cadb8c6deea14b8d
diff --git a/std/transport.c b/std/transport.c
index 5b9c04f..d0441c0 100644
--- a/std/transport.c
+++ b/std/transport.c
@@ -713,30 +713,24 @@
 public void ReceiveMsg(string msg, int msg_type, string msg_action,
                                string msg_prefix, object origin)
 {
-  // Wenn die Meldung aus einem der Environments kommt und der Transporter
-  // gerade nicht transparent ist (entweder generell oder weil er gerade
+  // Wenn die Meldung aus einem Objekt in uns kommt oder der Transporter
+  // transparent ist (grundsaetzlich und weil er gerade nicht
   // unterwegs/unsichtbar ist), wird die Meldung nicht ans Inventar
   // weitergeleitet.
-  // Bemerkung: origin in all_environment() klingt zwar gut, aber dann werden
-  // Nachrichten von anderen Objekte im Raum *ueber* den raum nicht erfasst.
-  // D.h. in diesem Fall wird wirklich previous_object() geprueft.
-  if (previous_object() == environment() && !QueryProp(P_TRANSPARENT))
-    return;
-  ::ReceiveMsg(msg, msg_type, msg_action, msg_prefix, origin);
+  if ((origin && (this_object() in all_environment(origin)))
+      || QueryProp(P_TRANSPARENT))
+    ::ReceiveMsg(msg, msg_type, msg_action, msg_prefix, origin);
 }
 
 // Wrapper fuer ReceiveMsg()
 public void ReceiveMultiSense(struct wave_s *msgs, string action=0,
     int commontypes=0)
 {
-  // Wenn die Meldung aus einem der Environments kommt und der Transporter
-  // gerade nicht transparent ist (entweder generell oder weil er gerade
+  // Wenn die Meldung aus einem Objekt in uns kommt oder der Transporter
+  // transparent ist (grundsaetzlich und weil er gerade nicht
   // unterwegs/unsichtbar ist), wird die Meldung nicht ans Inventar
   // weitergeleitet.
-  // Bemerkung: origin in all_environment() klingt zwar gut, aber dann werden
-  // Nachrichten von anderen Objekte im Raum *ueber* den raum nicht erfasst.
-  // D.h. in diesem Fall wird wirklich previous_object() geprueft.
-  if (previous_object() == environment() && !QueryProp(P_TRANSPARENT))
-    return;
-  ::ReceiveMultiSense(msgs, action, commontypes);
+  if ((origin &&  (this_object() in all_environment(origin)))
+      || QueryProp(P_TRANSPARENT))
+    ::ReceiveMultiSense(msgs, action, commontypes);
 }