ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/objects.pod
Revision: 1.22
Committed: Mon May 7 06:21:20 2007 UTC (17 years ago) by root
Branch: MAIN
Changes since 1.21: +4 -3 lines
Log Message:
some minor doc addition

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