Flee()
******


FUNKTION
========

   public varargs void Flee( object oldenv, int force )


DEFINIERT IN
============

   /sys/living/combat.h
   /std/living/combat.c


ARGUMENTE
=========

   oldenv
     Ein Raum oder 0.
     Wird ein Raum angegeben, dann muss sich der Fluechtende in diesem
     Raum befinden, damit er versucht, zu fluechten, es sei denn, das
     optionale Flag "force" ist gesetzt.
   force
     1, wenn der spieler unabhaengig von seiner Vorsicht fluechten soll.
     0 sonst.


BESCHREIBUNG
============

   Flee() wird im heart_beat() oder von CheckWimpyAndFlee() aufgerufen,
   um den Spieler fluechten zu lassen. Man kann die Funktion im Spieler
   auch "von Hand" aufrufen, beispielsweise in einem Spell. Man sollte
   dann force auf 1 setzen, damit der Spieler unabhaengig von seiner
   Vorsicht fluechtet.
   Hierbei kann die Flucht dazu fuehren, dass man die Teamreihe wechselt,
   aber auch, dass man den Raum verlaesst.


RUeCKGABEWERT
=============

   keiner


BEMERKUNGEN
===========


BEISPIELE
=========

   this_player()->Flee(0, 1);
   // Der Spieler soll fluechten, egal, ob seine Lebenspunkte geringer
   // als seine Vorsicht sind und unabhaengig von seiner Position.



   this_player()->Flee( find_object("/gilden/abenteurer") );
   // Der Spieler soll fluechten, wenn er sich in der Abenteurergilde
   // befindet (oder wenn diese nicht existiert)



   this_player()->Flee( "/gilden/abenteurer" );
   // Der Spieler wird nicht fluechten, da der Vergleich von Dateiname
   // und dem Raum 0 ergibt.

   this_player()->Flee( find_object("/gilden/abenteurer"), 1);
   // Der Spieler soll auf jeden Fall fluechten, egal ob er sich in der
   // Abenteurergilde befindet oder nicht. Grund: Gesetztes force-Flag.


SIEHE AUCH
==========

   CheckWimpyAndFlee(), Defend(), heart_beat(),

Last modified: Wed Nov 12 14:44:42 2003 by Bambi
