P_INVIS setzen, wenn unterwegs.
Damit Transporter auf der Reise nicht interagierbar werden,
wird P_INVIS waehrend der Reise fuer alle this_player()
auf 1 gesetzt, die nicht im Transporter sind. Bislang
waren sie nicht einfach unsichtbar ueber P_SHORT==0.
Dafuer entfaellt GetDetail() wieder, was das gezielt fuer
Details gemacht hat.
Change-Id: Ib8d94870b3572bc2748581a77be87f2b7780c6e4
diff --git a/std/transport.c b/std/transport.c
index 79deec1..125bea5 100644
--- a/std/transport.c
+++ b/std/transport.c
@@ -66,15 +66,27 @@
*/
string _query_short()
-{
- if (roomCode) return Query(P_SHORT);
- return 0;
+{
+ if (roomCode) return Query(P_SHORT, F_VALUE);
+ return 0;
+}
+
+// Waehrend der Reise echt unsichtbar und nicht-interagierbar machen, ausser
+// fuer PL innerhalb des Transporters.
+// Ansonsten koennten z.B. Spieler, die im Hafen einen angelegten Transporter
+// betrachten, ihn dadurch als Referenzobjekt haben und Details am
+// unsichtbaren, reisenden Transporter betrachten.
+visible int _query_invis()
+{
+ if(!roomCode && (!PL || environment(PL) != ME))
+ return 1;
+ return Query(P_INVIS, F_VALUE);
}
mixed _query_transparent()
-{
+{
if (roomCode) return Query(P_TRANSPARENT);
- return 0;
+ return 0;
}
static mixed *_set_route(mixed *r) { return route = r; }
@@ -410,17 +422,6 @@
name(WEN,1),"verlaesst","kommt herein");
}
-// Details nur, wenn der Transporter angelegt hat bzw. fuer Livings an Bord.
-// Hintergrund: Transporter sind durch P_SHORT 0 zwar unsichtbar, es kann
-// aber mit ihnen interaggiert werden, dadurch koennen Spieler, die im Hafen
-// einen angelegten Transporter betrachten und ihn dadurch als Referenzobjekt
-// haben Details an ihm betrachten.
-public varargs string GetDetail(string key, string race, int sense)
-{
- if(!roomCode && environment(PL) != ME) return 0;
- return ::GetDetail(key, race, sense);
-}
-
/*
****************** Internal Functions ******************
*/