Untersuche nicht durch P_SHORT==0 verhindern
Gemaess der Festlegung, dass eine P_SHORT==0 nur dazu
fuehrt, dass Objekte in Inventaren nicht mehr angezeigt
werden, aber grundsaetzlich interagierbar sind, werden
Objekte ohne P_SHORT jetzt untersuchbar. (P_SHORT==0
verschleiert nur, aehnlich wie einem PAL-Feld.)
Ebenso sind sie als Referenzobjekte gueltig und
Umgebungen ohne P_SHORT unterbrechen die Kette zum
Referenzobjekt nicht mehr.
Nur ein P_INVIS!=1 fuehrt jetzt dazu, dass Objekte
nicht mehr untersuchbar sind und nicht mehr als
Referenzobjekte moeglich sind.
Change-Id: I3fec2c8fcb25bbbc0cc5efbf074d4594c4c3dcc3
diff --git a/std/player/viewcmd.c b/std/player/viewcmd.c
index d6383f4..718db88 100644
--- a/std/player/viewcmd.c
+++ b/std/player/viewcmd.c
@@ -358,7 +358,7 @@
}
// Wenn es nicht wir oder environment ist, darf das Referenzobjekt
// nicht unsichtbar sein.
- else if (!ref_object->short())
+ else if (ref_object->QueryProp(P_INVIS))
ref_object = 0;
// Und nur wenn das Ref-Objekt irgendwie in unserer Umgebung ist
// (direkt, in uns, in einem Container etc.) kommt es in Frage. Es
@@ -379,7 +379,7 @@
// Ist eine Umgebung Living oder intransparenter Container oder
// unsichtbar?
if (living(env) || !funcall(transparent_check, env)
- || !env->short())
+ || env->QueryProp(P_INVIS))
{
// Kette zum Ref-Objekt unterbrochen. Wenn das unterbrechende
// Env nicht dieses Living selber oder sein Env ist, wird das
@@ -582,7 +582,7 @@
}
// Und in jedem Fall werden alle Objekt raussortiert, die unsichtbar sind.
// ;-)
- objs = filter_objects(objs, "short"); // nur sichtbare...
+ objs -= filter_objects(objs, "QueryProp", P_INVIS);
// Wenn es sichtbare gibt, werden die ggf. angeguckt.
if (sizeof(objs))