ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/objects.pod
Revision: 1.29
Committed: Thu Dec 4 03:48:19 2008 UTC (15 years, 5 months ago) by root
Branch: MAIN
CVS Tags: rel-2_72, rel-2_73, rel-2_74, rel-2_75
Changes since 1.28: +2 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.27 =head1 DELIANTRA OBJECT AND INTERNALS DOCUMENTATION
2 elmex 1.1
3 root 1.27 Here is all information about the object types Deliantra
4 elmex 1.1 supports at the moment. This is not a complete documentation (yet)
5     and browsing the source is still recommended to learn about
6     the objects that aren't documented here.
7    
8     This documentation is in a sketchy state. It's mostly
9     used to collect notes about the internal behaviour of the
10     objects.
11    
12 elmex 1.15 =head2 About the notation and terms
13    
14     The term 'archetype' stands for a collection of fields.
15     The term 'object' stands for an archetype instance.
16     The term 'field' is used for an object fields and archetype fields.
17    
18 elmex 1.16 Field names will be displayed like this: I<fieldname>
19    
20     Type names will be displayed like this: B<TYPENAME>
21    
22     Flag names will be displayer like this: FLAG_NAME
23 elmex 1.15
24 elmex 1.1 =head2 About archetypes and objects
25    
26 elmex 1.15 Archetypes are 'templates' of objects. If an object is derived
27     from an archetype the object fields will be set to the corresponding
28     fields in the archetype.
29    
30     When a map is instanciated (loaded), the 'object' description on the
31     map are considered patches of the archetype.
32    
33     This document does explain the behaviour of the objects and the meaning of
34     their fields in the server engine, which are derived from archetypes.
35    
36 elmex 1.1 This is an example of an archetype:
37    
38     Object button_trigger
39     name button
40     type 30
41     face button_sma.111
42     anim
43     button_sma.111
44     button_sma.112
45     mina
46     is_animated 0
47     exp 30
48     no_pick 1
49     walk_on 1
50     walk_off 1
51     editable 48
52     visibility 50
53     weight 1
54     end
55    
56 elmex 1.15 The first B<field> is I<name>: 'button_trigger', which basically means that
57     instances (objects) that are created/derived from this archetype have the
58     name 'button' (which means that the field I<name> of the object will be set
59     to the same value as the archetypes field I<name>).
60 elmex 1.1
61 elmex 1.15 The next field I<type> decides the behaviour of objects derived from this archetype.
62 elmex 1.1 For a comprehensive list of types see include/define.h. For this case
63     you might find a line like:
64    
65     #define TRIGGER_BUTTON        30
66    
67 elmex 1.15 The behaviour of objects is further determined by B<Flags>, like FLAG_APPLIED.
68     For more information on this look in the Flags subsection in the next section
69 elmex 1.1
70 elmex 1.15 The following documentation will also document the meaning of internal used
71     fields of objects. These fields are marked as (internal) and can't
72     or shouldn't be set by an archetype.
73 elmex 1.1
74 elmex 1.15 =head2 Description of (mostly) generic object fields
75 elmex 1.1
76 elmex 1.2 These are the fields that most of the objects have and/or their
77     default behaviour.
78    
79     =over 4
80    
81 elmex 1.16 =item I<name> <string>
82 elmex 1.2
83     The name of the object.
84    
85 elmex 1.16 =item I<name_pl> <string>
86 elmex 1.2
87     The name of a collection of these objects (the plural of the name).
88    
89 elmex 1.16 =item I<face> <facename>
90 elmex 1.2
91     The graphical appearance of this object.
92    
93 elmex 1.16 =item I<x> <number>
94 elmex 1.14
95     The x position of the object when it is on a map.
96    
97 elmex 1.16 =item I<y> <number>
98 elmex 1.14
99     The y position of the object when it is on a map.
100    
101 elmex 1.16 =item I<map> (internal)
102 elmex 1.14
103     The map the object is on.
104    
105 elmex 1.16 =item I<invisible> <number>
106 elmex 1.2
107     If the <number> is greater than 0 the object is invisible.
108     For players this field reflects the duration of the invisibility
109     and is decreased every tick by 1.
110    
111     For non-player objects this field is not changed by server ticks.
112    
113 elmex 1.18 =item I<glow_radius> <number>
114    
115     This field indicates how far an object glows. Default is a radius of 0 (no
116 root 1.29 glowing at all). Negative glow radii darken areas - currently, negative
117     glow radii are stronger than positive ones.
118 elmex 1.18
119 elmex 1.16 =item I<speed> <number>
120 elmex 1.2
121     If this field is greater than MIN_ACTIVE_SPEED (~0.0001) the object is placed
122     on the active object list and will be processed each tick (see also speed_left!).
123    
124 elmex 1.16 If I<speed> drops below the MIN_ACTIVE_SPEED the object is removed
125 elmex 1.2 from the active object list and it won't experience any processing per tick.
126    
127 elmex 1.16 =item I<speed_left> <number>
128 elmex 1.2
129     If this field is greater than 0 and the object is on the
130     active list (mostly means it's speed is also greater than 0):
131    
132     - speed_left is decreased by 1
133     - and this object is processed and experiences a server tick.
134    
135 elmex 1.16 If the object is on the active list and I<speed_left> is lower or
136     equal to 0 the absolute value of the I<speed> is added to I<speed_left>
137 elmex 1.2 on the end of the tick.
138    
139 elmex 1.16 This means: the lower I<speed> is (but still above MIN_ACTIVE_SPEED)
140     the more seldom the object is processed. And the higher I<speed> is
141 elmex 1.7 the more often the object is processed.
142    
143 elmex 1.16 =item I<connected> <number>
144 elmex 1.14
145     When this field is set the object will be linked to a connection with the
146     id <number>. What happens when the connection is 'activated' depends on the
147     type of the object.
148    
149 elmex 1.16 FLAG_ACTIVATE_ON_PUSH and FLAG_ACTIVATE_ON_RELEASE they will control
150 elmex 1.14 when to activate the object, see description of these below for further details.
151    
152 elmex 1.16 =item I<no_drop> (0|1)
153 elmex 1.2
154 elmex 1.4 Sets the flag FLAG_NO_DROP.
155     See Flags section below.
156 elmex 1.2
157 elmex 1.16 =item I<applied> (0|1)
158 elmex 1.2
159 elmex 1.4 Sets the flag FLAG_APPLIED.
160     See Flags section below.
161 elmex 1.2
162 elmex 1.16 =item I<is_used_up> (0|1)
163 elmex 1.2
164 elmex 1.4 Sets the flag FLAG_IS_USED_UP.
165     See Flags section below.
166    
167 elmex 1.16 =item I<changing> (0|1)
168 elmex 1.15
169     Sets the flag FLAG_CHANGING.
170     See Flags section below.
171    
172 elmex 1.16 =item I<auto_apply> (0|1)
173 elmex 1.4
174     Sets the flag FLAG_AUTO_APPLY.
175     See Flags section below.
176 elmex 1.2
177 elmex 1.16 =item I<no_steal> (0|1)
178 elmex 1.8
179     Sets the flag FLAG_NO_STEAL.
180     See Flags section below.
181    
182 elmex 1.16 =item I<reflecting> (0|1)
183 elmex 1.10
184     Sets the flag FLAG_REFLECTING.
185     See Flags section below.
186    
187 elmex 1.16 =item I<reflect_spell> (0|1)
188 elmex 1.10
189     Sets the flag FLAG_REFL_SPELL.
190     See Flags section below.
191    
192 elmex 1.16 =item I<no_skill_ident> (0|1)
193 elmex 1.9
194     Sets the flag FLAG_NO_SKILL_IDENT.
195     See Flags section below.
196    
197 elmex 1.16 =item I<activate_on_push> (0|1) (default: 1)
198 elmex 1.5
199     Sets the flag FLAG_ACTIVATE_ON_PUSH.
200     See Flags section below.
201    
202 elmex 1.16 =item I<activate_on_release> (0|1) (default: 1)
203 elmex 1.5
204     Sets the flag FLAG_ACTIVATE_ON_RELEASE.
205     See Flags section below.
206    
207 elmex 1.18 =item I<is_lightable> (0|1)
208    
209     Sets the flag FLAG_IS_LIGHTABLE.
210     See Flags section below.
211    
212 elmex 1.16 =item I<editable> (more than deprecated)
213 elmex 1.2
214     This field had a special meaning for crossedit, which used parts
215 elmex 1.15 of the server code for editing. Wherever you see this field being
216 elmex 1.2 set in an archetype ignore it and/or remove it. No code interprets this
217     field anymore.
218    
219     =back
220    
221     =head3 Flags
222    
223     Here are the effects of the flags described.
224    
225 elmex 1.1 =over 4
226    
227 elmex 1.2 =item FLAG_NO_DROP
228    
229     An object can't be picked up and dropped.
230    
231     =item FLAG_APPLIED
232    
233     This flag mostly states whether this object has been 'applied' by the player.
234     For objects that are applied by the code or have this flag set in the archetype
235     it mostly means 'this object is active'.
236    
237 elmex 1.16 For example the player adjustments of the I<hp>/I<sp>/I<grace> fields and inheritance
238 elmex 1.2 of flags from objects in his inventory is toggled by this flag.
239    
240     =item FLAG_IS_USED_UP
241    
242 elmex 1.16 This flag controls whether an object is 'used up'. If it is set I<food>
243     is decreased by 1 each tick, and will be removed when I<food> is lower or equal 0.
244 elmex 1.2
245 elmex 1.16 If also the flag FLAG_APPLIED is set, the I<duration> field controls whether
246     this object is removed or not, see the B<FORCE> type below for the meaning
247 elmex 1.2 of the duration field in this context.
248    
249 elmex 1.3 If FLAG_APPLIED is not set the object is destroyed.
250    
251 elmex 1.15 =item FLAG_CHANGING
252    
253 elmex 1.16 If the I<state> field of the object is 0 the object will be processed periodically
254 elmex 1.17 (if I<speed> is set). If the I<state> field is 1 it won't be processed.
255    
256     This flag indicates that the object is changing into a different object.
257     The object has to have the I<other_arch> field set. The object the changing object
258     changes into is derived from the archetype in I<other_arch>.
259    
260     When the object does not have FLAG_ALIVE set the I<food> field will be decremented
261     each time the object is processed, and if I<food> reaches 0 one new object will be generated.
262    
263     When the object has FLAG_ALIVE set the I<food> field is the number of objects that
264     will be generated.
265    
266     After the new object is created the I<hp> field from the old object is copied into
267     the new one.
268    
269     When the old object was a B<LAMP> it's I<food> fields value less 1 will be copied
270     to the new object.
271 elmex 1.15
272 elmex 1.4 =item FLAG_IS_A_TEMPLATE (internal use)
273    
274 elmex 1.16 This flag is set on the inventory of generators like B<CREATOR>s and B<CONVERTER>s,
275 elmex 1.4 or other objects that have the flags FLAG_GENERATOR and FLAG_CONTENT_ON_GEN set.
276    
277     =item FLAG_AUTO_APPLY
278    
279 elmex 1.16 This flag has currently only meaning for the B<TREASURE> type, see below.
280 elmex 1.4
281 elmex 1.5 =item FLAG_ACTIVATE_ON_PUSH
282    
283     This flag has only meaning for objects that can be linked together
284 elmex 1.16 by the I<connected> field and controls wether the object should
285 elmex 1.5 be activated when the connection is 'pushed' or it is 'released'.
286    
287 elmex 1.14 What 'pushed' and 'released' means depends on the object that
288     activates the connection.
289    
290 elmex 1.5 This flag is by default on.
291    
292     =item FLAG_ACTIVATE_ON_RELEASE
293    
294     This flag has only meaning for objects that can be linked together
295 elmex 1.16 by the I<connected> field and controls wether the object should
296 elmex 1.5 be activated when the connection is 'pushed' or it is 'released'.
297    
298 elmex 1.14 What 'pushed' and 'released' means depends on the object that
299     activates the connection.
300    
301 elmex 1.5 This flag is by default on.
302    
303 elmex 1.8 =item FLAG_NO_STEAL
304    
305     When this flag is set this object can't be stolen. The flag will be
306 root 1.28 reset once the object is placed on a map.
307 elmex 1.8
308 root 1.28 When this flag is set on a monster it can defend attempts at stealing
309 elmex 1.8 (but in this context the flag is only used internally).
310    
311 elmex 1.9 =item FLAG_NO_SKILL_IDENT
312    
313     This flag is mostly used internal and prevents unidentified objects
314 elmex 1.16 (objects which don't have FLAG_IDENTIFIED set) being identified
315     multiple times by skills.
316 elmex 1.9
317 elmex 1.16 This flag is used to mark objects which were unsuccessfully identified by a
318     players skill. So that multiple tries of identifying aren't more effective than
319     one.
320 elmex 1.9
321 elmex 1.10 =item FLAG_REFLECTING
322    
323 elmex 1.16 This flag is used by spell effects (eg. SP_BOLT), B<THROWN_OBJ> and B<ARROW>
324 elmex 1.10 to indicate whether this object reflects off walls.
325    
326     =item FLAG_REFL_SPELL
327    
328     This flag indicates whether something reflects spells, like spell reflecting
329     amuletts.
330    
331 elmex 1.18 =item FLAG_IS_LIGHTABLE
332    
333     This flag indicates whether a B<LIGHTER> can light this object. See also the
334     description of the B<LIGHTER> type. How easy you can light an item depends
335     partially on the material of the object.
336    
337 elmex 1.1 =back
338    
339 elmex 1.15 =head2 Description of type specific fields and behaviour
340 elmex 1.1
341     The beginning of the headers of the following subsection
342     are the server internal names for the objects types, see include/define.h.
343    
344 elmex 1.16 =head3 B<TRANSPORT> - type 2 - Player transports
345 elmex 1.4
346     This type is implemented by the transport extension and has currently no special
347 elmex 1.15 fields that affect it.
348 elmex 1.4
349 root 1.23 =head3 B<ROD>, B<HORN> - type 3, 35 - Rods that fire spells
350 elmex 1.4
351     Rods contain spells and can be fired by a player.
352    
353     =over 4
354    
355 elmex 1.16 =item I<level> <number>
356 elmex 1.4
357 elmex 1.15 This field is used for calculating the spell level that can be fired
358 elmex 1.4 with this rod, it's also the maximum level of the spell that can be fired.
359     The level of the spell that is being fired depends mostly on
360     the 'use magic item' skill level of the player and 1/10 of the level of the
361     rod is added as bonus.
362    
363 elmex 1.16 =item I<hp> <number>
364 elmex 1.4
365 root 1.23 The amount of spellpoints this rod has left. Recharges at a rate of C<1 +
366     maxhp/10> per tick.
367 elmex 1.4
368 elmex 1.16 =item I<maxhp> <number>
369 elmex 1.4
370     The maximum amount of spellpoints this rod has.
371    
372 elmex 1.16 =item I<skill> <skill name>
373 elmex 1.4
374     This field determines which skill you need to apply this object.
375    
376     =back
377    
378 elmex 1.16 =head3 B<TREASURE> - type 4 - Treasures
379 elmex 1.4
380     This type of objects are for random treasure generation in maps.
381     If this object is applied by a player it will replace itself with it's
382     inventory. If it is automatically applied
383     generate a treasure and replace itself with the generated treasure.
384    
385     Chests are also of this type, their treasures are generated by
386     the auto apply code on map instantiation.
387    
388     =over 4
389    
390 elmex 1.16 =item I<hp> <number>
391 elmex 1.4
392     The number of treasures to generate.
393    
394 elmex 1.16 =item I<exp> <level>
395 elmex 1.4
396     If FLAG_AUTO_APPLY is not set the exp field has no further meaning
397     and the difficulty for the treasurecode only depends on the maps difficulty,
398     otherwise the exp field has the following meaning:
399    
400     If this field is not 0 it is passed as the difficulty
401     to the treasure generation code to determine how good, how much
402     worth a treasure is or what bonuses it is given by the treasure code.
403    
404     If this field is not set or 0 the difficulty of the map is passed to the treasure
405     generation code.
406    
407 elmex 1.16 =item I<randomitems> <treasurelist>
408 elmex 1.4
409     The treasurelist to use to generate the treasure which is put in the
410     treasure objects inventory.
411    
412     =back
413    
414 elmex 1.16 =head3 B<POTION> - type 5 - Potions for drinking and other nastynesses
415 elmex 1.4
416     These objects contain a spell and will emit it on apply, which most
417     of the time has the meaning of 'drinking'.
418    
419     If no resistancy field, stat field or attacktype is set and no spell
420     is put in the potion by the sp field or the randomitems the
421     potion will become an artifact and the artifact code decides which kind
422     of potion will be generated.
423    
424     If the potion has FLAG_CURSED or FLAG_DAMNED set the usage of this potion
425     will yield an explosion and hurt the player.
426    
427     =over 4
428    
429 elmex 1.16 =item I<Str>, I<Dex>, I<Con>, I<Int>, I<Wis>, I<Cha>, I<Pow> <number>
430 elmex 1.4
431     These stat fields determine how many stat points the player gets
432     when he applies this potion.
433    
434     If FLAG_CURSED or FLAG_DAMNED is set the player will loose that many stat points.
435    
436 elmex 1.16 =item I<sp> <number>
437 elmex 1.4
438     If this field is set and the randomitems field is not set
439     the field is interpreted as spell number, please look the right
440     number up in common/loader.C.
441    
442     If this field is set the randomitems field will be unset by the
443     map loading code.
444    
445 elmex 1.16 =item I<attacktype> <attacktype>
446 elmex 1.4
447     This field has some special meaning in potions, currently the
448     bits for AT_DEPLETE and AT_GODPOWER control whethere this is a
449     restoration potion or improvement potion.
450     See include/attackinc.h for the bits of these types.
451    
452     If AT_DEPLETE is set the player will be restored and the ARCH_DEPLETION
453     will be removed from him. If the potion has FLAG_CURSED or FLAG_DAMNED
454     set the player will be drained a random stat by inserting an ARCH_DEPLETION
455     into him.
456    
457     If AT_GODPOWER is enabled the player will gain +1 maxvalue in his hp, sp or grace stat.
458     When the potion has FLAG_CURSED or FLAG_DAMNED set he will loose one in one of these stats.
459    
460 elmex 1.16 =item I<resist_RESISTANCY> <number>
461 elmex 1.4
462     If this stat is set and no spell is in the potion the potion
463     will create a force that give the player this specific resistancy.
464     The forces type will be changed to POTION_EFFECT (see POTION_EFFECT type below)
465     and the potion will last 10 times longer than the default force archetype
466     FORCE_NAME (at the moment of this writing spell/force.arc).
467    
468 elmex 1.16 =item I<randomitems> <treasurelist>
469 elmex 1.4
470     The inventory/spell of the potion will be created by calling the treasure code
471     with the treasurelist specified here. (I guess it's highly undefined what
472     happens if there is not a spell in the potions inventory).
473    
474 elmex 1.16 =item I<on_use_yield> <archetype>
475 elmex 1.3
476 elmex 1.7 When this object is applied an instance of <archetype> will be created.
477 elmex 1.3
478 elmex 1.16 =item I<subtypes> <potion subtype>
479 elmex 1.3
480 elmex 1.4 see include/spells.h for possible potion subtypes, there are currently 4:
481 elmex 1.3
482     =over 4
483    
484 elmex 1.4 =item POT_SPELL
485    
486     Unused, default behaiour of a potion.
487    
488     =item POT_DUST
489    
490     This potion can be thrown to cast the spell that it has in it's inventory,
491 elmex 1.16 the behaviour is not defined if there is not a B<SPELL> in the inventory and the
492 elmex 1.4 server will log an error.
493    
494     =item POT_FIGURINE
495    
496     Unused, default behaiour of a potion.
497 elmex 1.3
498 elmex 1.4 =item POT_BALM
499 elmex 1.3
500 elmex 1.4 Unused, default behaiour of a potion.
501 elmex 1.3
502 elmex 1.4 =back
503 elmex 1.3
504     =back
505    
506 elmex 1.16 =head3 B<FOOD> - type 6 - Eatable stuff
507 elmex 1.7
508     This is for objects that are representing general eatables like
509     beef or bread.
510    
511 elmex 1.16 The main difference between B<FOOD>, B<FLESH> and B<DRINK> is that they
512 elmex 1.7 give different messages.
513    
514 elmex 1.16 The specialty of B<FLESH> is that it inherits the resistancies of the
515 elmex 1.7 monsters it was generated in and will let dragons raise their resistancies
516 elmex 1.16 with that. If the monster has the B<POISON> attacktype the B<FLESH>
517     will change into B<POISON>.
518 elmex 1.7
519 elmex 1.16 If a player runs low on food he will grab for B<FOOD>, B<DRINK> and B<POISON>
520     and if he doesn't find any of that he will start eating B<FLESH>.
521 elmex 1.7
522     =over 4
523    
524 elmex 1.16 =item I<title> <string>
525 elmex 1.7
526 elmex 1.16 If the food has B<title> set or is cursed it is considered 'special', which
527     means that the fields I<Str>, I<Dex>, I<Con>, I<Int>, I<Wis>, I<Pow>,
528     I<resist_RESISTANCY>, I<hp> and I<sp> are interpreted and have further effects
529     on the player.
530 elmex 1.7
531 elmex 1.16 The higher the I<food> field is the longer the improvement of the player lasts
532     (except for I<hp> and I<sp>).
533 elmex 1.7
534 elmex 1.16 =item I<food> <number>
535 elmex 1.7
536     This is the amount of food points the player gets when he eats this.
537    
538 elmex 1.16 =item I<on_use_yield> <archetype>
539 elmex 1.7
540     When this object is applied an instance of <archetype> will be created.
541    
542     =back
543    
544 elmex 1.16 =head3 B<POISON> - type 7 - Poisonous stuff
545 elmex 1.8
546 elmex 1.16 This type is for objects that can poison the player when he drinks/applies it.
547 elmex 1.8 When applied it will hit the attacked with AT_POISON and will create
548 elmex 1.16 a B<POISONING> object in the one who was hit.
549 elmex 1.8
550     =over 4
551    
552 elmex 1.16 =item I<level> <number>
553 elmex 1.8
554 root 1.24 This field affects the probability of poisoning. The higher the level difference
555     between the one who is hit and the poision the more probable it is the attacked
556 elmex 1.8 one will be poisoned.
557    
558 elmex 1.16 =item I<slaying> <race>
559 elmex 1.8
560 elmex 1.16 This field has the usual meaning of 'slaying', when the
561     poisoned's race matches the I<slaying> field the damage done by the poison
562 elmex 1.8 is multiplied by 3.
563    
564 elmex 1.16 =item I<hp> <number>
565 elmex 1.8
566     This is the amount of damage the player will receive from applying this. The
567     attacktype AT_POISON will be used to hit the player and the damage will
568     determine the strenght, duration and depletion of stats of the poisoning. The
569 elmex 1.16 created B<POISONING> object which is being placed in the one who was attacked will
570 elmex 1.8 get the damage from this field (which is maybe adjusted by slaying or the
571     resistancies).
572    
573 elmex 1.16 =item I<food> <number>
574 elmex 1.8
575 elmex 1.16 1/4 of <number> will be drained from the players I<food>.
576 elmex 1.8
577 elmex 1.16 =item I<on_use_yield> <archetype>
578 elmex 1.8
579     When this object is applied an instance of <archetype> will be created.
580    
581     =back
582    
583 elmex 1.16 =head3 B<BOOK> - type 8 - Readable books
584 elmex 1.9
585     This type is basically for representing text books in the game.
586    
587     Reading a book also identifys it (if FLAG_NO_SKILL_IDENT is not set).
588    
589     =over 4
590    
591 elmex 1.16 =item I<msg> <text>
592 elmex 1.9
593     This is the contents of the book. When this field is unset
594     at treasure generation a random text will be inserted.
595    
596 elmex 1.16 =item I<skill> <skill name>
597 elmex 1.9
598     The skill required to read this book. (The most resonable
599     skill would be literacy).
600    
601 elmex 1.16 =item I<exp> <number>
602 elmex 1.9
603     The experience points the player get for reading this book.
604    
605 elmex 1.16 =item I<subtype> <readable subtype>
606 elmex 1.9
607     This field determines the type of the readable.
608     Please see common/readable.C in the readable_message_types table.
609    
610     =back
611    
612 elmex 1.16 =head3 B<CLOCK> - type 9 - Clocks
613 elmex 1.10
614     This type of objects just display the time when being applied.
615    
616 elmex 1.16 =head3 B<LIGHTNING> - type 12 - Lightnings (DEPRECATED: see B<SPELL_EFFECT> subtype SP_BOLT)
617 elmex 1.10
618     This is a spell effect of a moving bolt. It moves straigt forward
619     through the map until something blocks it.
620     If FLAG_REFLECTING is set it even reflects on walls.
621    
622     FLAG_IS_TURNABLE should be set on these objects.
623    
624     =over 4
625    
626 elmex 1.16 =item I<move_type> <movetype>
627 elmex 1.11
628     This field affects the move type with which the lightning moves through
629     the map and which map cells will reflect or block it.
630    
631 elmex 1.16 =item I<attacktype> <attacktype>
632 elmex 1.10
633     The attacktype with which it hits the objects on the map.
634    
635 elmex 1.16 =item I<dam> <number>
636 elmex 1.10
637     The damage this bolt inflicts when it hits objects on the map.
638    
639 elmex 1.16 =item I<Dex> <number>
640 elmex 1.10
641     This is the fork percentage, it is reduced by 10 per fork.
642 elmex 1.16 And the I<dam> field is halved on each fork.
643 elmex 1.10
644 elmex 1.16 =item I<Con> (internal)
645 elmex 1.10
646     This value is a percentage of which the forking lightning
647     is deflected to the left. This value should be mostly used internally.
648    
649 elmex 1.16 =item I<duration> <number>
650 elmex 1.10
651     The duration the bolt stays on a map cell. This field is decreased each time
652 elmex 1.16 the object is processed (see the meaning of I<speed> and I<speed_left> fields in
653     the generic object field description).
654 elmex 1.10
655 elmex 1.16 =item I<range> <number>
656 elmex 1.10
657     This is the range of the bolt, each space it advances this field is decreased.
658    
659     =back
660    
661 elmex 1.16 =head3 B<ARROW> - type 13 - Arrows
662 elmex 1.14
663     This is the type for objects that represent projectiles like arrows.
664 elmex 1.16 The movement of B<THROWN_OBJ>s behave similar to this type.
665 elmex 1.14
666     Flying arrows are stopped either when they hit something blocking
667 elmex 1.16 (I<move_block>) or something which is alive.
668 elmex 1.14 If it hits something that is alive, which doesn't have FLAG_REFL_MISSILE
669     set, it will inflict damage. If FLAG_REFL_MISSILE is set it will inflict
670 elmex 1.16 damage with a small chance which is affected by the I<level> field of the arrow.
671 elmex 1.14
672     If FLAG_REFLECTING is set on the arrow it will bounce off everything
673     that is not alive and blocks it's movement.
674    
675 elmex 1.16 When an arrow is being shot it's I<dam>, I<wc>, I<attacktype>, I<slaying>
676     fields will be saved in the I<sp>, I<hp>, I<grace> and I<spellarg> fields of
677     the object, to restore them once the arrow has been stopped.
678 elmex 1.14
679     =over 4
680    
681 elmex 1.16 =item I<dam> <number>
682 elmex 1.14
683     The amount of damage that is being done to the victim that gets hit.
684     This field is recomputed when the arrow is fired and will consist
685 elmex 1.16 of the sum of a damage bonus (see description of the B<BOW> type),
686     the arrows I<dam> field, the bows I<dam> field, the bows I<magic> field
687     and the arrows I<magic> field.
688 elmex 1.14
689 elmex 1.16 =item I<wc> <number>
690 elmex 1.14
691 root 1.24 The weapon class of the arrow, which has effect on the probability of hitting.
692 elmex 1.14
693     It is recomputed when the arrow is being fired by this formula:
694    
695     wc = 20 - bow->magic - arrow->magic - (skill->level or shooter->level)
696     - dex_bonus - thaco_bonus - arrow->stats.wc - bow->stats.wc + wc_mod
697    
698     When the arrow is not being shot by an player dex_bonus and thaco_bonus and the
699 elmex 1.16 level is not added.
700 elmex 1.14
701 elmex 1.16 wc_mod is dependend on the fire mode of the bow. For a more detailed
702 elmex 1.14 explanation of dex_bonus, thaco_bonus and wc_mod please consult the code.
703    
704 elmex 1.16 =item I<magic> <number>
705 elmex 1.14
706     This field is added to the damage of the arrow when it is shot and
707 elmex 1.16 will also improve it's I<speed> by 1/5 of it's value.
708 elmex 1.14
709 elmex 1.16 =item I<attacktype> <attacktype>
710 elmex 1.14
711     Bitfield which decides the attacktype of the damage, see include/attackinc.h
712 elmex 1.16 On fireing the I<attacktype> of the bow is added to the arrows I<attacktype>.
713 elmex 1.14
714 elmex 1.16 =item I<level> <number> (interally used)
715 elmex 1.14
716 root 1.24 The level of the arrow, this affects the probability of piercing FLAG_REFL_MISSILE,
717 elmex 1.16 see above in the B<ARROW> description.
718 elmex 1.14
719 elmex 1.16 The I<level> is set when the arrow is fired to either the skill level or the
720     shooters level.
721 elmex 1.14
722 elmex 1.16 =item I<speed> <number> (internal)
723 elmex 1.14
724     This field shouldn't be set directly in the archetype, the arrow will get it's
725 elmex 1.16 I<speed> from the bow. This fields value has to be at least 0.5 or otherwise the
726 elmex 1.14 arrow will be stopped immediatly.
727    
728 elmex 1.16 On fireing the I<speed> of the arrow is computed of 1/5 of the
729     sum of the damage bonus (see BOW), bow I<magic> and arrow I<magic>. After that 1/7
730     of the bows I<dam> field is added to the I<speed> of the arrow.
731 elmex 1.14
732 elmex 1.16 The minimum I<speed> of an arrow is 1.0.
733 elmex 1.14
734 elmex 1.16 While flying the arrows I<speed> is decreased by 0.05 each time it's moved.
735 elmex 1.14
736 elmex 1.16 If the I<speed> is above 10.0 it goes straight through the creature it hits and
737     it's I<speed> is reduced by 1. If the I<speed> is lower or equal 10.0 the arrow is
738     stopped and either sticked into the victim (see I<weight> field description) or
739     put on it's map square (if it didn't break, see description of the I<food> field).
740 elmex 1.14
741 elmex 1.16 =item I<weight> <number>
742 elmex 1.14
743 elmex 1.16 This field is the weight of the arrow, if I<weight> is below or equal 5000 (5 kg)
744 elmex 1.14 the arrow will stick in the victim it hits. Otherwise it will fall to the ground.
745    
746 elmex 1.16 =item I<food> <number>
747 elmex 1.14
748 elmex 1.16 The breaking percentage. 100 (%) means: breaks on usage for sure.
749 elmex 1.14
750 elmex 1.16 =item I<inventory> (internal)
751 elmex 1.14
752     If the flying/moving object has something in it's inventory and it stops, it
753     will be replaced with it's inventory. Otherwise it will be handled as usual,
754     which means: it will be calculated whether the arrow breaks and it will be
755     reset for reuse.
756    
757 elmex 1.16 =item I<slaying> <string>
758 elmex 1.14
759 elmex 1.16 When the bow that fires this arrow has it's I<slaying> field set it is copied
760     to the arrows I<slaying> field. Otherwise the arrows I<slaying> field remains.
761 elmex 1.14
762 elmex 1.16 =item I<move_type> <movetype> (internally used)
763 elmex 1.14
764     This field is set when the arrow is shot to MOVE_FLY_LOW.
765    
766 elmex 1.16 =item I<move_on> <movetype> (internally used)
767 elmex 1.14
768     This field is set when the arrow is shot to MOVE_FLY_LOW and MOVE_WALK.
769    
770 elmex 1.16 =item I<race> <string>
771 elmex 1.14
772 elmex 1.16 The I<race> field is a unique key that assigns arrows, bows and quivers. When
773     shooting an arrow the bows I<race> is used to search for arrows (which have the
774     same I<race> as the bow) in the players inventory and will recursively search in
775     the containers (which are applied and have the same I<race> as the bow and the arrow).
776 elmex 1.14
777     =back
778    
779 elmex 1.16 =head3 B<BOW> - type 14 - Bows, those that fire B<ARROW>s
780 elmex 1.14
781 elmex 1.16 TODO, but take into account B<ARROW> description above!
782 elmex 1.10
783 elmex 1.16 =head3 B<WEAPON> - type 15 - Weapons
784 elmex 1.1
785     This type is for general hack and slash weapons like swords, maces
786     and daggers and and ....
787    
788     =over 4
789    
790 elmex 1.16 =item I<weapontype> <type id>
791 elmex 1.1
792     decides what attackmessages are generated, see include/define.h
793    
794 elmex 1.16 =item I<attacktype> <bitmask>
795 elmex 1.1
796     bitfield which decides the attacktype of the damage, see include/attackinc.h
797    
798 elmex 1.16 =item I<dam> <number>
799 elmex 1.1
800     amount of damage being done with the attacktype
801    
802 elmex 1.16 =item I<item_power> <level>
803 elmex 1.1
804     the itempower of this weapon.
805    
806 elmex 1.16 =item I<name>
807 elmex 1.1
808     the name of the weapon.
809    
810 elmex 1.16 =item I<level> (internal)
811 elmex 1.1
812     The improvement state of the weapon.
813 elmex 1.16 If this field is greater than 0 the I<name> field starts with the
814 elmex 1.1 characters name who improved this weapon.
815    
816 elmex 1.16 =item I<last_eat> (internal)
817 elmex 1.1
818 elmex 1.16 This seems to be the amount of improvements of a weapon,
819 elmex 1.1 the formular for equipping a weapon seems to be (server/apply.C:check_weapon_power):
820    
821     ((who->level / 5) + 5) >= op->last_eat
822    
823 elmex 1.16 =item I<last_sp>
824 elmex 1.1
825     the weapon speed (see magic description)
826    
827 elmex 1.16 =item I<food> <number>
828 elmex 1.1
829     addition to food regeneration of the player
830    
831 elmex 1.16 =item I<hp> <number>
832 elmex 1.1
833     addition to health regeneration
834    
835 elmex 1.16 =item I<sp> <number>
836 elmex 1.1
837     addition to mana regeneration
838    
839 elmex 1.16 =item I<grace> <number>
840 elmex 1.1
841     addititon to grace regeneration
842    
843 elmex 1.16 =item I<gen_sp_armour> <number>
844 elmex 1.1
845 elmex 1.16 the players I<gen_sp_armour> field (which is per default 10) is being added the
846     <number> amount. gen_sp_armour seems to be a factor with which gen_sp in
847     do_some_living() is multiplied: gen_sp *= 10/<number> meaning: values > 10 of
848     I<gen_sp_armour> limits the amout of regenerated spellpoints.
849 elmex 1.1
850 elmex 1.16 Generally this field on weapons is in ranges of 1-30 and decides the slowdown of the
851     I<sp> regeneration.
852 elmex 1.1
853 elmex 1.16 =item I<body_BODYSLOT>
854 elmex 1.1
855 root 1.20 The part/slot of the body you need to use this weapon, possible values for
856     C<BODYSLOT> should be looked up in common/item.C at body_locations.
857 elmex 1.1
858 root 1.22 The value (in the range C<-7..7>) gives the number of those body slots
859     used up by the item (if negative) or the number of body slots this object
860     has (if positive, e.g. for monsters or players). The special value C<0>
861     indicates that this object cannot equip items requiring these body slots.
862 root 1.20
863     =item I<resist_RESISTANCY> <number>
864 elmex 1.1
865     this is the factor with which the difference of the players resistancy and 100%
866     is multiplied, something like this:
867    
868 root 1.20 additional_resistancy = (100 - current_resistancy) * (<number>/100)
869 elmex 1.1
870 elmex 1.2 if <number> is negative it is added to the total vulnerabilities,
871 elmex 1.1 and later the total resistance is decided by:
872    
873     'total resistance = total protections - total vulnerabilities'
874    
875 root 1.20 see also common/living.C:fix_player.
876 elmex 1.1
877 elmex 1.16 =item I<path_(attuned|repelled|denied)>
878 elmex 1.1
879     this field modifies the pathes the player is attuned to, see include/spells.h PATH_*
880     for the pathes.
881    
882 elmex 1.16 =item I<luck> <number>
883 elmex 1.1
884 elmex 1.16 this luck is added to the players I<luck>
885 elmex 1.1
886 elmex 1.16 =item I<move_type>
887 elmex 1.1
888 elmex 1.16 if the weapon has a I<move_type> set the player inherits it's I<move_type>
889 elmex 1.1
890 elmex 1.16 =item I<exp> <number>
891 elmex 1.1
892 elmex 1.2 the added_speed and bonus_speed of the player is raised by <number>/3.
893     if <number> < 0 then the added_speed is decreased by <number>
894 elmex 1.1
895 elmex 1.16 =item I<weight>
896 elmex 1.1
897     the weight of the weapon
898    
899 elmex 1.16 =item I<magic>
900 elmex 1.1
901 elmex 1.16 the I<magic> field affects the amounts of the following fields:
902 elmex 1.1
903     - wc : the players wc is adjusted by: player->wc -= (wc + magic)
904    
905     - ac : the players ac is lowered by (ac + magic) if (player->ac + magic) > 0
906    
907     - dam: the players dam is adjusted by: player->dam += (dam + magic)
908    
909     - weapon speed (last_sp): weapon_speed is calculated by: (last_sp * 2 - magic) / 2
910     (minium is 0)
911    
912 elmex 1.16 =item I<ac> <number>
913 elmex 1.1
914 elmex 1.16 the amount of ac points the player's I<ac> is decreased when applying this object.
915 elmex 1.1
916 elmex 1.16 =item I<wc> <number>
917 elmex 1.1
918 elmex 1.16 the amount of wc points the player's I<wc> is decreased when applying this object.
919 elmex 1.1
920     =back
921    
922     =head4 Player inherits following flags from weapons:
923    
924 elmex 1.4 FLAG_LIFESAVE
925     FLAG_REFL_SPELL
926     FLAG_REFL_MISSILE
927     FLAG_STEALTH
928     FLAG_XRAYS
929     FLAG_BLIND
930     FLAG_SEE_IN_DARK
931     FLAG_UNDEAD
932    
933 elmex 1.16 =head3 B<GRIMREAPER> - type 28 - Grimreapers
934 elmex 1.11
935     These type are mostly used for monsters, they give the
936     monster the ability to dissapear after 10 hits with AT_DRAIN.
937    
938     =over 4
939    
940 elmex 1.16 =item I<value> <number>
941 elmex 1.11
942     This field stores the hits the monster did yet.
943    
944     =back
945    
946 elmex 1.16 =head3 B<CREATOR> - type 42 - Object creators
947 elmex 1.14
948     Once a creator is activated by a connection it creates a number of objects
949 elmex 1.15 (cloned from it's inventory or a new object derived from the archetype
950     named in the other_arch slot).
951 elmex 1.14
952     If FLAG_LIVESAFE is set the number of uses is unlimited.
953    
954     =over 4
955    
956 elmex 1.16 =item I<hp> <number>
957 elmex 1.14
958     If FLAG_LIVE_SAVE is not set it is the absolute number of times the creator can
959     be used.
960    
961 elmex 1.16 =item I<speed> <number>
962 elmex 1.14
963 elmex 1.16 If I<speed> is set the creator will create an object periodically,
964     see I<speed> and I<speed_left> fields in the general object field description
965     for more details.
966 elmex 1.14
967 elmex 1.16 =item I<slaying> <string>
968 elmex 1.14
969 elmex 1.16 If set the generated object's name and title will be set to this.
970 elmex 1.14
971 elmex 1.16 =item I<other_arch> <string>
972 elmex 1.14
973 elmex 1.16 If the inventory of the creator is empty new objects will be derived from the
974     archetype named by <string>.
975 elmex 1.14
976 elmex 1.16 =item I<connected> <number>
977 elmex 1.14
978 elmex 1.16 See generic object field description.
979 elmex 1.14
980     =back
981    
982 elmex 1.16 =head3 B<DRINK> - type 54 - Drinkable stuff
983 elmex 1.7
984 elmex 1.16 See B<FOOD> description.
985 elmex 1.7
986 elmex 1.16 =head3 B<CHECK_INV> - type 64 - Inventory checkers
987 elmex 1.6
988     This object checks whether the player has a specific item in his
989     inventory when he moves above the inventory checker. If the player has
990     the item (or not, which can be controlled with a flag) a connection will be triggered.
991    
992 elmex 1.16 If you set I<move_block> you can deny players and monsters to reach the space where
993     the inventory checker is on, see I<move_block> description below.
994 elmex 1.6
995 elmex 1.16 The conditions specified by I<hp>, I<slaying> and I<race> are OR concationated.
996 elmex 1.6 So matching one of those conditions is enough.
997    
998     =over 4
999    
1000 elmex 1.16 =item I<move_block> <move type bitmask>
1001 elmex 1.6
1002     If you set this field to block a movetype the move code will block any moves
1003     onto the space with the inventory checker, IF the moving object doesn't have
1004 elmex 1.16 (or has - if I<last_sp> = 0) the item that the checker is searching for.
1005 elmex 1.6
1006 elmex 1.16 =item I<last_sp> (0|1)
1007 elmex 1.6
1008 elmex 1.16 If I<last_sp> is 1 'having' the item that is being checked for will
1009 elmex 1.6 activate the connection or make the space with the checker non-blocking.
1010 elmex 1.16 If I<last_sp> is 0 'not having' the item will activate the connection
1011 elmex 1.6 or make the space with the checker non-blocking.
1012    
1013 elmex 1.16 =item I<last_heal> (0|1)
1014 elmex 1.6
1015 elmex 1.16 If I<last_heal> is 1 the matching item will be removed if the inventory checker
1016 elmex 1.6 activates a connection and finds the item in the inventory.
1017    
1018     (A inventory checker that blocks a space won't remove anything from inventories)
1019    
1020 elmex 1.16 =item I<hp> <number>
1021 elmex 1.6
1022     If this field is not 0 the inventory checker will search for an object
1023     with the type id <number>.
1024    
1025 elmex 1.16 =item I<slaying> <string>
1026 elmex 1.6
1027     If this field is set the inventory checker will search for an object that
1028 elmex 1.16 has the same string in the I<slaying> field (for example a key string of a key).
1029 elmex 1.6
1030 elmex 1.16 =item I<race> <string>
1031 elmex 1.6
1032     If this field is set the inventory checker will search for an object which
1033     has the archetype name that matches <string>.
1034    
1035 elmex 1.16 =item I<connected> <connection id>
1036 elmex 1.6
1037 elmex 1.14 This is the connection that will be activated. The connection is
1038     'pushed' when someone enters the space with the inventory checker,
1039     and it is 'released' when he leaves it.
1040    
1041 elmex 1.16 See also the description of the I<connected> field in the generic object field
1042 elmex 1.14 section.
1043 elmex 1.6
1044     =back
1045    
1046 root 1.25 =head3 B<MOOD_FLOOR> - type 65 - change mood of monsters
1047    
1048     speed == 0 for triggered mood changes, speed != 0 for non-triggered mood
1049     changes.
1050    
1051     (based on value that last_sp takes):
1052     0: 'furious' Makes all monsters aggressive
1053     1: 'angry' As above but pets are unaffected
1054     2: 'calm' Makes all monsters unaggressive
1055     3: 'sleep' Puts all monsters to sleep
1056     4: 'charm' Makes monster into a pet of person
1057     who triggers the square. This setting
1058     is not enabled for continous operation
1059     5: 'destroy mons' destroy any monsters on this space
1060     6: 'destroy pets' destroy friendly monsters on this space
1061    
1062 elmex 1.16 =head3 B<FLESH> - type 72 - Organs and body parts
1063 elmex 1.7
1064 elmex 1.16 See B<FOOD> description.
1065 elmex 1.7
1066 elmex 1.16 =head3 B<MISC_OBJECT> - type 79 - Misc. objects
1067 elmex 1.11
1068     A type for any object that has no special behaviour.
1069    
1070 elmex 1.16 =head3 B<LAMP> - type 82 - A lamp
1071 elmex 1.15
1072 elmex 1.17 This object represents a lamp, that can be carried and switched
1073     on and off and has a certain amount of fuel in it.
1074    
1075     A lamp consists of two archetypes: the 'on' archetype and the 'off' archetype.
1076     Each of them should point at the other one with it's I<other_arch> field.
1077    
1078     See the I<other_arch> field for the behaviour of a lamp object when it is applied.
1079    
1080 elmex 1.18 If this object has FLAG_IS_LIGHTABLE set the lamp can be turned on and off
1081     with a B<LIGHTER>, see also the description of FLAG_IS_LIGHTABLE.
1082    
1083 elmex 1.17 =over 4
1084    
1085 elmex 1.18 =item I<glow_radius> <number>
1086    
1087     The radius of the light that the lamp emits, see also I<glow_radius> in the
1088     generic object flags description.
1089    
1090 elmex 1.17 =item I<speed> <number>
1091    
1092     If FLAG_CHANGING is set the I<speed> field will indicate how fast the
1093     lamp burns it's fuel (I<food>).
1094    
1095     Setting FLAG_CHANGING makes only sense on the archetype which represents
1096     the 'on' state of the lamp.
1097    
1098     See also the description of FLAG_CHANGING.
1099    
1100     Lamps which have no FLAG_CHANGING set would also make sense and represent
1101     lamps that never burn up.
1102    
1103     =item I<other_arch> <number>
1104    
1105     This is the field that points to the 'other' archetype which represents the
1106     opposite state of the lamp. The newly from I<other_arch> derived object will
1107     replace the current object and will get the value of I<food> of the replaced object.
1108    
1109     Rationale:
1110    
1111     When the lamp (on) is applied a new object is derived from the archetype
1112     in I<other_arch> and the I<food> value is copied to it ('the fuel is
1113     transferred'). The new lamp (off) object has to have a I<other_arch> field
1114     which points to the archetype from which a lamp (on) can be derived.
1115    
1116     =item I<food> <number>
1117    
1118     This fields stands for the fuel of the lamp.
1119    
1120     =back
1121 elmex 1.15
1122 elmex 1.16 =head3 B<DUPLICATOR> - type 83 - Duplicators or: Multiplicators
1123 elmex 1.14
1124     This type of objects multiplies objects that are above it when it is activated.
1125     You can even multiply by 0, which will destroy the object.
1126    
1127     =over 4
1128    
1129 elmex 1.16 =item I<level> <number>
1130 elmex 1.14
1131     The multiplicator, if set to 0 or lower it will destroy the objects above it.
1132    
1133 elmex 1.16 =item I<other_arch> <string>
1134 elmex 1.14
1135 elmex 1.15 The archetype name of the objects that should be multiplied.
1136 elmex 1.14
1137 elmex 1.16 =item I<connected> <number>
1138 elmex 1.14
1139 elmex 1.16 See generic object field description.
1140 elmex 1.14
1141     =back
1142    
1143 elmex 1.16 =head3 B<HOLE> - type 94 - Holes
1144 elmex 1.5
1145 elmex 1.16 B<HOLE>s are holes in the ground where objects can fall through. When the hole
1146 elmex 1.5 opens and/or is completly open all objects above it fall through (more
1147     precisely: if their head is above the hole).
1148    
1149 elmex 1.16 When the B<HOLE> is activated it's speed is set to 0.5.
1150 elmex 1.14
1151 elmex 1.16 These holes can only transfer the one who falls through to other coordinates
1152     on the same map.
1153 elmex 1.5
1154     =over 4
1155    
1156 elmex 1.16 =item I<maxsp> (0|1)
1157 elmex 1.5
1158     This field negates the state of the connection: When maxsp is 1 the pit will
1159     open/close when the connection is deactivated. Otherwise it will open/close
1160     when the connection is activated. This field only has effect when the
1161     connection is triggered. So if you put a closed hole on a map, and the
1162 elmex 1.16 connection is deactivated, and I<maxsp> is 1 the hole will remain closed until the
1163 elmex 1.5 connection was triggered once.
1164    
1165 elmex 1.16 =item I<connected> <connection id>
1166 elmex 1.5
1167     This is the connection id, which lets the hole opening or closing when
1168     activated. The flags FLAG_ACTIVATE_ON_PUSH and FLAG_ACTIVATE_ON_RELEASE control
1169     at which connection state the object is activated.
1170    
1171     For example: if FLAG_ACTIVATE_ON_RELEASE is set to 0 the hole won't react when
1172     the connection is released.
1173    
1174 elmex 1.16 =item I<wc> <number> (internal)
1175 elmex 1.5
1176 elmex 1.16 This is an internal field. If it is greater than 0 it means that the hole is not
1177 elmex 1.5 yet fully open. More preciesly: this field is the animation-step and if it is
1178     set to the 'closed' step of the animation the hole is closed and if it is on
1179 elmex 1.16 the 'open' animation step (I<wc> = 0), the hole is open.
1180 elmex 1.5
1181 elmex 1.16 =item I<sp> <number>
1182 elmex 1.5
1183     The destination y coordinates on the same map.
1184    
1185 elmex 1.16 =item I<hp> <number>
1186 elmex 1.5
1187     The destination x coordinates on the same map.
1188    
1189     =back
1190    
1191 elmex 1.16 =head3 B<POISONING> - type 105 - The poisoning of players and monsters
1192 elmex 1.8
1193     This type is doing the actual damage to the ones who were attacked
1194 elmex 1.16 via AT_POISON (or drank B<POISON>).
1195 elmex 1.8
1196     The duration is handled via the FLAG_IS_USED_UP mechanism (please look
1197     there for details).
1198    
1199     =over 4
1200    
1201 elmex 1.16 =item I<dam> <number>
1202 elmex 1.8
1203 elmex 1.16 Each time the poisoning is proccessed (which is determined by the I<speed> and
1204     I<speed_left> fields, see the general object fields description above) it hits
1205     the player with <number> damage and the AT_INTERNAL attacktype (means: it will
1206     simply hit the player with no strings attached).
1207 elmex 1.8
1208 elmex 1.16 =item I<food> <number>
1209 elmex 1.8
1210 elmex 1.16 Just a note: The posioning is removed if I<food> == 1 and not if
1211     the whole I<duration> is up, because the B<POISONING> code has to remove
1212 elmex 1.8 the poison-effects from the player before the FLAG_IS_USED_UP mechanism
1213 elmex 1.16 deletes the B<POISONING> object.
1214 elmex 1.8
1215     =back
1216    
1217 elmex 1.16 =head3 B<FORCE> - type 114 - Forces
1218 elmex 1.4
1219     Forces are a very 'thin' type. They don't have much behaviour other than
1220 elmex 1.5 disappearing after a time and/or affecting the player if they are in his
1221     inventory.
1222 elmex 1.4
1223 elmex 1.16 Forces only take effect on the player if they have FLAG_APPLIED set.
1224 elmex 1.4
1225 elmex 1.16 Whether the I<duration> field is processed or not per tick is controlled by the
1226     I<speed> and I<speed_left> fields. Look above in the generic object field description.
1227 elmex 1.4
1228 elmex 1.16 NOTE: If FLAG_IS_USED_UP is set on a B<FORCE> it's I<food> field will also
1229     interpreter like described in the description of the FLAG_IS_USED_UP flag.
1230     BUT: If I<food> reaches 0 before I<duration> and FLAG_APPLIED is set, the force
1231     will still last for I<duration>. If the FLAG_APPLIED is not set the force is
1232     removed when I<food> reaches 0. Generally this means: FLAG_IS_USED_UP doesn't
1233     have good semantics on forces, try to avoid it.
1234 elmex 1.7
1235 elmex 1.4 =over 4
1236    
1237 elmex 1.16 =item I<duration>
1238 elmex 1.4
1239 elmex 1.5 While this field is greater than 0 the force/object is not destroyed. It is
1240     decreased each tick by 1.
1241 elmex 1.4
1242     If it reaches 0 the force/object is destroyed.
1243    
1244     This field can have this meaning for B<any> object if that object has
1245     FLAG_IS_USED_UP and FLAG_APPLIED set. See the description of FLAG_IS_USED_UP
1246     what happens then.
1247    
1248     =back
1249    
1250 elmex 1.16 =head3 B<POTION_EFFECT> - type 115 - Potion effects (resistancies)
1251 elmex 1.4
1252 elmex 1.16 This object is generated by the B<POTION> code when the potion is a resistance
1253     giving potion. It has mainly the same behaviour as a B<FORCE>.
1254 elmex 1.4
1255     The specialty of the potion effect is that the resistancy it gives is absolute,
1256 elmex 1.16 so if you drink a resistancy potion of fire+60 you will get 60% absolute resistancy to
1257 elmex 1.5 fire.
1258 elmex 1.4
1259     Multiple potion effects only give you the maximum of their resistancy.