ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/events.pod
Revision: 1.3
Committed: Tue Sep 12 23:22:32 2006 UTC (17 years, 8 months ago) by root
Branch: MAIN
Changes since 1.2: +5 -0 lines
Log Message:
implement cleanup signal

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 destroy (object)
54
55 Invoked when the crossfire 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 =head3 tick (object)
61
62 Invoked whenever the object "ticks", i.e. has positive B<speed_left>. Only
63 during ticks should an objetc process any movement or other events.
64
65 =head3 kill (object hitter -- )
66
67 Invoked whenever an object is dead and about to get removed. Overriding
68 processing will skip removal, but to do this successfully you have to
69 objetc from dieing, otherwise the event gets invoked again and again.
70
71 =head3 apply (object who -- applytype)
72
73 Invoked whenever the object is being applied in some way. The applytype is one of:
74
75 =over 4
76
77 =item B<0> player or monster can't apply objects of that type
78
79 =item B<1> has been applied, or there was an error applying the object
80
81 =item B<2> objects of that type can't be applied if not in inventory
82
83 =back
84
85 =head3 throw (object thrower)
86
87 Invoked when an B<object> is thrown by B<thrower>.
88
89 =head3 stop (object -- )
90
91 Invoked when a thrown B<object> (arrow, other stuff) hits something and is
92 thus being "stopped".
93
94 =head3 can_apply (who object -- reason)
95
96 =head3 can_be_applied (object who -- reason)
97
98 Check wether the B<object> can be applied/readied/etc. by the
99 object B<who> and return reason otherwise. Reason is a bitset composed of
100 C<CAN_APPLY_*>-flags.
101
102 =head3 be_ready (object who -- success)
103
104 =head3 ready (who object -- success)
105
106 Invoked whenever an B<object> is being applied by object B<who>. See
107 I<can_apply> for an alternative if you just want to check wether something
108 can apply an object.
109
110 =head3 be_unready (object who -- deleted)
111
112 =head3 unready (who object -- deleted)
113
114 Unwield/unapply/unready the given spell/weapon/skill/etc. B<object>,
115 currently applied by B<who>. If your override, make sure you give 'who'
116 (if it is a player) an indication of whats wrong. Must return true if the
117 object was freed.
118
119 =head3 use_skill (skill who part direction strignarg -- )
120
121 Invoked whenever a skill is used by somebody or something.
122
123 =head3 cast_spell (spell casting_object owner direction stringarg -- )
124
125 Invoked whenever a given spell is cast by B<casting_object> (used by
126 B<owner>).
127
128 =head3 drop (object who -- )
129
130 Invoked whenever an item gets dropped by somebody, e.g. as a result of a
131 drop command.
132
133 =head3 drop_on (floor object who -- )
134
135 Invoked whenever some B<object> is being dropped on the B<floor> object.
136
137 =head3 say (object player message)
138
139 Invoked whenever the I<object> can hear a B<message> being said by
140 B<player> in its vicinity.
141
142 =head3 monster_move (monster enemy -- )
143
144 Invoked whenever the B<monster> tries to move, just after B<enemy> and
145 other parameters have been determined, but before movement is actually
146 executed.
147
148 =head3 attack (object hitter -- damage)
149
150 Object gets attacked by somebody - when overriden, should return the
151 damage that has been dealt.
152
153 =head3 skill_attack (attacker victim message skill -- success)
154
155 Invoked whenever an B<attacker> attacks B<victim> using a B<skill> (skill
156 cna be C<undef>). B<message> is the message that describes the attack when
157 damage is done.
158
159 =head3 weapon_attack (weapon hitter victim)
160
161 Invoked whenever an object is used as a B<weapon> by B<hitter> to attack
162 B<victim>.
163
164 =head3 inscribe_note (book pl message skill -- )
165
166 Used whenever a book gets inscribed with a message.
167
168 =head3 trigger (object who -- )
169
170 Invoked whenever a lever-like B<object> has been activated/triggered in some
171 (manual) way.
172
173 =head3 move_trigger (object victim originator -- )
174
175 Invoked whenever a trap-like B<object> has been activated, usually by
176 moving onto it. This includes not just traps, but also buttons, holes,
177 signs and similar stuff.
178
179 =head3 close (container who -- )
180
181 Invoked whenever a container gets closed (this event is not yet reliable!).
182
183
184 =head2 GLOBAL EVENTS
185
186 Global events have no relation to specific objects.
187
188 =head3 cleanup ()
189
190 Called when the server is cleaning up, just before it calls exit.
191
192 =head3 clock ( )
193
194 Is invoked on every server tick, usually every 0.12 seconds.
195
196
197 =head2 PLAYER EVENTS
198
199 Player events always have a player object as first argument.
200
201 =head3 reattach (player)
202
203 Invoked whenever attachments/plug-ins need to get reattached to the player
204 object. This usually happens when the player gets loaded from disk, or
205 when the server is reloaded.
206
207 =head3 birth (player)
208
209 Invoked as very first thing after creating a player.
210
211 =head3 quit (player)
212
213 Invoked wheneever a player quits, before actually removing him/her.
214
215 =head3 kick (player params -- )
216
217 Invoked when the given plaer is being kicked, before the kick is executed.
218
219 =head3 load (player)
220
221 Invoked whenever a player has been loaded from disk, but before
222 actual login.
223
224 =head3 save (player)
225
226 Invoked just before a player gets saved.
227
228 =head3 login (player)
229
230 Invoked whenever a player logs in.
231
232 =head3 logout (player)
233
234 Invoked whenever a player logs out, gets disconnected etc.
235
236 =head3 death (player)
237
238 Invoked whenever a player dies, before the death actually gets processed.
239
240 =head3 map_change (player oldmap newmap)
241
242 Invoked whenever a player moves from one map to another.
243
244 =head3 extcmd (player string)
245
246 Invoked whenever a client issues the C<extcmd> protocol command. It's
247 argument is passed without any changes.
248
249 =head3 move (player direction -- )
250
251 =head3 pray_altar (player altar skill -- )
252
253 Invoked whenever the B<player> prays over an B<altar>, using the given B<skill>.
254
255 =head3 tell (player name message -- )
256
257 Invoked whenever the player uses the B<tell> or B<reply> command, before
258 it gets processed.
259
260 =head3 say (player message --)
261
262 =head3 chat (player message --)
263
264 =head3 shout (player message --)
265
266 Invoked whenever the player uses the B<say>, B<chat> or B<shout> command,
267 before it gets processed.
268
269
270 =head2 MAP EVENTS
271
272 These events are generally dependent on a map and thus all have a map
273 as first argument.
274
275 =head3 instantiate (map)
276
277 Original B<map> has been loaded (e.g. on first use, or after a map
278 reset).
279
280 =head3 reattach (map)
281
282 Invoked whenever attachments/plug-ins need to get reattached to the
283 B<map>. This usually happens when the map was loaded from disk, or when the
284 server was reloaded.
285
286 =head3 destroy (map)
287
288 Invoked when the map object gets destroyed, and only when the map object
289 has a handler for this event. This event can occur many times, as its
290 called when the in-memory object is destroyed, not when the object itself
291 dies.
292
293 =head3 swapin (map)
294
295 Invoked when a previously swapped-out temporary B<map> has been loaded again.
296
297 =head3 swapout (map)
298
299 Invoked after a B<map> has been swapped out to disk.
300
301 =head3 reset (map)
302
303 Invoked when a B<map> gets reset.
304
305 =head3 clean (map)
306
307 Invoked when a temporary B<map> gets deleted on-disk.
308
309 =head3 enter (map player)
310
311 Invoked whenever a player enters the B<map>. This event is likely unreliable.
312
313 =head3 leave (map player)
314
315 Invoked whenever a player leaves the B<map>. This event is likely unreliable.
316
317 =head3 upgrade (map)
318
319 (TEMPORARY EVENT) gets invoked whenever a old-style map has been upgraded.
320
321 =head3 trigger (map connection state)
322
323 Invoked whenever something activates a B<connection> on the B<map>. If B<state>
324 is true the connection was 'state' and if false it is 'released'.