StopHuntFor()

FUNKTION:
  varargs int StopHuntFor(object arg,int silent);

DEFINIERT IN:
  /std/living/combat.c

ARGUMENTE:
  arg
    Der Gegner, welcher nicht mehr bekaempft werden soll.
  silent
    Flag, welches gesetzt anzeigt, dass die beiden Ex-Streithaehne
    ueber das einseitige Friedensangebot nicht informiert werden
    sollen.

RUeCKGABEWERT:
  Flag: Bei 0 war der Gegner nicht auffindbar, bei 1 Erfolg.

BESCHREIBUNG:
  Mit dieser Funktion kann man ein Lebewesen <arg> als Gegner
  austragen. Im Normalfall erhalten sowohl das aktuelle Objekt, als
  auch der Gegner eine Information darueber. Dies kann jedoch mit dem
  gesetzten Flag <silent> unterbunden werden.
  Es ist auch moeglich, auf diese Meldung Einfluss zu nehmen, indem
  man die Funktion StopHuntText() ueberschreibt, welche dafuer
  verantwortlich ist.
  Achtung: Um zwischen beiden Streithaehnen Frieden zu schliessen,
  muss der eine Gegner jeweils bei dem anderen ausgetragen werden. Ein
  einzelnes StopHuntFor() ist sozusagen nur ein einseitiges
  Friedensangebot.

BEMERKUNGEN:
  Soll ein Viech unter bestimmten Umstaenden nicht angreifbar sein, ist in
  keinem Fall StopHuntFor() im Defend() zu verwenden, sondern P_NO_ATTACK.
  Grund: Stoppt man unliebsame Kaempfe jeweils am Anfang vom Defend, kann ein
  Gegner gefahrlos Angriffsspells ausfuehren (und ueben), ohne dass die Gefahr
  besteht, dass der NPC zurueckschlaegt.

BEISPIELE:
  Man will aus irgendeinem Grund den Kampf zwischen sich und Gegner enemy
  einstellen:
  ...
  StopHuntFor(enemy); // enemy nicht mehr bekaempfen
  enemy->StopHuntFor(this_object()); // enemy soll mich nicht bekaempfen.
  ...

SIEHE AUCH:
  StopHuntText(), SelectEnemy(), QueryEnemies(), IsEnemy()

----------------------------------------------------------------------------
16.03.2008, Zesstra 
