ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/doc/events.pod
Revision: 1.9
Committed: Tue Aug 29 17:29:28 2006 UTC (17 years, 8 months ago) by elmex
Branch: MAIN
Changes since 1.8: +4 -0 lines
Log Message:
rewrote parts of the connection code, which now is completly perl
invoke- and overrideable.

File Contents

# User Rev Content
1 root 1.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 root 1.2 missing, the event will be invoked but cannot change wether the event gets
13 root 1.1 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 root 1.4 =head3 instantiate (object init-args...)
30 root 1.1
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 root 1.4 =head3 reattach (object)
39 root 1.1
40 root 1.2 Invoked whenever attachments/plug-ins need to get reattached to the
41 root 1.1 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 root 1.4 =head3 clone (object destination)
46 root 1.1
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 root 1.5 =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 root 1.4 =head3 tick (object)
61 root 1.1
62 root 1.2 Invoked whenever the object "ticks", i.e. has positive B<speed_left>. Only
63 root 1.1 during ticks should an objetc process any movement or other events.
64    
65 root 1.4 =head3 kill (object hitter -- )
66 root 1.1
67 root 1.2 Invoked whenever an object is dead and about to get removed. Overriding
68 root 1.1 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 root 1.4 =head3 apply (object who -- applytype)
72 root 1.1
73 root 1.2 Invoked whenever the object is being applied in some way. The applytype is one of:
74 root 1.1
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 root 1.3 =back
84 root 1.1
85 root 1.6 =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 root 1.4 =head3 use_skill (skill who part direction strignarg -- )
120 root 1.1
121 root 1.2 Invoked whenever a skill is used by somebody or something.
122 root 1.1
123 root 1.4 =head3 cast_spell (spell casting_object owner direction stringarg -- )
124 root 1.1
125 root 1.4 Invoked whenever a given spell is cast by B<casting_object> (used by
126 root 1.1 B<owner>).
127    
128 root 1.4 =head3 drop (object who -- )
129 root 1.1
130 root 1.2 Invoked whenever an item gets dropped by somebody, e.g. as a result of a
131 root 1.1 drop command.
132    
133 root 1.4 =head3 drop_on (floor object who -- )
134 root 1.1
135 root 1.2 Invoked whenever some B<object> is being dropped on the B<floor> object.
136 root 1.1
137 root 1.7 =head3 say (object player message)
138 root 1.1
139 root 1.7 Invoked whenever the I<object> can hear a B<message> being said by
140     B<player> in its vicinity.
141 root 1.1
142 root 1.4 =head3 move (monster enemy -- )
143 root 1.1
144 root 1.2 Invoked whenever the B<monster> tries to move, just after B<enemy> and
145 root 1.1 other parameters have been determined, but before movement is actually
146     executed.
147    
148 root 1.4 =head3 attack (object hitter -- damage)
149 root 1.1
150     Object gets attacked by somebody - when overriden, should return the
151     damage that has been dealt.
152    
153 root 1.4 =head3 attacks (weapon hitter victim)
154 root 1.1
155 root 1.2 Invoked whenever an object is used as a B<weapon> by B<hitter> to attack
156 root 1.1 B<victim>.
157    
158 root 1.4 =head3 inscribe_note (book pl message skill -- )
159 root 1.1
160     Used whenever a book gets inscribed with a message.
161    
162 root 1.4 =head3 trigger (object who -- )
163 root 1.1
164 root 1.2 Invoked whenever a lever-like B<object> has been activated/triggered in some
165 root 1.1 (manual) way.
166    
167 root 1.4 =head3 move_trigger (object victim originator -- )
168 root 1.1
169 root 1.2 Invoked whenever a trap-like B<object> has been activated, usually by
170 root 1.1 moving onto it. This includes not just traps, but also buttons, holes,
171     signs and similar stuff.
172    
173 root 1.4 =head3 close (container -- )
174 root 1.1
175 root 1.2 Invoked whenever a container gets closed (this event is not yet reliable!).
176 root 1.1
177    
178 root 1.6 =head2 GLOBAL EVENTS
179    
180     Global events have no relation to specific objects.
181    
182     =head3 clock ( )
183    
184     Is invoked on every server tick, usually every 0.12 seconds.
185    
186     =head2 PLAYER EVENTS
187    
188     Player events always have a player object as first argument.
189    
190     =head3 reattach (player)
191    
192     Invoked whenever attachments/plug-ins need to get reattached to the player
193     object. This usually happens when the player gets loaded from disk, or
194     when the server is reloaded.
195    
196     =head3 birth (player)
197    
198     Invoked as very first thing after creating a player.
199    
200     =head3 quit (player)
201    
202     Invoked wheneever a player quits, before actually removing him/her.
203    
204     =head3 kick (player params -- )
205    
206     Invoked when the given plaer is being kicked, before the kick is executed.
207    
208     =head3 load (player)
209    
210     Invoked whenever a player has been loaded from disk, but before
211     actual login.
212    
213     =head3 save (player)
214    
215     Invoked just before a player gets saved.
216    
217     =head3 login (player)
218    
219     Invoked whenever a player logs in.
220    
221     =head3 logout (player)
222    
223     Invoked whenever a player logs out, gets disconnected etc.
224    
225     =head3 death (player)
226    
227     Invoked whenever a player dies, before the death actually gets processed.
228    
229     =head3 map_change (player oldmap newmap)
230    
231     Invoked whenever a player moves from one map to another.
232    
233     =head3 extcmd (player string)
234    
235     Invoked whenever a client issues the C<extcmd> protocol command. It's
236     argument is passed without any changes.
237    
238 root 1.8 =head3 move (player direction -- )
239    
240 root 1.6 =head3 pray_altar (player altar skill -- )
241    
242     Invoked whenever the B<player> prays over an B<altar>, using the given B<skill>.
243    
244 root 1.8 =head3 tell (player name message -- )
245 root 1.6
246 root 1.8 Invoked whenever the player uses the B<tell> or B<reply> command, before
247     it gets processed.
248 root 1.6
249 root 1.8 =head3 say (player message --)
250 root 1.6
251 root 1.8 =head3 chat (player message --)
252 root 1.6
253 root 1.8 =head3 shout (player message --)
254 root 1.6
255 root 1.8 Invoked whenever the player uses the B<say>, B<chat> or B<shout> command,
256     before it gets processed.
257 root 1.6
258    
259 root 1.1 =head2 MAP EVENTS
260    
261     These events are generally dependent on a map and thus all have a map
262     as first argument.
263    
264 root 1.5 =head3 instantiate (map)
265    
266     Original B<map> has been loaded (e.g. on first use, or after a map
267     reset).
268    
269 root 1.4 =head3 reattach (map)
270 root 1.1
271 root 1.2 Invoked whenever attachments/plug-ins need to get reattached to the
272 root 1.1 B<map>. This usually happens when the map was loaded from disk, or when the
273     server was reloaded.
274    
275 root 1.5 =head3 destroy (map)
276 root 1.1
277 root 1.5 Invoked when the map object gets destroyed, and only when the map object
278     has a handler for this event. This event can occur many times, as its
279     called when the in-memory object is destroyed, not when the object itself
280     dies.
281 root 1.1
282 root 1.4 =head3 swapin (map)
283 root 1.1
284 root 1.2 Invoked when a previously swapped-out temporary B<map> has been loaded again.
285 root 1.1
286 root 1.4 =head3 swapout (map)
287 root 1.1
288 root 1.2 Invoked after a B<map> has been swapped out to disk.
289 root 1.1
290 root 1.4 =head3 reset (map)
291 root 1.1
292 root 1.2 Invoked when a B<map> gets reset.
293 root 1.1
294 root 1.4 =head3 clean (map)
295 root 1.1
296 root 1.2 Invoked when a temporary B<map> gets deleted on-disk.
297 root 1.1
298 root 1.4 =head3 enter (map player)
299 root 1.1
300 root 1.2 Invoked whenever a player enters the B<map>. This event is likely unreliable.
301 root 1.1
302 root 1.4 =head3 leave (map player)
303 root 1.1
304 root 1.2 Invoked whenever a player leaves the B<map>. This event is likely unreliable.
305 root 1.1
306 root 1.4 =head3 upgrade (map)
307 root 1.1
308 root 1.2 (TEMPORARY EVENT) gets invoked whenever a old-style map has been upgraded.
309 root 1.1
310 elmex 1.9 =head3 trigger (map connection state)
311    
312     Invoked whenever something activates a B<connection> on the B<map>. If B<state>
313     is true the connection was 'state' and if false it is 'released'.