blob: d306a78c3e7fd8afe85a5ae8576a94956d1db82a [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001
Zesstra953f9972017-02-18 15:37:36 +01002PresentEnemies()
3****************
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 object *PresentEnemies();
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /std/living/combat.c
16
17
18ARGUMENTE
19=========
20
21 keine
22
23
24RUeCKGABEWERT
25=============
26
Arathorn15fb8432020-09-05 23:12:35 +020027 Array mit anwesenden Feinden. Wenn keine Feinde anwesend sind, ist
28 das Array leer, es wird jedoch immer ein Array zurueckgegeben.
Zesstra953f9972017-02-18 15:37:36 +010029
30
31BESCHREIBUNG
32============
33
34 Diese Funktion liefert genau die Feinde zurueck, die sich derzeit im
35 selben Raum befinden. Die Feinde unterliegen hierbei noch gewissen
36 Einschraenkungen:
37 (1) Sie duerfen als NPC nicht gestorben sein, das heisst, sie
38 muessen als Objekt noch existieren.
39 (2) Sie duerfen als Spieler nicht gestorben sein, das heisst, sie
40 duerfen keine Geister sein (Property P_GHOST nicht gesetzt).
41 (3) Sie muessen angreifbar sein, das heisst, die Property
42 P_NO_ATTACK darf nicht gesetzt sein.
43 Wird eine dieser Bedingungen verletzt, so wird der Gegner aus der
44 internen Gegnerliste entfernt. Zusaetzlich gilt:
45 Netztote werden nur als Gegner erkannt, wenn keine anderen Gegner
46 zur Verfuegung stehen.
47
48
49BEISPIEL
50========
51
52 Im Folgenden erblinden alle Gegner im Raum:
53 string blindThemAll()
54 { ob*livList;
55 if(!livList=PresentEnemies())
56 return break_string(
57 "Mist...keiner da, der blind werden moechte.",77,
58 Name(WER)+" grummelt: ");
59 for(i=sizeof(livList);i--;)
60 { if(livList[i]->QueryProp(P_BLIND))
61 { tell_object(this_object(),break_string(
62 livList[i]->Name(WER)+" ist schon blind.",77));
63 continue;
64 }
65 tell_object(this_object(),break_string(
66 "Du kratzt "+livList[i]->name(WEM)+" die Augen aus.",77));
67 tell_object(livList[i],break_string(
68 Name(WER)+" kratzt Dir die Augen aus!",77));
69 tell_room(environment(this_object()),break_string(
70 Name(WER)+" kratzt "+livList[i]->name(WEM)
71 +" die Augen aus.",77),({this_object(),livList[i]}));
72 livList[i]->SetProp(P_BLIND,1);
73 }
74 return"";
75 }
76 Aufgerufen wird das ganze am Besten in einem Chat:
77 void create()
78 { ::create();
79 ...
80 SetProp(P_CHAT_CHANCE,10);
81 SetChats(20,({break_string(
82 "Nicht angreifen, sonst wirst Du noch blind!",77,
83 Name(WER)+" bruellt: "),
84 "@@blindThemAll@@"}));
85 }
86 Natuerlich sind auch noch mehr Funktionen und Meldungen als Chats
87 moeglich: Die zwei im Beispiel sind im Normalfall etwas wenig.
88
89
90SIEHE AUCH
91==========
92
93 SelectEnemy(), QueryEnemies(), IsEnemy(), P_GHOST, P_NO_ATTACK,
94 SetChats, P_CHAT_CHANCE
95
MG Mud User88f12472016-06-24 23:31:02 +020096Last modified: Thu May 27 15:01:48 1999 by Patryn