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