Pause nur wenn kein Spieler an einem Haltepunkt.
Es konnte passieren, dass ein Spieler an einen Haltepunkt
kommt (nachdem der Transporter aber weg ist) und der
Transporter dann am Ende der Route mangels Spielerkontakt
anhaelt. Dann faehrt er nicht wieder los, solange der
Spieler am Haltepunkt idelt. (Es muss jemand einen
Haltepunkt betreten.) Das ist nicht so optimal aus
Spielersicht.
Daher haelt der Transporter nur an, wenn kein Spieler an
einem Haltepunkt steht.
Change-Id: I90a0e7fcb6afefa2aa7b473f3f2ce3e7b4938509
diff --git a/std/transport.c b/std/transport.c
index bed2729..253ef94 100644
--- a/std/transport.c
+++ b/std/transport.c
@@ -615,13 +615,22 @@
// for 2 round-trips, we try to pause.
if (meet_last_player < time() - (2*route_time) )
{
- // we don't stop if players currently are in the transporter or in the same
- // environment (e.g. idling).
- object *pls = filter(all_inventory(this_object())
- + all_inventory(environment(this_object())),
- #'interactive);
- if (!sizeof(pls))
- return Pause();
+ // we don't stop if players are currently at one of our stops
+ foreach(mixed* arr : route)
+ {
+ if (arr[0] == HP_ROOM)
+ {
+ object room = find_object(arr[1]);
+ if(room &&
+ sizeof(filter(all_inventory(room), #'interactive)))
+ return 0; // no pause
+ }
+ }
+ // and we don't stop if players currently are in the transporter.
+ if (sizeof(filter(all_inventory(this_object()), #'interactive)))
+ return 0;
+ // ok, pause machen
+ return Pause();
}
return 0;
}