blob: f8b6a2ef90a9208bf4d31c9bb7f52803c0ebce81 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
2RegisterHelperNPC()
3*******************
4
5
6FUNKTION
7========
8
9 public int RegisterHelperNPC(object npc, int flags);
10
11
12DEFINIERT IN
13============
14
15 /std/player/combat.c
16 /sys/living/combat.h
17
18
19ARGUMENTE
20=========
21
22 object npc
23 Objekt des helfenden NPC, der angemeldet werden soll.
24
25 int flags
26 ver-oder-te Konstanten, die die Art des Helfer-NPC beschreiben (s.u.)
27
28
29BESCHREIBUNG
30============
31
32 Mit dieser Funktion wird ein einem Spieler helfender NPC im Spieler
33 angemeldet. Hierdurch kann spaeter herausgefunden werden, welche NPC
34 einem Spieler helfen und ggf. den von diesen verursachten Schaden im
35 Kampf dem Spieler zuzurechnen.
36
37 Die Flags sind eine der folgenden Konstanten oder eine beliebige durch
38 ver-oder-ung gebildete Kombination.
39
40 Momentan gibt es 2 Klassen von Helfer-NPC:
41 + GUILD_HELPER: der Helfer-NPC ist ein Gilden-NPC
42 + MISC_HELPER: der Helfer-NPC ist irgendein NPC, der nicht zu einer Gilde
43 gehoert.
44
45 Zusaetzlich zu den Klassen gibt es noch weitere Flags, die etwas ueber
46 den Helfer-NPC sagen:
47
48 + EXCLUSIVE_HELPER: dieser Helfer-NPC duldet keinen weiteren NPC der
49 gleichen Klasse.
50 + ACTIVE_HELPER: ist dieses Flag gesetzt, ist der NPC mehr als nur reiner
51 Schlagfaenger.
52
53 Wird EXCLUSIVE_HELPER gesetzt und es ist in der gleichen Klasse schon ein
54 NPC angemeldet, schlaegt die Registrierung fehl.
55 Ist in der gleichen Klasse bereits ein NPC mit EXCLUSIVE_HELPER
56 angemeldet, schlaegt die Registierung ebenfalls fehl, auch wenn der neue
57 NPC kein EXCLUSIVE_HELPER setzt.
58
59
60RUeCKGABEWERT
61=============
62
63 1, wenn die Registrierung erfolgreich war.
64 0 sonst. In diesem Fall darf der NPC dem Spieler NICHT helfen, weder
65 passiv (Schlagfaenger), noch aktiv.
66
67
68BEMERKUNGEN
69===========
70
71 Diese Funktion setzt bei der Erfolg die Property P_HELPER_NPC in <npc>
72 auf passende Werte.
73 Bitte auf gar keinen Fall die numerischen Werte der Konstanten fuer
74 <flags> nutzen, diese koennen sich jederzeit aendern.
75
76
77BEISPIELE
78=========
79
80 1. Ein nicht-exklusiver Gilden-NPC, der dem Spieler folgt.
81 if (spieler->RegisterHelperNPC(this_object(), GUILD_HELPER) == 1) {
82 move(environment(spieler), M_GO);
83 spieler->AddPursuer(this_object());
84 // meldung ausgebene...
85 }
86
87 2a. Ein exklusiver Nicht-Gilden-NPC
88 if (spieler->RegisterHelperNPC(this_object(),
89 MISC_HELPER|EXCLUSIVE_HELPER) == 1) {
90 move(environment(spieler), M_GO);
91 }
92
93 2b. Ein nicht-exklusiver Nicht-Gilde-NPC, der nach 2a. kommt.
94 if (spieler->RegisterHelperNPC(this_object(), MISC_HELPER) == 1) {
95 // ... wenn der NPC aus 2a noch existiert, trifft dies hier nie zu.
96 }
97
98 3. Ein exklusiver NPC, der weitere Gilden- und sonstige NPC ausschliesst
99 (Solche Kombination bitte mit der Gilden-Balance abstimmen.)
100 if (spieler->RegisterHelperNPC(this_object(),
101 MISC_HELPER|GUILD_HELPER|EXCLUSIVE_HELPER) == 1) {
102 move(environment(spieler), M_GO);
103 }
104
105 4. Die Registrierung ohne Klasse schlaegt fehl, z.B.:
106 spieler->RegisterHelperNPC(this_object(), 0);
107 spieler->RegisterHelperNPC(this_object(), EXCLUSIVE_HELPER);
108
109
110SIEHE AUCH
111==========
112
113 UnregisterHelperNPC()
114 P_HELPER_NPC