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