ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/doc/events.pod
Revision: 1.12
Committed: Fri Sep 8 02:45:16 2006 UTC (17 years, 8 months ago) by pippijn
Branch: MAIN
CVS Tags: HEAD
Changes since 1.11: +0 -0 lines
State: FILE REMOVED
Log Message:
- moved events.pod to pod/
- changed build order so include/ is being built before anything else and lib/ and pod/ are built last

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 clock ( )
189
190 Is invoked on every server tick, usually every 0.12 seconds.
191
192 =head2 PLAYER EVENTS
193
194 Player events always have a player object as first argument.
195
196 =head3 reattach (player)
197
198 Invoked whenever attachments/plug-ins need to get reattached to the player
199 object. This usually happens when the player gets loaded from disk, or
200 when the server is reloaded.
201
202 =head3 birth (player)
203
204 Invoked as very first thing after creating a player.
205
206 =head3 quit (player)
207
208 Invoked wheneever a player quits, before actually removing him/her.
209
210 =head3 kick (player params -- )
211
212 Invoked when the given plaer is being kicked, before the kick is executed.
213
214 =head3 load (player)
215
216 Invoked whenever a player has been loaded from disk, but before
217 actual login.
218
219 =head3 save (player)
220
221 Invoked just before a player gets saved.
222
223 =head3 login (player)
224
225 Invoked whenever a player logs in.
226
227 =head3 logout (player)
228
229 Invoked whenever a player logs out, gets disconnected etc.
230
231 =head3 death (player)
232
233 Invoked whenever a player dies, before the death actually gets processed.
234
235 =head3 map_change (player oldmap newmap)
236
237 Invoked whenever a player moves from one map to another.
238
239 =head3 extcmd (player string)
240
241 Invoked whenever a client issues the C<extcmd> protocol command. It's
242 argument is passed without any changes.
243
244 =head3 move (player direction -- )
245
246 =head3 pray_altar (player altar skill -- )
247
248 Invoked whenever the B<player> prays over an B<altar>, using the given B<skill>.
249
250 =head3 tell (player name message -- )
251
252 Invoked whenever the player uses the B<tell> or B<reply> command, before
253 it gets processed.
254
255 =head3 say (player message --)
256
257 =head3 chat (player message --)
258
259 =head3 shout (player message --)
260
261 Invoked whenever the player uses the B<say>, B<chat> or B<shout> command,
262 before it gets processed.
263
264
265 =head2 MAP EVENTS
266
267 These events are generally dependent on a map and thus all have a map
268 as first argument.
269
270 =head3 instantiate (map)
271
272 Original B<map> has been loaded (e.g. on first use, or after a map
273 reset).
274
275 =head3 reattach (map)
276
277 Invoked whenever attachments/plug-ins need to get reattached to the
278 B<map>. This usually happens when the map was loaded from disk, or when the
279 server was reloaded.
280
281 =head3 destroy (map)
282
283 Invoked when the map object gets destroyed, and only when the map object
284 has a handler for this event. This event can occur many times, as its
285 called when the in-memory object is destroyed, not when the object itself
286 dies.
287
288 =head3 swapin (map)
289
290 Invoked when a previously swapped-out temporary B<map> has been loaded again.
291
292 =head3 swapout (map)
293
294 Invoked after a B<map> has been swapped out to disk.
295
296 =head3 reset (map)
297
298 Invoked when a B<map> gets reset.
299
300 =head3 clean (map)
301
302 Invoked when a temporary B<map> gets deleted on-disk.
303
304 =head3 enter (map player)
305
306 Invoked whenever a player enters the B<map>. This event is likely unreliable.
307
308 =head3 leave (map player)
309
310 Invoked whenever a player leaves the B<map>. This event is likely unreliable.
311
312 =head3 upgrade (map)
313
314 (TEMPORARY EVENT) gets invoked whenever a old-style map has been upgraded.
315
316 =head3 trigger (map connection state)
317
318 Invoked whenever something activates a B<connection> on the B<map>. If B<state>
319 is true the connection was 'state' and if false it is 'released'.