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

# User Rev Content
1 elmex 1.2 =head1 CROSSFIRE+ 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     =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 root 1.3 =head3 cleanup ()
189    
190     Called when the server is cleaning up, just before it calls exit.
191    
192 pippijn 1.1 =head3 clock ( )
193    
194     Is invoked on every server tick, usually every 0.12 seconds.
195    
196 root 1.3
197 pippijn 1.1 =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'.