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

# 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     =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 elmex 1.2 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 elmex 1.4 =item speed <number>
80 elmex 1.2
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 elmex 1.7 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 elmex 1.2 =item no_drop (0|1)
104    
105 elmex 1.4 Sets the flag FLAG_NO_DROP.
106     See Flags section below.
107 elmex 1.2
108     =item applied (0|1)
109    
110 elmex 1.4 Sets the flag FLAG_APPLIED.
111     See Flags section below.
112 elmex 1.2
113     =item is_used_up (0|1)
114    
115 elmex 1.4 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 elmex 1.2
123 elmex 1.8 =item no_steal (0|1)
124    
125     Sets the flag FLAG_NO_STEAL.
126     See Flags section below.
127    
128 elmex 1.10 =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 elmex 1.9 =item no_skill_ident (0|1)
139    
140     Sets the flag FLAG_NO_SKILL_IDENT.
141     See Flags section below.
142    
143 elmex 1.5 =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 elmex 1.2 =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 elmex 1.1 =over 4
167    
168 elmex 1.2 =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 elmex 1.3 If FLAG_APPLIED is not set the object is destroyed.
192    
193 elmex 1.4 =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 elmex 1.5 =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 elmex 1.8 =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 elmex 1.9 =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 elmex 1.10 =item FLAG_REFLECTING
237    
238 elmex 1.12 This flag is used by spell effects (eg. SP_BOLT), THROWN_OBJ and ARROW
239 elmex 1.10 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 elmex 1.1 =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 elmex 1.4 =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 elmex 1.3
384 elmex 1.7 When this object is applied an instance of <archetype> will be created.
385 elmex 1.3
386 elmex 1.4 =item subtypes <potion subtype>
387 elmex 1.3
388 elmex 1.4 see include/spells.h for possible potion subtypes, there are currently 4:
389 elmex 1.3
390     =over 4
391    
392 elmex 1.4 =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 elmex 1.3
406 elmex 1.4 =item POT_BALM
407 elmex 1.3
408 elmex 1.4 Unused, default behaiour of a potion.
409 elmex 1.3
410 elmex 1.4 =back
411 elmex 1.3
412     =back
413    
414 elmex 1.7 =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 elmex 1.8 with that. If the monster has the POISON attacktype the FLESH
425     will change into POISON.
426 elmex 1.7
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 elmex 1.8 =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 elmex 1.9 =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 elmex 1.10 =head3 CLOCK - type 9 - Clocks
520    
521     This type of objects just display the time when being applied.
522    
523 elmex 1.12 =head3 LIGHTNING - type 12 - Lightnings (DEPRECATED, see SPELL_EFFECT subtype SP_BOLT)
524 elmex 1.10
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 elmex 1.11 =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 elmex 1.10 =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 elmex 1.1 =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 elmex 1.2 =item dam <number>
585 elmex 1.1
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 elmex 1.2 =item food <number>
614 elmex 1.1
615     addition to food regeneration of the player
616    
617 elmex 1.2 =item hp <number>
618 elmex 1.1
619     addition to health regeneration
620    
621 elmex 1.2 =item sp <number>
622 elmex 1.1
623     addition to mana regeneration
624    
625 elmex 1.2 =item grace <number>
626 elmex 1.1
627     addititon to grace regeneration
628    
629 elmex 1.2 =item gen_sp_armour <number>
630 elmex 1.1
631 elmex 1.2 the players gen_sp_armour field (which is per default 10) is added the <number> amount.
632 elmex 1.1 gen_sp_armour seems to be a factor with which gen_sp in do_some_living()
633 elmex 1.2 is multiplied: gen_sp *= 10/<number>
634 elmex 1.1 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 elmex 1.2 =item resist_<resistnacy> <number>
646 elmex 1.1
647     this is the factor with which the difference of the players resistancy and 100%
648     is multiplied, something like this:
649    
650 elmex 1.2 additional_resistancy = (100 - current_resistanct) * (<number>/100)
651 elmex 1.1
652 elmex 1.2 if <number> is negative it is added to the total vulnerabilities,
653 elmex 1.1 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 elmex 1.2 =item luck <number>
665 elmex 1.1
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 elmex 1.2 =item exp <number>
673 elmex 1.1
674 elmex 1.2 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 elmex 1.1
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 elmex 1.2 =item ac <number>
695 elmex 1.1
696     the amount of ac points the player's ac is decreased
697    
698 elmex 1.2 =item wc <number>
699 elmex 1.1
700 elmex 1.4 the amount of wc points the player's wc is decreased
701 elmex 1.1
702     =back
703    
704     =head4 Player inherits following flags from weapons:
705    
706 elmex 1.4 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 elmex 1.11 =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 elmex 1.7 =head3 DRINK - type 54 - Drinkable stuff
729    
730     See FOOD description.
731    
732 elmex 1.6 =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 elmex 1.7 =head3 FLESH - type 72 - Organs and body parts
788    
789     See FOOD description.
790    
791 elmex 1.11 =head3 MISC_OBJECT - type 79 - Misc. objects
792    
793     A type for any object that has no special behaviour.
794    
795 elmex 1.5 =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 elmex 1.8 =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 elmex 1.4 =head3 FORCE - type 114 - Forces
868    
869     Forces are a very 'thin' type. They don't have much behaviour other than
870 elmex 1.5 disappearing after a time and/or affecting the player if they are in his
871     inventory.
872 elmex 1.4
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 elmex 1.7 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 elmex 1.4 =over 4
886    
887     =item duration
888    
889 elmex 1.5 While this field is greater than 0 the force/object is not destroyed. It is
890     decreased each tick by 1.
891 elmex 1.4
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 elmex 1.5 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 elmex 1.4
905     The specialty of the potion effect is that the resistancy it gives is absolute,
906 elmex 1.5 so if you drin a resistancy potion of fire+60 you will get 60% resistancy to
907     fire.
908 elmex 1.4
909     Multiple potion effects only give you the maximum of their resistancy.