Minimale Verzoegerung von 1 HB erzwingen.

Wenn Magier als Verzoegerung so wenig angeben, dass weniger
als ein HB nach random herauskommt, wird der MNPC in denselben
Zeitslot eingetragen, der gerade abgearbeitet wird. Da dieser
nach Abarbeiten aber geloescht wird, geht der MNPC in walker
verloren und laeuft nicht mehr (und buggt beim De-Registrieren).
Daher wird nun min. eine Verzoegerung (nach random) von einem
Heartbeat erzwungen.

Change-Id: Ic458c2fa9bac633d2a8f2de9aa91dc1be2e12884
diff --git a/p/service/padreic/mnpc/walk_master.c b/p/service/padreic/mnpc/walk_master.c
index bec6d4f..6adffb0 100644
--- a/p/service/padreic/mnpc/walk_master.c
+++ b/p/service/padreic/mnpc/walk_master.c
@@ -153,7 +153,11 @@
              // Es gab keinen Fehler und das Objekt will weiterlaufen.
              // Naechsten Zeitslot bestimmen und dort die closure eintragen.
              int delay = clients[mnpc, WALK_DELAY];
-             int next = counter + (TIME(delay) + random(RANDOM(delay)))/2;
+             // das delay muss min. 1 sein, sonst tragen wir den MNPC in
+             // diesen aktuellen zeitslot wieder ein (ja, Magier tun solche
+             // Dinge), der ja nach Abarbeiten des Slots genullt wird.
+             int next = counter
+                        + max(1, (TIME(delay) + random(RANDOM(delay)))/2);
              if (next > MAX_DELAYTIME)
                next -= MAX_DELAYTIME;
              walker[next] += ({ func });