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