ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/pod/objects.pod
Revision: 1.13
Committed: Wed Dec 20 13:07:13 2006 UTC (17 years, 5 months ago) by elmex
Branch: MAIN
Changes since 1.12: +0 -9 lines
Log Message:
removed LIGHT_SOURCE, MONSTER and SPAWN_GENERATOR types.

File Contents

# Content
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 =head2 About archetypes and objects
13
14 Field denotes an attribute of an archetype.
15 This is an example of an archetype:
16
17 Object button_trigger
18 name button
19 type 30
20 face button_sma.111
21 anim
22 button_sma.111
23 button_sma.112
24 mina
25 is_animated 0
26 exp 30
27 no_pick 1
28 walk_on 1
29 walk_off 1
30 editable 48
31 visibility 50
32 weight 1
33 end
34
35 This archetype has the name 'button_trigger' and the objects that
36 inherit from this archetype have the name 'button'.
37
38 The next field 'type' decides the main behaviour of this archetype.
39 For a comprehensive list of types see include/define.h. For this case
40 you might find a line like:
41
42 #define TRIGGER_BUTTON        30
43
44 The server internally works with objects that 'inherit' attributes from
45 an archetype. They have a similar set of attributes.
46
47 The following documentation will also document the meaning of code internal
48 attributes of objects. These attributes are marked as '(internal)' and can't
49 or shouldn't be set by an archetype. If the internal names differs the
50 external name (for the archetypes) for the attribute is written behind it.
51
52 =head2 Description of generic archetype and object attributes
53
54 These are the fields that most of the objects have and/or their
55 default behaviour.
56
57 =over 4
58
59 =item name <string>
60
61 The name of the object.
62
63 =item name_pl <string>
64
65 The name of a collection of these objects (the plural of the name).
66
67 =item face <facename>
68
69 The graphical appearance of this object.
70
71 =item invisible <number>
72
73 If the <number> is greater than 0 the object is invisible.
74 For players this field reflects the duration of the invisibility
75 and is decreased every tick by 1.
76
77 For non-player objects this field is not changed by server ticks.
78
79 =item speed <number>
80
81 If this field is greater than MIN_ACTIVE_SPEED (~0.0001) the object is placed
82 on the active object list and will be processed each tick (see also speed_left!).
83
84 If the speed field drops below the MIN_ACTIVE_SPEED the object is removed
85 from the active object list and it won't experience any processing per tick.
86
87 =item speed_left <number>
88
89 If this field is greater than 0 and the object is on the
90 active list (mostly means it's speed is also greater than 0):
91
92 - speed_left is decreased by 1
93 - and this object is processed and experiences a server tick.
94
95 If the object is on the active list and speed_left is lower or
96 equal to 0 the absolute value of the speed field is added to speed_left
97 on the end of the tick.
98
99 This means: the lower the speed field is (but still above MIN_ACTIVE_SPEED)
100 the more seldom the object is processed. And the higher the speed field is
101 the more often the object is processed.
102
103 =item no_drop (0|1)
104
105 Sets the flag FLAG_NO_DROP.
106 See Flags section below.
107
108 =item applied (0|1)
109
110 Sets the flag FLAG_APPLIED.
111 See Flags section below.
112
113 =item is_used_up (0|1)
114
115 Sets the flag FLAG_IS_USED_UP.
116 See Flags section below.
117
118 =item auto_apply (0|1)
119
120 Sets the flag FLAG_AUTO_APPLY.
121 See Flags section below.
122
123 =item no_steal (0|1)
124
125 Sets the flag FLAG_NO_STEAL.
126 See Flags section below.
127
128 =item reflecting (0|1)
129
130 Sets the flag FLAG_REFLECTING.
131 See Flags section below.
132
133 =item reflect_spell (0|1)
134
135 Sets the flag FLAG_REFL_SPELL.
136 See Flags section below.
137
138 =item no_skill_ident (0|1)
139
140 Sets the flag FLAG_NO_SKILL_IDENT.
141 See Flags section below.
142
143 =item activate_on_push (0|1) (default: 1)
144
145 Sets the flag FLAG_ACTIVATE_ON_PUSH.
146 See Flags section below.
147
148 =item activate_on_release (0|1) (default: 1)
149
150 Sets the flag FLAG_ACTIVATE_ON_RELEASE.
151 See Flags section below.
152
153 =item editable (more than deprecated)
154
155 This field had a special meaning for crossedit, which used parts
156 of the server code for editing. Wherever you see this attribute being
157 set in an archetype ignore it and/or remove it. No code interprets this
158 field anymore.
159
160 =back
161
162 =head3 Flags
163
164 Here are the effects of the flags described.
165
166 =over 4
167
168 =item FLAG_NO_DROP
169
170 An object can't be picked up and dropped.
171
172 =item FLAG_APPLIED
173
174 This flag mostly states whether this object has been 'applied' by the player.
175 For objects that are applied by the code or have this flag set in the archetype
176 it mostly means 'this object is active'.
177
178 For example the player adjustments of the hp/sp/grace fields and inheritance
179 of flags from objects in his inventory is toggled by this flag.
180
181 =item FLAG_IS_USED_UP
182
183 This flag controls whether an object is 'used up'. If it is set the 'food' field
184 of the object is decreased by 1 each tick, and if it is lower or equal 0 after tha
185 it is removed.
186
187 If also the flag FLAG_APPLIED is set, the 'duration' field controls whether
188 this object is removed or not, see the Force type below for the meaning
189 of the duration field in this context.
190
191 If FLAG_APPLIED is not set the object is destroyed.
192
193 =item FLAG_IS_A_TEMPLATE (internal use)
194
195 This flag is set on the inventory of generators like CREATORs and CONVERTERs,
196 or other objects that have the flags FLAG_GENERATOR and FLAG_CONTENT_ON_GEN set.
197
198 =item FLAG_AUTO_APPLY
199
200 This flag has currently only meaning for the TREASURE type, see below.
201
202 =item FLAG_ACTIVATE_ON_PUSH
203
204 This flag has only meaning for objects that can be linked together
205 with the 'connected' field and controls wether the object should
206 be activated when the connection is 'pushed' or it is 'released'.
207
208 This flag is by default on.
209
210 =item FLAG_ACTIVATE_ON_RELEASE
211
212 This flag has only meaning for objects that can be linked together
213 with the 'connected' field and controls wether the object should
214 be activated when the connection is 'pushed' or it is 'released'.
215
216 This flag is by default on.
217
218 =item FLAG_NO_STEAL
219
220 When this flag is set this object can't be stolen. The flag will be
221 resetted once the object is placed on a map.
222
223 When this flag is set on a monster it can defent attempts of stealing
224 (but in this context the flag is only used internally).
225
226 =item FLAG_NO_SKILL_IDENT
227
228 This flag is mostly used internal and prevents unidentified objects
229 (objects which don't have FLAG_IDENTIFIED set) being identified by
230 skills.
231
232 This flag is used to mark objects to never being identified by a skill
233 once a player failed to identify an object. So that multiple tries
234 of identifying aren't more effective than one.
235
236 =item FLAG_REFLECTING
237
238 This flag is used by spell effects (eg. SP_BOLT), THROWN_OBJ and ARROW
239 to indicate whether this object reflects off walls.
240
241 =item FLAG_REFL_SPELL
242
243 This flag indicates whether something reflects spells, like spell reflecting
244 amuletts.
245
246 =back
247
248 =head2 Description of type specific attributes
249
250 The beginning of the headers of the following subsection
251 are the server internal names for the objects types, see include/define.h.
252
253 =head3 TRANSPORT - type 2 - Player transports
254
255 This type is implemented by the transport extension and has currently no special
256 attributes that affect it.
257
258 =head3 ROD - type 3 - Rods that fire spells
259
260 Rods contain spells and can be fired by a player.
261
262 =over 4
263
264 =item level <number>
265
266 This attribute is used for calculating the spell level that can be fired
267 with this rod, it's also the maximum level of the spell that can be fired.
268 The level of the spell that is being fired depends mostly on
269 the 'use magic item' skill level of the player and 1/10 of the level of the
270 rod is added as bonus.
271
272 =item hp <number>
273
274 The amount of spellpoints this rod has left.
275
276 =item maxhp <number>
277
278 The maximum amount of spellpoints this rod has.
279
280 =item skill <skill name>
281
282 This field determines which skill you need to apply this object.
283
284 =back
285
286 =head3 TREASURE - type 4 - Treasures
287
288 This type of objects are for random treasure generation in maps.
289 If this object is applied by a player it will replace itself with it's
290 inventory. If it is automatically applied
291 generate a treasure and replace itself with the generated treasure.
292
293 Chests are also of this type, their treasures are generated by
294 the auto apply code on map instantiation.
295
296 =over 4
297
298 =item hp <number>
299
300 The number of treasures to generate.
301
302 =item exp <level>
303
304 If FLAG_AUTO_APPLY is not set the exp field has no further meaning
305 and the difficulty for the treasurecode only depends on the maps difficulty,
306 otherwise the exp field has the following meaning:
307
308 If this field is not 0 it is passed as the difficulty
309 to the treasure generation code to determine how good, how much
310 worth a treasure is or what bonuses it is given by the treasure code.
311
312 If this field is not set or 0 the difficulty of the map is passed to the treasure
313 generation code.
314
315 =item randomitems <treasurelist>
316
317 The treasurelist to use to generate the treasure which is put in the
318 treasure objects inventory.
319
320 =back
321
322 =head3 POTION - type 5 - Potions for drinking and other nastynesses
323
324 These objects contain a spell and will emit it on apply, which most
325 of the time has the meaning of 'drinking'.
326
327 If no resistancy field, stat field or attacktype is set and no spell
328 is put in the potion by the sp field or the randomitems the
329 potion will become an artifact and the artifact code decides which kind
330 of potion will be generated.
331
332 If the potion has FLAG_CURSED or FLAG_DAMNED set the usage of this potion
333 will yield an explosion and hurt the player.
334
335 =over 4
336
337 =item Str, Dex, Con, Int, Wis, Cha, Pow <number>
338
339 These stat fields determine how many stat points the player gets
340 when he applies this potion.
341
342 If FLAG_CURSED or FLAG_DAMNED is set the player will loose that many stat points.
343
344 =item sp <number>
345
346 If this field is set and the randomitems field is not set
347 the field is interpreted as spell number, please look the right
348 number up in common/loader.C.
349
350 If this field is set the randomitems field will be unset by the
351 map loading code.
352
353 =item attacktype <attacktype>
354
355 This field has some special meaning in potions, currently the
356 bits for AT_DEPLETE and AT_GODPOWER control whethere this is a
357 restoration potion or improvement potion.
358 See include/attackinc.h for the bits of these types.
359
360 If AT_DEPLETE is set the player will be restored and the ARCH_DEPLETION
361 will be removed from him. If the potion has FLAG_CURSED or FLAG_DAMNED
362 set the player will be drained a random stat by inserting an ARCH_DEPLETION
363 into him.
364
365 If AT_GODPOWER is enabled the player will gain +1 maxvalue in his hp, sp or grace stat.
366 When the potion has FLAG_CURSED or FLAG_DAMNED set he will loose one in one of these stats.
367
368 =item resist_<resistancy> <number>
369
370 If this stat is set and no spell is in the potion the potion
371 will create a force that give the player this specific resistancy.
372 The forces type will be changed to POTION_EFFECT (see POTION_EFFECT type below)
373 and the potion will last 10 times longer than the default force archetype
374 FORCE_NAME (at the moment of this writing spell/force.arc).
375
376 =item randomitems <treasurelist>
377
378 The inventory/spell of the potion will be created by calling the treasure code
379 with the treasurelist specified here. (I guess it's highly undefined what
380 happens if there is not a spell in the potions inventory).
381
382 =item on_use_yield <archetype>
383
384 When this object is applied an instance of <archetype> will be created.
385
386 =item subtypes <potion subtype>
387
388 see include/spells.h for possible potion subtypes, there are currently 4:
389
390 =over 4
391
392 =item POT_SPELL
393
394 Unused, default behaiour of a potion.
395
396 =item POT_DUST
397
398 This potion can be thrown to cast the spell that it has in it's inventory,
399 the behaviour is not defined if there is not a spell in the inventory and the
400 server will log an error.
401
402 =item POT_FIGURINE
403
404 Unused, default behaiour of a potion.
405
406 =item POT_BALM
407
408 Unused, default behaiour of a potion.
409
410 =back
411
412 =back
413
414 =head3 FOOD - type 6 - Eatable stuff
415
416 This is for objects that are representing general eatables like
417 beef or bread.
418
419 The main difference between FOOD, FLESH and DRINK is that they
420 give different messages.
421
422 The specialty of FLESH is that it inherits the resistancies of the
423 monsters it was generated in and will let dragons raise their resistancies
424 with that. If the monster has the POISON attacktype the FLESH
425 will change into POISON.
426
427 If a player runs low on food he will grab for FOOD, DRINK and POISON
428 and if he doesn't find any of that he will start eating FLESH.
429
430 =over 4
431
432 =item title <string>
433
434 If the food has a title or is cursed it is considered 'special', which means that the
435 fields Str, Dex, Con, Int, Wis, Pow, resist_<resistancy>, hp and sp
436 are interpreted and have further effects on the player.
437
438 The higher the food field is the longer the improvement of the player lasts
439 (except for hp and sp).
440
441 =item food <number>
442
443 This is the amount of food points the player gets when he eats this.
444
445 =item on_use_yield <archetype>
446
447 When this object is applied an instance of <archetype> will be created.
448
449 =back
450
451 =head3 POISON - type 7 - Poisonous stuff
452
453 This type is for objects that can poison the player when drinking.
454 When applied it will hit the attacked with AT_POISON and will create
455 a POISONING object in the one who was hit.
456
457 =over 4
458
459 =item level <number>
460
461 This field affects the propability of poisoning. The higher the level difference
462 between the one who is hit and the poision the mose propable it is the attacked
463 one will be poisoned.
464
465 =item slaying <race>
466
467 On poison this field has the usual meaning of 'slaying', when the
468 ones race matches the slaying field the damage done by the poison
469 is multiplied by 3.
470
471 =item hp <number>
472
473 This is the amount of damage the player will receive from applying this. The
474 attacktype AT_POISON will be used to hit the player and the damage will
475 determine the strenght, duration and depletion of stats of the poisoning. The
476 created POISONING object which is being placed in the one who was attacked will
477 get the damage from this field (which is maybe adjusted by slaying or the
478 resistancies).
479
480 =item food <number>
481
482 1/4 of <number> will be drained from the players food.
483
484 =item on_use_yield <archetype>
485
486 When this object is applied an instance of <archetype> will be created.
487
488 =back
489
490 =head3 BOOK - type 8 - Readable books
491
492 This type is basically for representing text books in the game.
493
494 Reading a book also identifys it (if FLAG_NO_SKILL_IDENT is not set).
495
496 =over 4
497
498 =item msg <text>
499
500 This is the contents of the book. When this field is unset
501 at treasure generation a random text will be inserted.
502
503 =item skill <skill name>
504
505 The skill required to read this book. (The most resonable
506 skill would be literacy).
507
508 =item exp <number>
509
510 The experience points the player get for reading this book.
511
512 =item subtype <readable subtype>
513
514 This field determines the type of the readable.
515 Please see common/readable.C in the readable_message_types table.
516
517 =back
518
519 =head3 CLOCK - type 9 - Clocks
520
521 This type of objects just display the time when being applied.
522
523 =head3 LIGHTNING - type 12 - Lightnings (DEPRECATED, see SPELL_EFFECT subtype SP_BOLT)
524
525 This is a spell effect of a moving bolt. It moves straigt forward
526 through the map until something blocks it.
527 If FLAG_REFLECTING is set it even reflects on walls.
528
529 FLAG_IS_TURNABLE should be set on these objects.
530
531 =over 4
532
533 =item move_type <movetype>
534
535 This field affects the move type with which the lightning moves through
536 the map and which map cells will reflect or block it.
537
538 =item attacktype <attacktype>
539
540 The attacktype with which it hits the objects on the map.
541
542 =item dam <number>
543
544 The damage this bolt inflicts when it hits objects on the map.
545
546 =item Dex <number>
547
548 This is the fork percentage, it is reduced by 10 per fork.
549 And the damage is halved on each fork.
550
551 =item Con <number>
552
553 This value is a percentage of which the forking lightning
554 is deflected to the left. This value should be mostly used internally.
555
556 =item duration <number>
557
558 The duration the bolt stays on a map cell. This field is decreased each time
559 the object is processed (see the meaning of speed and speed_left fields in
560 the object general description).
561
562 =item range <number>
563
564 This is the range of the bolt, each space it advances this field is decreased.
565
566 =back
567
568
569 =head3 WEAPON - type 15 - Weapons
570
571 This type is for general hack and slash weapons like swords, maces
572 and daggers and and ....
573
574 =over 4
575
576 =item weapontype <type id>
577
578 decides what attackmessages are generated, see include/define.h
579
580 =item attacktype <bitmask>
581
582 bitfield which decides the attacktype of the damage, see include/attackinc.h
583
584 =item dam <number>
585
586 amount of damage being done with the attacktype
587
588 =item item_power <level>
589
590 the itempower of this weapon.
591
592 =item name
593
594 the name of the weapon.
595
596 =item level (internal)
597
598 The improvement state of the weapon.
599 If this field is greater than 0 the 'name' field starts with the
600 characters name who improved this weapon.
601
602 =item last_eat (internal)
603
604 seems to be the amount of improvements of a weapon,
605 the formular for equipping a weapon seems to be (server/apply.C:check_weapon_power):
606
607 ((who->level / 5) + 5) >= op->last_eat
608
609 =item last_sp
610
611 the weapon speed (see magic description)
612
613 =item food <number>
614
615 addition to food regeneration of the player
616
617 =item hp <number>
618
619 addition to health regeneration
620
621 =item sp <number>
622
623 addition to mana regeneration
624
625 =item grace <number>
626
627 addititon to grace regeneration
628
629 =item gen_sp_armour <number>
630
631 the players gen_sp_armour field (which is per default 10) is added the <number> amount.
632 gen_sp_armour seems to be a factor with which gen_sp in do_some_living()
633 is multiplied: gen_sp *= 10/<number>
634 meaning: values > 10 of gen_sp_armour limits the amout of regenerated
635 spellpoints.
636
637 generally this field on weapons is in ranges of 1-30 and decides the slowdown of the
638 sp regeneration.
639
640 =item body_<body slot/part>
641
642 the part of the body you need to use this weapon, possible values should be
643 looked up in common/item.C at body_locations.
644
645 =item resist_<resistnacy> <number>
646
647 this is the factor with which the difference of the players resistancy and 100%
648 is multiplied, something like this:
649
650 additional_resistancy = (100 - current_resistanct) * (<number>/100)
651
652 if <number> is negative it is added to the total vulnerabilities,
653 and later the total resistance is decided by:
654
655 'total resistance = total protections - total vulnerabilities'
656
657 see also common/living.C:fix_player
658
659 =item patch_(attuned|repelled|denied)
660
661 this field modifies the pathes the player is attuned to, see include/spells.h PATH_*
662 for the pathes.
663
664 =item luck <number>
665
666 this luck is added to the players luck
667
668 =item move_type
669
670 if the weapon has a move_type set the player inherits it's move_type
671
672 =item exp <number>
673
674 the added_speed and bonus_speed of the player is raised by <number>/3.
675 if <number> < 0 then the added_speed is decreased by <number>
676
677 =item weight
678
679 the weight of the weapon
680
681 =item magic
682
683 the magic field affects the amounts of the following fields:
684
685 - wc : the players wc is adjusted by: player->wc -= (wc + magic)
686
687 - ac : the players ac is lowered by (ac + magic) if (player->ac + magic) > 0
688
689 - dam: the players dam is adjusted by: player->dam += (dam + magic)
690
691 - weapon speed (last_sp): weapon_speed is calculated by: (last_sp * 2 - magic) / 2
692 (minium is 0)
693
694 =item ac <number>
695
696 the amount of ac points the player's ac is decreased
697
698 =item wc <number>
699
700 the amount of wc points the player's wc is decreased
701
702 =back
703
704 =head4 Player inherits following flags from weapons:
705
706 FLAG_LIFESAVE
707 FLAG_REFL_SPELL
708 FLAG_REFL_MISSILE
709 FLAG_STEALTH
710 FLAG_XRAYS
711 FLAG_BLIND
712 FLAG_SEE_IN_DARK
713 FLAG_UNDEAD
714
715 =head3 GRIMREAPER - type 28 - Grimreapers
716
717 These type are mostly used for monsters, they give the
718 monster the ability to dissapear after 10 hits with AT_DRAIN.
719
720 =over 4
721
722 =item value <number>
723
724 This field stores the hits the monster did yet.
725
726 =back
727
728 =head3 DRINK - type 54 - Drinkable stuff
729
730 See FOOD description.
731
732 =head3 CHECK_INV - type 64 - Inventory checkers
733
734 This object checks whether the player has a specific item in his
735 inventory when he moves above the inventory checker. If the player has
736 the item (or not, which can be controlled with a flag) a connection will be triggered.
737
738 If you set move_block you can deny players and monsters to reach the space where
739 the inventory checker is on, see 'move_block' description below.
740
741 The conditions specified by hp, slaying and race are concationated with OR.
742 So matching one of those conditions is enough.
743
744 =over 4
745
746 =item move_block <move type bitmask>
747
748 If you set this field to block a movetype the move code will block any moves
749 onto the space with the inventory checker, IF the moving object doesn't have
750 (or has - if last_sp = 0) the item that the checker is searching for.
751
752 =item last_sp (0|1)
753
754 If last_sp is 1 'having' the item that is being checked for will
755 activate the connection or make the space with the checker non-blocking.
756 If last_sp is 0 'not having' the item will activate the connection
757 or make the space with the checker non-blocking.
758
759 =item last_heal (0|1)
760
761 If last_heal is 1 the matching item will be removed if the inventory checker
762 activates a connection and finds the item in the inventory.
763
764 (A inventory checker that blocks a space won't remove anything from inventories)
765
766 =item hp <number>
767
768 If this field is not 0 the inventory checker will search for an object
769 with the type id <number>.
770
771 =item slaying <string>
772
773 If this field is set the inventory checker will search for an object that
774 has the same string in the slaying field (for example a key string of a key).
775
776 =item race <string>
777
778 If this field is set the inventory checker will search for an object which
779 has the archetype name that matches <string>.
780
781 =item connected <connection id>
782
783 This is the connection that will be activated.
784
785 =back
786
787 =head3 FLESH - type 72 - Organs and body parts
788
789 See FOOD description.
790
791 =head3 MISC_OBJECT - type 79 - Misc. objects
792
793 A type for any object that has no special behaviour.
794
795 =head3 HOLE - type 94 - Holes
796
797 Holes are holes in the ground where objects can fall through. When the hole
798 opens and/or is completly open all objects above it fall through (more
799 precisely: if their head is above the hole).
800
801 Trapdoors can only transfer the one who falls through to other coordinates
802 on the B<same> map.
803
804 =over 4
805
806 =item maxsp (0|1)
807
808 This field negates the state of the connection: When maxsp is 1 the pit will
809 open/close when the connection is deactivated. Otherwise it will open/close
810 when the connection is activated. This field only has effect when the
811 connection is triggered. So if you put a closed hole on a map, and the
812 connection is deactivated, and maxsp is 1 the hole will remain closed until the
813 connection was triggered once.
814
815 =item connected <connection id>
816
817 This is the connection id, which lets the hole opening or closing when
818 activated. The flags FLAG_ACTIVATE_ON_PUSH and FLAG_ACTIVATE_ON_RELEASE control
819 at which connection state the object is activated.
820
821 For example: if FLAG_ACTIVATE_ON_RELEASE is set to 0 the hole won't react when
822 the connection is released.
823
824 =item wc <number> (internal)
825
826 This is an internal flag. If it is greater than 0 it means that the hole is not
827 yet fully open. More preciesly: this field is the animation-step and if it is
828 set to the 'closed' step of the animation the hole is closed and if it is on
829 the 'open' animation step (wc = 0), the hole is open.
830
831 =item sp <number>
832
833 The destination y coordinates on the same map.
834
835 =item hp <number>
836
837 The destination x coordinates on the same map.
838
839 =back
840
841 =head3 POISONING - type 105 - The poisoning of players and monsters
842
843 This type is doing the actual damage to the ones who were attacked
844 via AT_POISON (or drank POISON).
845
846 The duration is handled via the FLAG_IS_USED_UP mechanism (please look
847 there for details).
848
849 =over 4
850
851 =item dam <number>
852
853 Each time the poisoning is processed (which is determined by the speed and speed_left
854 fields, see the general object attributes above) it hits the player with
855 <number> damage and the AT_INTERNAL attacktype (means: it will simply
856 hit the player with no strings attached).
857
858 =item food <number>
859
860 Just a note: The posion is removed when food == 1 and not when
861 the whole duration is up, because the POISONING code has to remove
862 the poison-effects from the player before the FLAG_IS_USED_UP mechanism
863 deletes the POISONING object.
864
865 =back
866
867 =head3 FORCE - type 114 - Forces
868
869 Forces are a very 'thin' type. They don't have much behaviour other than
870 disappearing after a time and/or affecting the player if they are in his
871 inventory.
872
873 Forces only take effect on the player if they have set FLAG_APPLIED.
874
875 Whether the duration field is processed or not a tick is controlled via the
876 speed and speed_left field. Look above at the generic description of these
877 fields.
878
879 NOTE: Setting FLAG_IS_USED_UP on an force will also consider the 'food' field
880 like stated above in the FLAG_IS_USED_UP description. BUT: If the food field reaches
881 0 before duration and FLAG_APPLIED is set, the force will last for 'duration'.
882 If the FLAG_APPLIED is not set the force is removed when food reaches 0.
883 Generally this means: FLAG_IS_USED_UP doesn't have good semantics on forces.
884
885 =over 4
886
887 =item duration
888
889 While this field is greater than 0 the force/object is not destroyed. It is
890 decreased each tick by 1.
891
892 If it reaches 0 the force/object is destroyed.
893
894 This field can have this meaning for B<any> object if that object has
895 FLAG_IS_USED_UP and FLAG_APPLIED set. See the description of FLAG_IS_USED_UP
896 what happens then.
897
898 =back
899
900 =head3 POTION_EFFECT - type 115 - Potion effects (resistancies)
901
902 This object is generated by the POTION code when the potion is a resistance
903 giving potion. It has mainly the same behaviour as a FORCE.
904
905 The specialty of the potion effect is that the resistancy it gives is absolute,
906 so if you drin a resistancy potion of fire+60 you will get 60% resistancy to
907 fire.
908
909 Multiple potion effects only give you the maximum of their resistancy.