ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/events.pod
Revision: 1.26
Committed: Mon Jul 14 10:26:43 2008 UTC (15 years, 10 months ago) by elmex
Branch: MAIN
Changes since 1.25: +6 -0 lines
Log Message:
added auto_apply event and shop ring attachments

File Contents

# Content
1 =head1 DELIANTRA 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 ATTACHABLE EVENTS
24
25 No time to document this, screw me.
26
27 =head3 instantiate (object init-args...)
28
29 An object was instantiated.
30
31 For objects, this event occurs when a map is loaded for the first time
32 when it was instantiated from an archetype, 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 plugin_ is cloned, that is, a copy was made. The
48 copy automatically has all attachments the original object had. The perl
49 variables get copied in a shallow way (references are shared between
50 instances). If this is not the behaviour you need, you have to adjust the
51 B<destination> object as you see fit.
52
53 =head3 destroy (object -- )
54
55 Invoked when the deliantra object gets destroyed, and only when the object
56 has a handler for this event. This event can occur many times, as its
57 called when the in-memory object is destroyed, not when the object itself
58 dies.
59
60
61 =head2 OBJECT EVENTS
62
63 Object events always relate to a specific object, which is always the
64 first argument. Not all events get generated for every object, some are
65 specific to an object type.
66
67 =head3 add_bonus (item creator difficulty max_magic flags -- )
68
69 A basic item has been created (e.g. for shops, monsters drops etc.)
70 that needs bonus values applied. The B<creator> object is a template
71 object that can be used to inherit stuff (and can be NULL). Flags is a
72 combination of GT_ENVIRONMENT (???) or GT_STARTEQUIP (set FLAG_STARTEQUIP
73 on item or set its value to 0) or GT_MINIMAL (???)
74
75 When overriden, built-in bonus generation is skipped, otherwise
76 treasure generation continues as it would without this hook.
77
78 In general, if flags != 0 or creator != 0 you should just return and leave
79 item generation to the standard code.
80
81 =head3 remove (object -- )
82
83 Invoked before the object is removed from its environment.
84
85 =head3 insert (object -- )
86
87 Called after the object was inserted into a container or map.
88
89 =head3 tick (object -- )
90
91 Invoked whenever the object "ticks", i.e. has positive B<speed_left>. Only
92 during ticks should an objetc process any movement or other events.
93
94 =head3 kill (object hitter -- )
95
96 Invoked whenever an object was killed (hp < 0 caused by an attack) and is
97 about to get removed. Overriding processing will skip removal, but to do
98 this successfully you have to keep the object from dieing, otherwise the
99 event gets invoked again and again.
100
101 =head3 apply (object who -- applytype)
102
103 Invoked whenever the object is being applied in some way. The applytype is one of:
104
105 =head3 auto_apply (object)
106
107 Invoked whenever the object is automatically applied (as for example shop tiles
108 are on map instantiation). See also the 'auto_apply' flag to enforce auto apply on
109 any object.
110
111 =over 4
112
113 =item B<0> player or monster can't apply objects of that type
114
115 =item B<1> has been applied, or there was an error applying the object
116
117 =item B<2> objects of that type can't be applied if not in inventory
118
119 =back
120
121 =head3 throw (object thrower)
122
123 Invoked when an B<object> is thrown by B<thrower>.
124
125 =head3 stop (object -- )
126
127 Invoked when a thrown B<object> (arrow, other stuff) hits something and is
128 thus being "stopped".
129
130 =head3 can_apply (who object -- reason)
131
132 =head3 can_be_applied (object who -- reason)
133
134 Check wether the B<object> can be applied/readied/etc. by the
135 object B<who> and return reason otherwise. Reason is a bitset composed of
136 C<CAN_APPLY_*>-flags.
137
138 =head3 be_ready (object who -- success)
139
140 =head3 ready (who object -- success)
141
142 Invoked whenever an B<object> is being applied by object B<who>. See
143 I<can_apply> for an alternative if you just want to check wether something
144 can apply an object.
145
146 =head3 be_unready (object who -- deleted)
147
148 =head3 unready (who object -- deleted)
149
150 Unwield/unapply/unready the given spell/weapon/skill/etc. B<object>,
151 currently applied by B<who>. If your override, make sure you give 'who'
152 (if it is a player) an indication of whats wrong. Must return true if the
153 object was freed.
154
155 =head3 use_skill (skill who part direction stringarg -- )
156
157 Invoked whenever a skill is used by somebody or something.
158
159 =head3 cast_spell (spell owner casting_object direction stringarg -- )
160
161 Invoked whenever a given spell is cast by B<casting_object> (used by
162 B<owner>).
163
164 =head3 drop (object who -- )
165
166 Invoked whenever an item gets dropped by somebody, e.g. as a result of a
167 drop command.
168
169 =head3 drop_on (floor object who -- )
170
171 Invoked whenever some B<object> is being dropped on the B<floor> object.
172
173 =head3 say (object player message)
174
175 Invoked whenever the I<object> can hear a B<message> being said by
176 B<player> in its vicinity.
177
178 =head3 monster_move (monster enemy -- )
179
180 Invoked whenever the B<monster> tries to move, just after B<enemy> and
181 other parameters have been determined, but before movement is actually
182 executed.
183
184 =head3 attack (object hitter -- damage)
185
186 Object gets attacked by somebody - when overriden, should return the
187 damage that has been dealt.
188
189 =head3 skill_attack (attacker victim message skill -- success)
190
191 Invoked whenever an B<attacker> attacks B<victim> using a B<skill> (skill
192 cna be C<undef>). B<message> is the message that describes the attack when
193 damage is done.
194
195 =head3 weapon_attack (weapon hitter victim)
196
197 Invoked whenever an object is used as a B<weapon> by B<hitter> to attack
198 B<victim>.
199
200 =head3 inscribe_note (book pl message skill -- )
201
202 Used whenever a book gets inscribed with a message.
203
204 =head3 trigger (object who -- )
205
206 Invoked whenever a lever-like B<object> has been activated/triggered in some
207 (manual) way.
208
209 =head3 move_trigger (object victim originator -- )
210
211 Invoked whenever a trap-like B<object> has been activated, usually by
212 moving onto it. This includes not just traps, but also buttons, holes,
213 signs and similar stuff.
214
215 =head3 open (container who -- )
216
217 Invoked whenever a container gets opened. When overriden, the container will not
218 get opened, but you must tell op about the reason.
219
220 =head3 close (container who -- )
221
222 Invoked whenever a container gets closed. When overriden, the container
223 will not get closed, but you must tell op about the reason. This event
224 is not crash-safe, i.e. containers might be closed due to a server crash
225 without this event being invoked.
226
227
228 =head2 GLOBAL EVENTS
229
230 Global events have no relation to specific objects.
231
232 =head3 cleanup ()
233
234 Called when the server is cleaning up, just before it calls exit.
235
236 =head3 clock ()
237
238 Is invoked on every server tick, usually every 0.12 seconds.
239
240 =head3 resource_update ()
241
242 Is invoked after each time the server reloads its resources, which is
243 usually one of the earliest things it does when starting up.
244
245
246 =head2 PLAYER EVENTS
247
248 Player events always have a player object as first argument.
249
250 =head3 birth (player)
251
252 Invoked as very first thing after creating a player.
253
254 =head3 quit (player)
255
256 Invoked wheneever a player quits, before actually removing him/her.
257
258 =head3 kick (player params -- )
259
260 Invoked when the given player is being kicked, before the kick is
261 executed.
262
263 =head3 load (player -- )
264
265 Invoked whenever a player has been loaded from disk, but before
266 actual login.
267
268 =head3 save (player -- )
269
270 Invoked just before a player gets serialised.
271
272 =head3 save_done (player -- )
273
274 Invoked just after a player was serialised.
275
276 =head3 connect (player -- )
277
278 Invoked just after the player object was connected to a client.
279
280 =head3 disconnect (player -- )
281
282 Invoked just before the player gets disconnected from the client.
283
284 =head3 login (player)
285
286 Invoked whenever a player logs in.
287
288 =head3 logout (player cleanly -- )
289
290 Invoked whenever a player logs out, gets disconnected etc.
291
292 =head3 death (player)
293
294 Invoked whenever a player dies, before the death actually gets processed.
295
296 =head3 map_change (player newmap x y -- )
297
298 Invoked before a player moves from one map to another, can override the movement.
299
300 =head3 region_change (player newregion oldregion -- )
301
302 Invoked when a player entered a new region. Cannot be overriden.
303
304 =head3 command (player command args -- time)
305
306 Execute a user command send by the client. Programmable plug-ins usually
307 handle this event internally.
308
309 =head3 extcmd (player string)
310
311 Invoked whenever a client issues the C<extcmd> protocol command.
312 Programmable plug-ins usually handle this event internally.
313
314 =head3 move (player direction -- )
315
316 Called whenever the player is supposed to move or attack. The handler
317 must handle the cases of speed_left or weapon_sp_left being negative,
318 fire being on, is responsible for decreaseing the speed_left value
319 on successful moves etc. etc.. When overriden, must return a boolean
320 indicating wether a move could be effected.
321
322 =head3 pray_altar (player altar skill -- )
323
324 Invoked whenever the B<player> prays over an B<altar>, using the given B<skill>.
325
326 =head3 tell (player name message -- )
327
328 Invoked whenever the player uses the B<tell> or B<reply> command, before
329 it gets processed.
330
331 =head3 told (player player message -- )
332
333 Invoked right before a message is being told to a player using B<tell> or
334 B<reply>.
335
336 =head3 say (player message --)
337
338 =head3 chat (player message --)
339
340 =head3 shout (player message --)
341
342 Invoked whenever the player uses the B<say>, B<chat> or B<shout> command,
343 before it gets processed.
344
345
346 =head2 MAP EVENTS
347
348 These events are generally dependent on a map and thus all have a map
349 as first argument.
350
351 =head3 instantiate (map)
352
353 Original B<map> has been loaded (e.g. on first use, or after a map
354 reset).
355
356 =head3 swapin (map)
357
358 Invoked when a previously swapped-out temporary B<map> has been loaded again.
359
360 =head3 swapout (map)
361
362 Invoked after a B<map> has been swapped out to disk.
363
364 =head3 reset (map)
365
366 Invoked when a B<map> gets reset.
367
368 =head3 clean (map)
369
370 Invoked when a temporary B<map> gets deleted on-disk.
371
372 =head3 enter (map player x y -- )
373
374 Invoked whenever a player tries to enter the B<map>, while he/she is still
375 on the old map. Overriding means the player won't be able to enter, and,
376 if newmap/x/y are given, will be redirected to that map instead.
377
378 =head3 leave (map player -- )
379
380 Invoked whenever a player tries to leave the B<map>. Overriding means the
381 player won't be able to leave.
382
383 =head3 trigger (map connection state -- )
384
385 Invoked whenever something activates a B<connection> on the B<map>. If B<state>
386 is true the connection was 'state' and if false it is 'released'.
387
388
389 =head2 CLIENT EVENTS
390
391 These events are very similar to player events, but they are might be
392 handled asynchronously as soon as the command reaches the server, even when
393 the player hasn't logged in yet (meaning there is no player yet).
394
395 =head3 connect (client -- )
396
397 Called as soon as a new connection to the server is established. Should
398 not be overriden.
399
400 =head3 setup (client string -- )
401
402 Client sent the setup command to negotiate parameters. Handling is
403 mandatory and done by F<login.ext>.
404
405 =head3 addme (client -- )
406
407 The client sent an addme, thus ending the initial handshaking. Handling is mandatory
408 and done by F<login.ext>.
409
410 =head3 reply (client replystring -- )
411
412 Called when the client submits a reply in the ST_CUSTOM state. Usually
413 handled internally by language plugins.
414
415 =head3 exticmd (client string -- )
416
417 Like C<extcmd>, but can be called before a player has logged in.
418
419 Programmable plug-ins usually handle this event internally.
420