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