Sym. Konstanten aus .h nutzen, besser benannt

Der walk_master benutzt nun die MAX_MASTER_TIME aus
mnpc.h, damit die beiden immer im Sync sind und
berechnet die Anzahl der HB(-Slots) mit
__HEART_BEAT_INTERVAL__.

MAX_DELAYTIME wurde umbenannt zu MAX_DELAY_HBS, weil
es keine Zeit ist, sondern ein Delay in HBs.

Change-Id: Ie3c78a4edf753e611219db5d76bb6a0a90e90d5d
diff --git a/p/service/padreic/mnpc/mnpc.h b/p/service/padreic/mnpc/mnpc.h
index 023ada5..50544db 100644
--- a/p/service/padreic/mnpc/mnpc.h
+++ b/p/service/padreic/mnpc/mnpc.h
@@ -11,6 +11,9 @@
 
 // bitte dieses #define benutzen und nicht den direkten Pfad verwenden
 #define WALK_MASTER              "/p/service/padreic/mnpc/walk_master"
+// max. Wartezeit zwischen 2 Bewegungen (in Sekunden), welche vom walk_master
+// verwaltet wird. (Muss ganzzahlig durch __HEART_BEAT_INTERVAL__ dividierbar
+// sein)
 #define MAX_MASTER_TIME          180
 
 // ist automatisch in jedem mnpc gesetzt
diff --git a/p/service/padreic/mnpc/walk_master.c b/p/service/padreic/mnpc/walk_master.c
index 4c973f6..3ae075f 100644
--- a/p/service/padreic/mnpc/walk_master.c
+++ b/p/service/padreic/mnpc/walk_master.c
@@ -21,8 +21,11 @@
 #pragma strong_types,rtt_checks
 #pragma no_clone,no_inherit
 
-#define MAX_DELAYTIME       90   /* max. delay ist 2*MAX_DELAYTIME */
-#define DEFAULT_WALK_DELAY 180   /* ist der billigste Wert :) */
+#include "/p/service/padreic/mnpc/mnpc.h"
+
+#define MAX_DELAY_HBS (MAX_MASTER_TIME/__HEART_BEAT_INTERVAL__)
+#define DEFAULT_WALK_DELAY MAX_MASTER_TIME   /* ist der billigste Wert :) */
+
 /* Ab welcher Rest-Tickmenge wird die Verarbeitung von Walkers unterbrochen */
 #define MAX_JOB_COST    200000
 
@@ -48,7 +51,7 @@
 
 protected void create()
 {
-  walker=map(allocate(MAX_DELAYTIME+1), #'allocate);
+  walker=map(allocate(MAX_DELAY_HBS+1), #'allocate);
 }
 
 #define ERROR(x) raise_error(sprintf(x, previous_object()));
@@ -59,7 +62,7 @@
   // pruefen ob die Paramter zulaessig sind...
   if (time<0) ERROR("negative time to RegisterWalker() from %O.\n");
   if (rand<0) ERROR("negative random to RegisterWalker() from %O.\n");
-  if ((time+rand) > (2*MAX_DELAYTIME)) 
+  if ((time+rand) > (MAX_MASTER_TIME))
     ERROR("Too long delaytime from %s to RegisterWalker().\n");
 
   if (Registration())
@@ -89,9 +92,9 @@
     set_heart_beat(1);
   }
   int next=counter;
-  //min. 1 Heartbeat delay erzwingen
-  next += max(1, (time+random(rand))/2);
-  if (next>MAX_DELAYTIME) next-=MAX_DELAYTIME;
+  //min. 1 Heartbeat delay erzwingen, ab jetzt in Heartbeats
+  next += max(1, (time+random(rand))/__HEART_BEAT_INTERVAL__);
+  if (next>MAX_DELAY_HBS) next-=MAX_DELAY_HBS;
   walker[next]+=({ func });
   clients += ([ get_type_info(func, 2): func; wert; next ]);
 }
@@ -158,9 +161,10 @@
              // 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;
+                        + max(1, (TIME(delay) + random(RANDOM(delay)))
+                                 /__HEART_BEAT_INTERVAL__);
+             if (next > MAX_DELAY_HBS)
+               next -= MAX_DELAY_HBS;
              walker[next] += ({ func });
              clients[mnpc, WALK_TIMESLOT] = next;
            }
@@ -175,7 +179,7 @@
      walker[counter]=({}); // fertiger Zeitslot, komplett leeren
    }
    // Wrap-around am Ende des Arrays.
-   if (counter == MAX_DELAYTIME)
+   if (counter == MAX_DELAY_HBS)
      counter=0;
    else
      counter++;