
FindGroupP()
************


FUNKTION
========

   object*FindGroupP(object pl,int who,int pr);


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

   /std/spellbook.c


ARGUMENTE
=========

   pl
     Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
     gefunden werden sollen.
   who
     Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
     sollen (Konstanten definiert in '/sys/new_skills.h'):
       FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
       FG_FRIENDS - (Wert  1) Freunde sollen gefunden werden
       FG_ALL     - (Wert  0) alle Lebewesen sollen gefunden werden
   pr
     Wahrscheinlichkeit, mit der ein Lebewesen ausgesucht werden soll.
     Hierbei geht vorher noch das Skillattribute SA_EXTENSION ein!


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

   Array mit gefundenen Lebewesen


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

   Ausgesucht werden die Lebewesen genauso wie bei FindGroup(), nur
   dass zum Schluss die einzelnen Lebewesen per Zufall ausgewaehlt
   werden. Es ist also nicht gesichert, dass ueberhaupt ein Lebewesen
   zurueckgeliefert wird, trotzdem welche gefunden wurden.


BEISPIELE
=========

   Man moechte im Schnitt 50% der Feinde finden, die man gleichzeitig
   mit einem Spell belegt:
     enemyList=FindGroupP(caster,FG_ENEMIES,50);
   Dies gilt jedoch nur bei SA_EXTENSION==100, sonst wird mit
   dementsprechend mehr oder weniger Wahrscheinlichkeit zurueckgegeben.
    (also bei SA_EXTENSION==200 doppelt so viele -> 100%, also alle)
   Das Skillattribute SA_EXTENSION kann auch durch SA_QUALITY
   veraendert worden sein; das sollte beachtet werden.


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

   FindGroup(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK

Last modified: Mon Jan 25 15:04:31 1999 by Patryn
