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