| 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 |