PreventFollow()

FUNKTION:
  int PreventFollow(object dest)

ARGUMENTE:
  dest: Zielobjekt, in das der Verfolgte bewegt werden soll.

FUNKTION:
  In jedem Verfolger, der mit AddPursuer in die Liste der Verfolger 
  eingetragen wurde, wird vor dem Bewegen in das Zielobjekt die Funktion
  PreventFollow mit dem Zielobjekt als Argument aufgerufen.

RUECKGABEWERT:
  0: Verfolger darf in das Zielobjekt folgen
  1: Verfolger darf in dieses Zielobjekt nicht folgen
     (Verfolgung bleibt weiterhin aktiv)
  2: Verfolger darf in dieses Zielobjekt nicht folgen
     (Verfolgung wird abgebrochen und Verfolger aus der Verfolgerliste
      ausgetragen)

BEMERKUNG:
  Durch PreventFollow kann der raeumliche Bereich, in dem verfolgt werden
  darf, eingeschraenkt werden.

BEISPIELE:
  Man moechte, dass ein NPC auf einer Insel nicht mit dem Spieler in das
  Boot steigt, um mit dem Spieler zusammen von der Insel herunterzukommen.

  #define PATH(x) ("/d/.../.../mein/pfad/+(x)")                           

  ...                                          

  int PreventFollow(object boot)                                           
   {
    if ( object_name(boot)[0..strlen(PATH("boot"))-1] == PATH("boot") )
     return 1;
   }                                                                         

  Diese Funktions-Definition ist sehr flexibel, denn sie erlaubt sowohl
  spaetere Pfadanpassung als auch mehrere Boote.
  Da ueber die Funktion strlen() nur bis zum letzten Buchstaben des    
  angegebenen Strings getestet wird, wird also gleichzeitig auch auf          
  boot[1], boot[2] usw. getestet.

SIEHE AUCH:
  "AddPursuer", "RemovePursuer"
----------------------------------------------------------------------------
Last modified: Tue Jun 10 13:59:30 2003 by Gabylon