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