ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/objects.pod
Revision: 1.17
Committed: Wed Dec 20 22:54:59 2006 UTC (17 years, 6 months ago) by elmex
Branch: MAIN
Changes since 1.16: +58 -2 lines
Log Message:
documented LAMP and FLAG_CHANGING.

File Contents

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