FindGroup()

FUNKTION

object*FindGroup(object pl,int who);

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

RUeCKGABEWERT

Array mit gefundenen Lebewesen

BESCHREIBUNG

Bei Spells, die sich auf mehrere Gegner auswirken oder bei denen man
per Hand ein Opfer auswaehlen moechte, laesst sich mittels der
Funktion FindGroup() eine Liste von Lebewesen ermitteln, welche in
der Umgebung von <pl> zu finden sind.
Je nachdem, was man denn genau vorhat, kann man sich von der
Funktion freundlich oder feindlich gesinnte Lebewesen heraussuchen
lassen.
Will man die freundlich gesinnten Lebewesen ermitteln, so uebergibt
man in <who> die Konstante FG_FRIENDS, bei feindlich gesinnten die
Konstante FG_ENEMIES, und wenn man alle Lebewesen bekommen moechte
schliesslich FG_ALL.
Bei der Auswahl gelten folgende Regeln:
  (1) Lebewesen, mit denen <pl> im Kampf ist, sind grundsaetzlich
      feindlich gesinnt.
  (2) Teammitglieder von <pl> sind grundsaetzlich freundlich
      gesinnt.
  (3) Spieler sind gegenueber Spielern freundlich gesinnt, NPCs
      gegenueber NPCs. NPCs kann man hierbei mit Hilfe der Property
      P_FRIEND den Spielern zuordnen.
  (4) Daraus folgt natuerlich, dass Spieler und NPCs grundsaetzlich
      eine feindliche Einstellung gegenueber haben, sofern die NPCs
      nicht die Property P_FRIEND gesetzt haben
       (was standardmaessig natuerlich nicht der Fall ist).
  (5) Netztote werden nicht erkannt.
  (6) Magier werden nicht erkannt, wenn sie unsichtbar sind.
  (7) Ein Magier wird als feindlich gesinnt nur dann erkannt, wenn
      <pl> mit ihm im Kampf ist.
  (6) Sucht man feindlich gesinnte Lebewesen, so werden die, welche
      eine von den Properties P_NO_ATTACK oder P_NO_GLOBAL_ATTACK
      gesetzt haben, nicht erkannt.
Die Property P_FRIEND sollte man in NPCs setzen, die dem Spieler
hilfreich beiseite stehen, z.B. vom Spieler beschworene HilfsNPCs.

BEISPIELE

Wenn man einen Feuerball nach jemandem wirft, so trifft dieser unter
Umstaenden auch andere, wenn er gross genug ist. Man nimmt hierbei
an, dass sich die freundlich gesinnten Lebewesen des Gegners auch
naeher bei ihm befinden als die feindlich gesinnten:
  victim->Defend(500,DT_FIRE,([SP_SHOW_DAMAGE:1]),caster);
  victimList=FindGroup(victim,FG_FRIENDS);
  map_objects(victimList,
                  "Defend",
                  100,
                  DT_FIRE,
                  ([SP_SHOW_DAMAGE:1]),
                  caster);
Hiermit trifft man also auch die Freunde von <victim>.

SIEHE AUCH

FindGroupN(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK

Last modified: Mon Jan 28 21:45:00 2002 by Tiamak