ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/events.pod
Revision: 1.9
Committed: Thu Dec 21 06:12:37 2006 UTC (17 years, 5 months ago) by root
Branch: MAIN
Changes since 1.8: +18 -2 lines
Log Message:
- made client a first-class crossfire-perl object
  (its attachable), but perl support is missing.
- added some client events
- fixed reply not working after logout

File Contents

# Content
1 =head1 CROSSFIRE+ PLUG-IN EVENTS
2
3 This document briefly describes each plug-in event. It is also used to
4 generate the event-list itself, so is always complete. Be careful wehn
5 changing it, though.
6
7 =head2 NOTATION
8
9 the event description below uses a variant of the forth stack notation -
10 an opening parenthesis followed by the type of each parameter, optionally
11 followed by two dashes and the returning parameters. If the latter is
12 missing, the event will be invoked but cannot change wether the event gets
13 processed.
14
15 If it is specified (even if no return values are supported), a plug-in
16 can override (e.g. using C<cf::override> in Perl) event processing,
17 basically short-circuiting it. For example, if you override from within a
18 player BIRTH event, nothing much will happen with respect to the built-in
19 processing, but if you override from within a player TELL event, the tell
20 will be ignored (presumably your plug-in took care of it).
21
22
23 =head2 OBJECT EVENTS
24
25 Object events always relate to a specific object, which is always the
26 first argument. Not all events get generated for every object, some are
27 specific to an object type.
28
29 =head3 instantiate (object init-args...)
30
31 An archetype was instantiated into an object. This event occurs when
32 a map is loaded for the first time, or when the object was created
33 dynamically. The arguments are as specified in the C<attach> attribute of
34 the object or archetype.
35
36 This is useful to initialise any per-object state you might need.
37
38 =head3 reattach (object)
39
40 Invoked whenever attachments/plug-ins need to get reattached to the
41 object. This usually happens when it was loaded from disk, or when the
42 server was reloaded. This event will only be generated if the object has
43 attachments.
44
45 =head3 clone (object destination)
46
47 An object with _attached extension_ is cloned, that is, a copy was
48 made. The copy automatically has all attachments the original object
49 had. The perl variables get copied in a shallow way (references are shared
50 between instances). If this is not the behaviour you need, you have to
51 adjust the B<destination> object as you see fit.
52
53 =head3 add_bonus (item creator difficulty max_magic flags)
54
55 A basic item has been created (e.g. for shops, monsters drops etc.)
56 that needs bonus values applied. The B<creator> object is a template
57 object that can be used to inherit stuff (and can be NULL). Flags is a
58 combination of GT_ENVIRONMENT (???) or GT_STARTEQUIP (set FLAG_STARTEQUIP
59 on item or set its value to 0) or GT_MINIMAL (???)
60
61 When overriden, built-in bonus generation is skipped, otherwise
62 treasure generation continues as it would without this hook.
63
64 In general, if flags != 0 or creator != 0 you should just return and leave
65 item generation to the standard code.
66
67 =head3 destroy (object)
68
69 Invoked when the crossfire object gets destroyed, and only when the object
70 has a handler for this event. This event can occur many times, as its
71 called when the in-memory object is destroyed, not when the object itself
72 dies.
73
74 =head3 tick (object)
75
76 Invoked whenever the object "ticks", i.e. has positive B<speed_left>. Only
77 during ticks should an objetc process any movement or other events.
78
79 =head3 kill (object hitter -- )
80
81 Invoked whenever an object is dead and about to get removed. Overriding
82 processing will skip removal, but to do this successfully you have to
83 objetc from dieing, otherwise the event gets invoked again and again.
84
85 =head3 apply (object who -- applytype)
86
87 Invoked whenever the object is being applied in some way. The applytype is one of:
88
89 =over 4
90
91 =item B<0> player or monster can't apply objects of that type
92
93 =item B<1> has been applied, or there was an error applying the object
94
95 =item B<2> objects of that type can't be applied if not in inventory
96
97 =back
98
99 =head3 throw (object thrower)
100
101 Invoked when an B<object> is thrown by B<thrower>.
102
103 =head3 stop (object -- )
104
105 Invoked when a thrown B<object> (arrow, other stuff) hits something and is
106 thus being "stopped".
107
108 =head3 can_apply (who object -- reason)
109
110 =head3 can_be_applied (object who -- reason)
111
112 Check wether the B<object> can be applied/readied/etc. by the
113 object B<who> and return reason otherwise. Reason is a bitset composed of
114 C<CAN_APPLY_*>-flags.
115
116 =head3 be_ready (object who -- success)
117
118 =head3 ready (who object -- success)
119
120 Invoked whenever an B<object> is being applied by object B<who>. See
121 I<can_apply> for an alternative if you just want to check wether something
122 can apply an object.
123
124 =head3 be_unready (object who -- deleted)
125
126 =head3 unready (who object -- deleted)
127
128 Unwield/unapply/unready the given spell/weapon/skill/etc. B<object>,
129 currently applied by B<who>. If your override, make sure you give 'who'
130 (if it is a player) an indication of whats wrong. Must return true if the
131 object was freed.
132
133 =head3 use_skill (skill who part direction strignarg -- )
134
135 Invoked whenever a skill is used by somebody or something.
136
137 =head3 cast_spell (spell casting_object owner direction stringarg -- )
138
139 Invoked whenever a given spell is cast by B<casting_object> (used by
140 B<owner>).
141
142 =head3 drop (object who -- )
143
144 Invoked whenever an item gets dropped by somebody, e.g. as a result of a
145 drop command.
146
147 =head3 drop_on (floor object who -- )
148
149 Invoked whenever some B<object> is being dropped on the B<floor> object.
150
151 =head3 say (object player message)
152
153 Invoked whenever the I<object> can hear a B<message> being said by
154 B<player> in its vicinity.
155
156 =head3 monster_move (monster enemy -- )
157
158 Invoked whenever the B<monster> tries to move, just after B<enemy> and
159 other parameters have been determined, but before movement is actually
160 executed.
161
162 =head3 attack (object hitter -- damage)
163
164 Object gets attacked by somebody - when overriden, should return the
165 damage that has been dealt.
166
167 =head3 skill_attack (attacker victim message skill -- success)
168
169 Invoked whenever an B<attacker> attacks B<victim> using a B<skill> (skill
170 cna be C<undef>). B<message> is the message that describes the attack when
171 damage is done.
172
173 =head3 weapon_attack (weapon hitter victim)
174
175 Invoked whenever an object is used as a B<weapon> by B<hitter> to attack
176 B<victim>.
177
178 =head3 inscribe_note (book pl message skill -- )
179
180 Used whenever a book gets inscribed with a message.
181
182 =head3 trigger (object who -- )
183
184 Invoked whenever a lever-like B<object> has been activated/triggered in some
185 (manual) way.
186
187 =head3 move_trigger (object victim originator -- )
188
189 Invoked whenever a trap-like B<object> has been activated, usually by
190 moving onto it. This includes not just traps, but also buttons, holes,
191 signs and similar stuff.
192
193 =head3 close (container who -- )
194
195 Invoked whenever a container gets closed (this event is not yet reliable!).
196
197
198 =head2 GLOBAL EVENTS
199
200 Global events have no relation to specific objects.
201
202 =head3 cleanup ()
203
204 Called when the server is cleaning up, just before it calls exit.
205
206 =head3 clock ( )
207
208 Is invoked on every server tick, usually every 0.12 seconds.
209
210
211 =head2 PLAYER EVENTS
212
213 Player events always have a player object as first argument.
214
215 =head3 reattach (player)
216
217 Invoked whenever attachments/plug-ins need to get reattached to the player
218 object. This usually happens when the player gets loaded from disk, or
219 when the server is reloaded.
220
221 =head3 birth (player)
222
223 Invoked as very first thing after creating a player.
224
225 =head3 quit (player)
226
227 Invoked wheneever a player quits, before actually removing him/her.
228
229 =head3 kick (player params -- )
230
231 Invoked when the given plaer is being kicked, before the kick is executed.
232
233 =head3 load (player)
234
235 Invoked whenever a player has been loaded from disk, but before
236 actual login.
237
238 =head3 save (player)
239
240 Invoked just before a player gets saved.
241
242 =head3 login (player)
243
244 Invoked whenever a player logs in.
245
246 =head3 logout (player)
247
248 Invoked whenever a player logs out, gets disconnected etc.
249
250 =head3 death (player)
251
252 Invoked whenever a player dies, before the death actually gets processed.
253
254 =head3 map_change (player newmap x y -- )
255
256 Invoked before a player moves from one map to another, can override the movement.
257
258 =head3 command (player command args -- time)
259
260 Execute a user command send by the client. Programmable plug-ins usually
261 handle this event internally.
262
263 =head3 extcmd (player string)
264
265 Invoked whenever a client issues the C<extcmd> protocol command.
266 Programmable plug-ins usually handle this event internally.
267
268 =head3 move (player direction -- )
269
270 =head3 pray_altar (player altar skill -- )
271
272 Invoked whenever the B<player> prays over an B<altar>, using the given B<skill>.
273
274 =head3 tell (player name message -- )
275
276 Invoked whenever the player uses the B<tell> or B<reply> command, before
277 it gets processed.
278
279 =head3 say (player message --)
280
281 =head3 chat (player message --)
282
283 =head3 shout (player message --)
284
285 Invoked whenever the player uses the B<say>, B<chat> or B<shout> command,
286 before it gets processed.
287
288
289 =head2 MAP EVENTS
290
291 These events are generally dependent on a map and thus all have a map
292 as first argument.
293
294 =head3 instantiate (map)
295
296 Original B<map> has been loaded (e.g. on first use, or after a map
297 reset).
298
299 =head3 reattach (map)
300
301 Invoked whenever attachments/plug-ins need to get reattached to the
302 B<map>. This usually happens when the map was loaded from disk, or when the
303 server was reloaded.
304
305 =head3 destroy (map)
306
307 Invoked when the map object gets destroyed, and only when the map object
308 has a handler for this event. This event can occur many times, as its
309 called when the in-memory object is destroyed, not when the object itself
310 dies.
311
312 =head3 swapin (map)
313
314 Invoked when a previously swapped-out temporary B<map> has been loaded again.
315
316 =head3 swapout (map)
317
318 Invoked after a B<map> has been swapped out to disk.
319
320 =head3 reset (map)
321
322 Invoked when a B<map> gets reset.
323
324 =head3 clean (map)
325
326 Invoked when a temporary B<map> gets deleted on-disk.
327
328 =head3 enter (map player x y -- )
329
330 Invoked whenever a player tries to enter the B<map>, while he/she is still
331 on the old map. Overriding means the player won't be able to enter, and,
332 if newmap/x/y are given, will be redirected to that map instead.
333
334 =head3 leave (map player -- )
335
336 Invoked whenever a player tries to leave the B<map>. Overriding means the
337 player won't be able to leave.
338
339 =head3 trigger (map connection state -- )
340
341 Invoked whenever something activates a B<connection> on the B<map>. If B<state>
342 is true the connection was 'state' and if false it is 'released'.
343
344
345 =head2 CLIENT EVENTS
346
347 These events are very similar to player events, but they are might be
348 handled asynchronously as soon as the command reaches the server, even when
349 the player hasn't logged in yet (meaning there is no player yet).
350
351 =head3 connect (client -- )
352
353 Called as soon as a new connection to the server is established. Should
354 not be overriden.
355
356 =head3 addme (client -- )
357
358 The client sent an addme, thus ending the initial handshaking. If overriden, the server
359 will not send any response.
360
361 =head3 reattach (client -- )
362
363 Invoked whenever attachments/plug-ins need to get reattached to the
364 object. This usually happens when server was reloaded. This event will
365 only be generated if the object has attachments.
366
367 =head3 exticmd (client string -- )
368
369 Like C<extcmd>, but can be called before a player has logged in.
370
371 Programmable plug-ins usually handle this event internally.
372