
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
