blob: 112c76f0c965df37366e833fed4313b89b48d33a [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
2FindGroup()
3***********
4
5
6FUNKTION
7========
8
9 object*FindGroup(object pl,int who);
10
11
12DEFINIERT IN
13============
14
15 /std/spellbook.c
16
17
18ARGUMENTE
19=========
20
21 pl
22 Lebewesen, von welchem die Freunde oder Feinde in der Umgebung
23 gefunden werden sollen.
24 who
25 Flag, welches anzeigt, ob Freunde oder Feinde gefunden werden
26 sollen (Konstanten definiert in '/sys/new_skills.h'):
27 FG_ENEMIES - (Wert -1) Feinde sollen gefunden werden
28 FG_FRIENDS - (Wert 1) Freunde sollen gefunden werden
29 FG_ALL - (Wert 0) alle Lebewesen sollen gefunden werden
30
31
32RUeCKGABEWERT
33=============
34
35 Array mit gefundenen Lebewesen
36
37
38BESCHREIBUNG
39============
40
41 Bei Spells, die sich auf mehrere Gegner auswirken oder bei denen man
42 per Hand ein Opfer auswaehlen moechte, laesst sich mittels der
43 Funktion FindGroup() eine Liste von Lebewesen ermitteln, welche in
44 der Umgebung von <pl> zu finden sind.
45 Je nachdem, was man denn genau vorhat, kann man sich von der
46 Funktion freundlich oder feindlich gesinnte Lebewesen heraussuchen
47 lassen.
48 Will man die freundlich gesinnten Lebewesen ermitteln, so uebergibt
49 man in <who> die Konstante FG_FRIENDS, bei feindlich gesinnten die
50 Konstante FG_ENEMIES, und wenn man alle Lebewesen bekommen moechte
51 schliesslich FG_ALL.
52 Bei der Auswahl gelten folgende Regeln:
53 (1) Lebewesen, mit denen <pl> im Kampf ist, sind grundsaetzlich
54 feindlich gesinnt.
55 (2) Teammitglieder von <pl> sind grundsaetzlich freundlich
56 gesinnt.
57 (3) Spieler sind gegenueber Spielern freundlich gesinnt, NPCs
58 gegenueber NPCs. NPCs kann man hierbei mit Hilfe der Property
59 P_FRIEND den Spielern zuordnen.
60 (4) Daraus folgt natuerlich, dass Spieler und NPCs grundsaetzlich
61 eine feindliche Einstellung gegenueber haben, sofern die NPCs
62 nicht die Property P_FRIEND gesetzt haben
63 (was standardmaessig natuerlich nicht der Fall ist).
64 (5) Netztote werden nicht erkannt.
65 (6) Magier werden nicht erkannt, wenn sie unsichtbar sind.
66 (7) Ein Magier wird als feindlich gesinnt nur dann erkannt, wenn
67 <pl> mit ihm im Kampf ist.
68 (6) Sucht man feindlich gesinnte Lebewesen, so werden die, welche
69 eine von den Properties P_NO_ATTACK oder P_NO_GLOBAL_ATTACK
70 gesetzt haben, nicht erkannt.
71 Die Property P_FRIEND sollte man in NPCs setzen, die dem Spieler
72 hilfreich beiseite stehen, z.B. vom Spieler beschworene HilfsNPCs.
73
74
75BEISPIELE
76=========
77
78 Wenn man einen Feuerball nach jemandem wirft, so trifft dieser unter
79 Umstaenden auch andere, wenn er gross genug ist. Man nimmt hierbei
80 an, dass sich die freundlich gesinnten Lebewesen des Gegners auch
81 naeher bei ihm befinden als die feindlich gesinnten:
82 victim->Defend(500,DT_FIRE,([SP_SHOW_DAMAGE:1]),caster);
83 victimList=FindGroup(victim,FG_FRIENDS);
84 map_objects(victimList,
85 "Defend",
86 100,
87 DT_FIRE,
88 ([SP_SHOW_DAMAGE:1]),
89 caster);
90 Hiermit trifft man also auch die Freunde von <victim>.
91
92
93SIEHE AUCH
94==========
95
96 FindGroupN(), FindGroupP(), P_FRIEND, P_NO_GLOBAL_ATTACK
97
98Last modified: Mon Jan 28 21:45:00 2002 by Tiamak