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

# User Rev Content
1 root 1.23 =head1 DELIANTRA PLUG-IN EVENTS
2 pippijn 1.1
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 root 1.12 =head2 ATTACHABLE EVENTS
24 pippijn 1.1
25 root 1.12 No time to document this, screw me.
26 pippijn 1.1
27     =head3 instantiate (object init-args...)
28    
29 root 1.12 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 pippijn 1.1 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 root 1.12 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 root 1.23 Invoked when the deliantra object gets destroyed, and only when the object
56 root 1.12 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 pippijn 1.1
67 root 1.20 =head3 add_bonus (item creator difficulty max_magic flags -- )
68 root 1.6
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 root 1.12 =head3 remove (object -- )
82    
83     Invoked before the object is removed from its environment.
84    
85     =head3 insert (object -- )
86 pippijn 1.1
87 root 1.12 Called after the object was inserted into a container or map.
88 pippijn 1.1
89 root 1.12 =head3 tick (object -- )
90 pippijn 1.1
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 root 1.25 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 pippijn 1.1
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 elmex 1.26 =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 pippijn 1.1 =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 root 1.19 =head3 use_skill (skill who part direction stringarg -- )
156 pippijn 1.1
157     Invoked whenever a skill is used by somebody or something.
158    
159 root 1.19 =head3 cast_spell (spell owner casting_object direction stringarg -- )
160 pippijn 1.1
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 root 1.15 =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 pippijn 1.1 =head3 close (container who -- )
221    
222 root 1.15 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 pippijn 1.1
227    
228     =head2 GLOBAL EVENTS
229    
230     Global events have no relation to specific objects.
231    
232 root 1.3 =head3 cleanup ()
233    
234     Called when the server is cleaning up, just before it calls exit.
235    
236 root 1.24 =head3 clock ()
237 pippijn 1.1
238     Is invoked on every server tick, usually every 0.12 seconds.
239    
240 root 1.24 =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 root 1.3
246 pippijn 1.1 =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 root 1.14 Invoked when the given player is being kicked, before the kick is
261     executed.
262 pippijn 1.1
263 root 1.14 =head3 load (player -- )
264 pippijn 1.1
265     Invoked whenever a player has been loaded from disk, but before
266     actual login.
267    
268 root 1.14 =head3 save (player -- )
269 pippijn 1.1
270 root 1.14 Invoked just before a player gets serialised.
271 pippijn 1.1
272 root 1.14 =head3 save_done (player -- )
273 root 1.13
274 root 1.14 Invoked just after a player was serialised.
275 root 1.13
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 pippijn 1.1 =head3 login (player)
285    
286     Invoked whenever a player logs in.
287    
288 root 1.21 =head3 logout (player cleanly -- )
289 pippijn 1.1
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 root 1.4 =head3 map_change (player newmap x y -- )
297 pippijn 1.1
298 root 1.4 Invoked before a player moves from one map to another, can override the movement.
299 pippijn 1.1
300 root 1.22 =head3 region_change (player newregion oldregion -- )
301    
302     Invoked when a player entered a new region. Cannot be overriden.
303    
304 root 1.7 =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 pippijn 1.1 =head3 extcmd (player string)
310    
311 root 1.7 Invoked whenever a client issues the C<extcmd> protocol command.
312     Programmable plug-ins usually handle this event internally.
313 pippijn 1.1
314     =head3 move (player direction -- )
315    
316 root 1.18 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 pippijn 1.1 =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 pippijn 1.16 =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 pippijn 1.1 =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 root 1.4 =head3 enter (map player x y -- )
373 pippijn 1.1
374 root 1.4 Invoked whenever a player tries to enter the B<map>, while he/she is still
375 root 1.5 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 pippijn 1.1
378 root 1.4 =head3 leave (map player -- )
379 pippijn 1.1
380 root 1.4 Invoked whenever a player tries to leave the B<map>. Overriding means the
381     player won't be able to leave.
382 pippijn 1.1
383 root 1.9 =head3 trigger (map connection state -- )
384 pippijn 1.1
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 root 1.5
388 root 1.8
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 root 1.9 =head3 connect (client -- )
396    
397     Called as soon as a new connection to the server is established. Should
398     not be overriden.
399    
400 root 1.17 =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 root 1.9 =head3 addme (client -- )
406    
407 root 1.17 The client sent an addme, thus ending the initial handshaking. Handling is mandatory
408     and done by F<login.ext>.
409 root 1.9
410 root 1.10 =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 root 1.9 =head3 exticmd (client string -- )
416 root 1.8
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