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);
 }
