ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/events.pod
Revision: 1.41
Committed: Mon Oct 1 01:43:39 2012 UTC (11 years, 7 months ago) by root
Branch: MAIN
CVS Tags: rel-3_1, HEAD
Changes since 1.40: +7 -0 lines
Log Message:
nekosan 4ever

File Contents

# Content
1 =begin comment
2
3 This file is part of Deliantra, the Roguelike Realtime MMORPG.
4
5 Copyright (©) 2005,2006,2007,2008,2009 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
6
7 Deliantra is free software: you can redistribute it and/or modify it under
8 the terms of the Affero GNU General Public License as published by the
9 Free Software Foundation, either version 3 of the License, or (at your
10 option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the Affero GNU General Public License
18 and the GNU General Public License along with this program. If not, see
19 <http://www.gnu.org/licenses/>.
20
21 The authors can be reached via e-mail to <support@deliantra.net>
22
23 =end comment
24
25 =head1 DELIANTRA PLUG-IN EVENTS
26
27 This document briefly describes each plug-in event. It is also used to
28 generate the event-list itself, so is always complete. Be careful wehn
29 changing it, though.
30
31 =head2 NOTATION
32
33 The event description below uses a variant of the forth stack notation -
34 an opening parenthesis followed by the type of each parameter, optionally
35 followed by two dashes and the returning parameters. If the latter part is
36 missing, the event will be invoked but cannot change wether the event gets
37 processed.
38
39 Return values are given by overriding (in Perl by calling C<cf::override>)
40 with the return values, which will both stop further event processing and
41 tell the caller that it wants to override normal processing.
42
43 Even if no return values are supported, a plug-in can override (e.g. using
44 C<cf::override> in Perl) event processing, basically short-circuiting
45 it. For example, if you override from within a player BIRTH event,
46 nothing much will happen with respect to the built-in processing, but if
47 you override from within a player TELL event, the tell will be ignored
48 (presumably your plug-in took care of it).
49
50
51 =head2 ATTACHABLE EVENTS
52
53 No time to document this, screw me.
54
55 =head3 instantiate (object init-args...)
56
57 An object was instantiated.
58
59 For objects, this event occurs when a map is loaded for the first time
60 when it was instantiated from an archetype, or when the object was created
61 dynamically. The arguments are as specified in the C<attach> attribute of
62 the object or archetype.
63
64 This is useful to initialise any per-object state you might need.
65
66 =head3 reattach (object)
67
68 Invoked whenever attachments/plug-ins need to get reattached to the
69 object. This usually happens when it was loaded from disk, or when the
70 server was reloaded. This event will only be generated if the object has
71 attachments.
72
73 =head3 clone (object destination)
74
75 An object with _attached plugin_ is cloned, that is, a copy was made. The
76 copy automatically has all attachments the original object had. The perl
77 variables get copied in a shallow way (references are shared between
78 instances). If this is not the behaviour you need, you have to adjust the
79 B<destination> object as you see fit.
80
81 =head3 destroy (object -- )
82
83 Invoked when the deliantra object gets destroyed, and only when the object
84 has a handler for this event. This event can occur many times, as its
85 called when the in-memory object is destroyed, not when the object itself
86 dies.
87
88
89 =head2 OBJECT EVENTS
90
91 Object events always relate to a specific object, which is always the
92 first argument. Not all events get generated for every object, some are
93 specific to an object type.
94
95 =head3 add_bonus (item creator difficulty max_magic flags -- )
96
97 A basic item has been created (e.g. for shops, monsters drops etc.)
98 that needs bonus values applied. The B<creator> object is a template
99 object that can be used to inherit stuff (and can be NULL). Flags is a
100 combination of GT_ENVIRONMENT (???) or GT_STARTEQUIP (set FLAG_STARTEQUIP
101 on item or set its value to 0) or GT_MINIMAL (???)
102
103 When overriden, built-in bonus generation is skipped, otherwise
104 treasure generation continues as it would without this hook.
105
106 In general, if flags != 0 or creator != 0 you should just return and leave
107 item generation to the standard code.
108
109 =head3 remove (object -- )
110
111 Invoked before the object is removed from its environment.
112
113 =head3 insert (object -- )
114
115 Called after the object was inserted into a container or map.
116
117 =head3 tick (object -- )
118
119 Invoked whenever the object "ticks", i.e. has positive B<speed_left>. Only
120 during ticks should an objetc process any movement or other events.
121
122 =head3 kill (object hitter -- )
123
124 Invoked whenever an object was killed (hp < 0 caused by an attack) and is
125 about to get removed. Overriding processing will skip removal, but to do
126 this successfully you have to keep the object from dieing, otherwise the
127 event gets invoked again and again.
128
129 =head3 apply (object who -- applytype)
130
131 Invoked whenever the object is being applied in some way. The applytype is one of:
132
133 =over 4
134
135 =item B<0> player or monster can't apply objects of that type
136
137 =item B<1> has been applied, or there was an error applying the object
138
139 =item B<2> objects of that type can't be applied if not in inventory
140
141 =back
142
143 =head3 reset (object)
144
145 Invoked whenever the object is initialised on a map after it was
146 loaded. This can be used to emulate shop-floor behaviour for example.
147
148 =head3 throw (object thrower)
149
150 Invoked when an B<object> is thrown by B<thrower>.
151
152 =head3 stop (object -- )
153
154 Invoked when a thrown B<object> (arrow, other stuff) hits something and is
155 thus being "stopped".
156
157 =head3 can_apply (who object -- reason)
158
159 =head3 can_be_applied (object who -- reason)
160
161 Check wether the B<object> can be applied/readied/etc. by the
162 object B<who> and return reason otherwise. Reason is a bitset composed of
163 C<CAN_APPLY_*>-flags.
164
165 =head3 be_ready (object who -- success)
166
167 =head3 ready (who object -- success)
168
169 Invoked whenever an B<object> is being applied by object B<who>. See
170 I<can_apply> for an alternative if you just want to check wether something
171 can apply an object.
172
173 =head3 be_unready (object who -- deleted)
174
175 =head3 unready (who object -- deleted)
176
177 Unwield/unapply/unready the given spell/weapon/skill/etc. B<object>,
178 currently applied by B<who>. If your override, make sure you give 'who'
179 (if it is a player) an indication of whats wrong. Must return true if the
180 object was freed.
181
182 =head3 use_skill (skill who part direction stringarg -- )
183
184 Invoked whenever a skill is used by somebody or something.
185
186 =head3 cast_spell (spell owner casting_object direction stringarg -- )
187
188 Invoked whenever a given spell is cast by B<casting_object> (used by
189 B<owner>).
190
191 =head3 drop (object who -- )
192
193 Invoked whenever an item gets dropped by somebody, e.g. as a result of a
194 drop command.
195
196 =head3 drop_on (floor object who -- )
197
198 Invoked whenever some B<object> is being dropped on the B<floor> object.
199
200 =head3 say (object player message)
201
202 Invoked whenever the I<object> can hear a B<message> being said by
203 B<player> in its vicinity.
204
205 =head3 monster_move (monster enemy -- )
206
207 Invoked whenever the B<monster> tries to move, just after B<enemy> and
208 other parameters have been determined, but before movement is actually
209 executed.
210
211 =head3 attack (object hitter -- damage)
212
213 Object gets attacked by somebody - when overriden, should return the
214 damage that has been dealt.
215
216 =head3 skill_attack (attacker victim message skill -- success)
217
218 Invoked whenever an B<attacker> attacks B<victim> using a B<skill> (skill
219 can be C<undef>). B<message> is the message that describes the attack when
220 damage is done.
221
222 =head3 weapon_attack (weapon hitter victim)
223
224 Invoked whenever an object is used as a B<weapon> by B<hitter> to attack
225 B<victim>.
226
227 =head3 inscribe_note (book pl message skill -- )
228
229 Used whenever a book gets inscribed with a message.
230
231 =head3 infect (victim disease_type disease -- )
232
233 Invoked whenever an object is diseased. The disease object is already
234 inserted in object (the template disease object is C<disease_type>),
235 but no messages have been generated. If overriden, no messages will be
236 generated.
237
238 =head3 trigger (object who -- )
239
240 Invoked whenever a lever-like B<object> has been activated/triggered in some
241 (manual) way.
242
243 =head3 move_trigger (object victim originator -- )
244
245 Invoked whenever a trap-like B<object> has been activated, usually by
246 moving onto it. This includes not just traps, but also buttons, holes,
247 signs and similar stuff.
248
249 =head3 open (container who -- )
250
251 Invoked whenever a container gets opened. When overriden, the container will not
252 get opened, but you must tell op about the reason.
253
254 =head3 close (container who -- )
255
256 Invoked whenever a container gets closed. When overriden, the container
257 will not get closed, but you must tell op about the reason. This event
258 is not crash-safe, i.e. containers might be closed due to a server crash
259 without this event being invoked.
260
261 =head3 blocked_move (self who -- do_blocked)
262
263 Invoked when an C<who> tries to move to the same space as C<self>,
264 C<self>'s C<move_block> causes blocked movement for C<who> and nothing
265 else explicitly allows movement to this space.
266
267 Should return true when C<who> is blocked, i.e., should not be allowed to
268 move onto C<self>.
269
270 When not overriding, normal blocked_move (blocked_link) processing will
271 happen.
272
273
274 =head2 GLOBAL EVENTS
275
276 Global events have no relation to specific objects.
277
278 =head3 cleanup ()
279
280 Called when the server is cleaning up, just before it calls exit.
281
282 =head3 clock ()
283
284 Is invoked on every server tick, usually every 0.12 seconds.
285
286 =head3 resource_update ()
287
288 Is invoked after each time the server reloads its resources, which is
289 usually one of the earliest things it does when starting up.
290
291
292 =head2 PLAYER EVENTS
293
294 Player events always have a player object as first argument.
295
296 =head3 birth (player)
297
298 Invoked as very first thing after creating a player.
299
300 =head3 quit (player)
301
302 Invoked wheneever a player quits, before actually removing him/her.
303
304 =head3 kick (player params -- )
305
306 Invoked when the given player is being kicked, before the kick is
307 executed.
308
309 =head3 load (player -- )
310
311 Invoked whenever after a player has been loaded from disk, but before
312 actual activation/login.
313
314 =head3 save (player -- )
315
316 Invoked just before a player gets serialised.
317
318 =head3 save_done (player -- )
319
320 Invoked just after a player was serialised.
321
322 =head3 connect (player -- )
323
324 Invoked just after the player object was connected to a client.
325
326 =head3 disconnect (player -- )
327
328 Invoked just before the player gets disconnected from the client.
329
330 =head3 login (player)
331
332 Invoked whenever a player logs in.
333
334 =head3 logout (player cleanly -- )
335
336 Invoked whenever a player logs out, gets disconnected etc.
337
338 =head3 death (player)
339
340 Invoked whenever a player dies, before the death actually gets processed.
341
342 =head3 map_change (player newmap x y -- )
343
344 Invoked before a player moves from one map to another, can override the movement.
345
346 =head3 region_change (player newregion oldregion -- )
347
348 Invoked when a player entered a new region. Cannot be overriden.
349
350 =head3 command (player command args -- time)
351
352 Execute a user command sent by the client - this is invoked for I<all>
353 command,s so should not normally be hooked.
354
355 =head3 unknown_command (player command args -- time)
356
357 Execute a user command sent by the client that isn't known to the
358 server. Programmable plug-ins usually handle this event internally.
359
360 =head3 extcmd (player string)
361
362 Invoked whenever a client issues the C<extcmd> protocol command.
363 Programmable plug-ins usually handle this event internally.
364
365 =head3 move (player direction -- )
366
367 Called whenever the player is supposed to move or attack. The handler
368 must handle the cases of speed_left or weapon_sp_left being negative,
369 fire being on, is responsible for decreaseing the speed_left value
370 on successful moves etc. etc.. When overriden, must return a boolean
371 indicating wether a move could be effected.
372
373 =head3 pray_altar (player altar skill -- )
374
375 Invoked whenever the B<player> prays over an B<altar>, using the given B<skill>.
376
377 =head3 tell (player name message -- )
378
379 Invoked whenever the player uses the B<tell> or B<reply> command, before
380 it gets processed.
381
382 =head3 told (player player message -- )
383
384 Invoked right before a message is being told to a player using B<tell> or
385 B<reply>.
386
387 =head3 say (player message --)
388
389 =head3 chat (player message --)
390
391 =head3 shout (player message --)
392
393 Invoked whenever the player uses the B<say>, B<chat> or B<shout> command,
394 before it gets processed.
395
396 =head3 build (player builder map x y checkok --)
397
398 Players tries to build using C<builder> at (map+x+y). Is invoked after
399 the usual map sanity checks, so the coordinates are valid. The boolean
400 C<checkok> is true only if the build code thinks it is "ok" to build at
401 that space, and normally you should only build when it is true.
402
403
404 =head2 MAP EVENTS
405
406 These events are generally dependent on a map and thus all have a map
407 as first argument.
408
409 =head3 instantiate (map)
410
411 Original B<map> has been loaded (e.g. on first use, or after a map
412 reset).
413
414 =head3 swapin (map)
415
416 Invoked when a previously swapped-out temporary B<map> has been loaded again.
417
418 =head3 swapout (map)
419
420 Invoked after a B<map> has been swapped out to disk.
421
422 =head3 reset (map)
423
424 Invoked when a B<map> gets reset.
425
426 =head3 clean (map)
427
428 Invoked when a temporary B<map> gets deleted on-disk.
429
430 =head3 enter (map player x y -- )
431
432 Invoked whenever a player tries to enter the B<map>, while he/she is still
433 on the old map. Overriding means the player won't be able to enter, and,
434 if newmap/x/y are given, will be redirected to that map instead.
435
436 =head3 leave (map player -- )
437
438 Invoked whenever a player tries to leave the B<map>. Overriding means the
439 player won't be able to leave.
440
441 =head3 trigger (map connection state what? who? -- )
442
443 Invoked whenever something activates a B<connection> on the B<map>. If B<state>
444 is true the connection was 'state' and if false it is 'released'.
445
446
447 =head2 CLIENT EVENTS
448
449 These events are very similar to player events, but they are might be
450 handled asynchronously as soon as the command reaches the server, even when
451 the player hasn't logged in yet (meaning there is no player yet).
452
453 =head3 connect (client -- )
454
455 Called as soon as a new connection to the server is established and the
456 socket has been configured.
457
458 =head3 version (client string -- )
459
460 Called as soon as the version command from the client is received
461 (normally the very first command sent).
462
463 =head3 setup (client string -- )
464
465 Client sent the setup command to negotiate parameters. Handling is
466 mandatory and done by F<login.ext>.
467
468 =head3 addme (client -- )
469
470 The client sent an addme, thus ending the initial handshaking. Handling is mandatory
471 and done by F<login.ext>.
472
473 =head3 reply (client replystring -- )
474
475 Called when the client submits a reply in the ST_CUSTOM state. Usually
476 handled internally by language plugins.
477
478 =head3 exticmd (client string -- )
479
480 Like C<extcmd>, but can be called before a player has logged in.
481
482 Programmable plug-ins usually handle this event internally.
483
484 =head3 client_destroy (client -- )
485
486 Invoked when the client gets destroyed.
487
488