… | |
… | |
7 | |
7 | |
8 | This documentation is in a sketchy state. It's mostly |
8 | This documentation is in a sketchy state. It's mostly |
9 | used to collect notes about the internal behaviour of the |
9 | used to collect notes about the internal behaviour of the |
10 | objects. |
10 | objects. |
11 | |
11 | |
|
|
12 | =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 | Field names will be displayed like I<this>. |
|
|
19 | |
12 | =head2 About archetypes and objects |
20 | =head2 About archetypes and objects |
13 | |
21 | |
14 | Field denotes an attribute of an archetype. |
22 | Archetypes are 'templates' of objects. If an object is derived |
|
|
23 | from an archetype the object fields will be set to the corresponding |
|
|
24 | fields in the archetype. |
|
|
25 | |
|
|
26 | When a map is instanciated (loaded), the 'object' description on the |
|
|
27 | map are considered patches of the archetype. |
|
|
28 | |
|
|
29 | This document does explain the behaviour of the objects and the meaning of |
|
|
30 | their fields in the server engine, which are derived from archetypes. |
|
|
31 | |
15 | This is an example of an archetype: |
32 | This is an example of an archetype: |
16 | |
33 | |
17 | Object button_trigger |
34 | Object button_trigger |
18 | name button |
35 | name button |
19 | type 30 |
36 | type 30 |
… | |
… | |
30 | editable 48 |
47 | editable 48 |
31 | visibility 50 |
48 | visibility 50 |
32 | weight 1 |
49 | weight 1 |
33 | end |
50 | end |
34 | |
51 | |
35 | This archetype has the name 'button_trigger' and the objects that |
52 | The first B<field> is I<name>: 'button_trigger', which basically means that |
36 | inherit from this archetype have the name 'button'. |
53 | instances (objects) that are created/derived from this archetype have the |
|
|
54 | name 'button' (which means that the field I<name> of the object will be set |
|
|
55 | to the same value as the archetypes field I<name>). |
37 | |
56 | |
38 | The next field 'type' decides the main behaviour of this archetype. |
57 | The next field I<type> decides the behaviour of objects derived from this archetype. |
39 | For a comprehensive list of types see include/define.h. For this case |
58 | For a comprehensive list of types see include/define.h. For this case |
40 | you might find a line like: |
59 | you might find a line like: |
41 | |
60 | |
42 | #define TRIGGER_BUTTON 30 |
61 | #define TRIGGER_BUTTON 30 |
43 | |
62 | |
44 | The server internally works with objects that 'inherit' attributes from |
63 | The behaviour of objects is further determined by B<Flags>, like FLAG_APPLIED. |
45 | an archetype. They have a similar set of attributes. |
64 | For more information on this look in the Flags subsection in the next section |
46 | |
65 | |
47 | The following documentation will also document the meaning of code internal |
66 | The following documentation will also document the meaning of internal used |
48 | attributes of objects. These attributes are marked as '(internal)' and can't |
67 | fields of objects. These fields are marked as (internal) and can't |
49 | or shouldn't be set by an archetype. If the internal names differs the |
68 | or shouldn't be set by an archetype. |
50 | external name (for the archetypes) for the attribute is written behind it. |
|
|
51 | |
69 | |
52 | =head2 Description of generic archetype and object attributes |
70 | =head2 Description of (mostly) generic object fields |
53 | |
71 | |
54 | These are the fields that most of the objects have and/or their |
72 | These are the fields that most of the objects have and/or their |
55 | default behaviour. |
73 | default behaviour. |
56 | |
74 | |
57 | =over 4 |
75 | =over 4 |
… | |
… | |
65 | The name of a collection of these objects (the plural of the name). |
83 | The name of a collection of these objects (the plural of the name). |
66 | |
84 | |
67 | =item face <facename> |
85 | =item face <facename> |
68 | |
86 | |
69 | The graphical appearance of this object. |
87 | The graphical appearance of this object. |
|
|
88 | |
|
|
89 | =item x <number> |
|
|
90 | |
|
|
91 | The x position of the object when it is on a map. |
|
|
92 | |
|
|
93 | =item y <number> |
|
|
94 | |
|
|
95 | The y position of the object when it is on a map. |
|
|
96 | |
|
|
97 | =item map (internal) |
|
|
98 | |
|
|
99 | The map the object is on. |
70 | |
100 | |
71 | =item invisible <number> |
101 | =item invisible <number> |
72 | |
102 | |
73 | If the <number> is greater than 0 the object is invisible. |
103 | If the <number> is greater than 0 the object is invisible. |
74 | For players this field reflects the duration of the invisibility |
104 | For players this field reflects the duration of the invisibility |
… | |
… | |
98 | |
128 | |
99 | This means: the lower the speed field is (but still above MIN_ACTIVE_SPEED) |
129 | 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 |
130 | the more seldom the object is processed. And the higher the speed field is |
101 | the more often the object is processed. |
131 | the more often the object is processed. |
102 | |
132 | |
|
|
133 | =item connected <number> |
|
|
134 | |
|
|
135 | When this field is set the object will be linked to a connection with the |
|
|
136 | id <number>. What happens when the connection is 'activated' depends on the |
|
|
137 | type of the object. |
|
|
138 | |
|
|
139 | When FLAG_ACTIVATE_ON_PUSH and FLAG_ACTIVATE_ON_RELEASE they will control |
|
|
140 | when to activate the object, see description of these below for further details. |
|
|
141 | |
103 | =item no_drop (0|1) |
142 | =item no_drop (0|1) |
104 | |
143 | |
105 | Sets the flag FLAG_NO_DROP. |
144 | Sets the flag FLAG_NO_DROP. |
106 | See Flags section below. |
145 | See Flags section below. |
107 | |
146 | |
… | |
… | |
113 | =item is_used_up (0|1) |
152 | =item is_used_up (0|1) |
114 | |
153 | |
115 | Sets the flag FLAG_IS_USED_UP. |
154 | Sets the flag FLAG_IS_USED_UP. |
116 | See Flags section below. |
155 | See Flags section below. |
117 | |
156 | |
|
|
157 | =item changing (0|1) |
|
|
158 | |
|
|
159 | Sets the flag FLAG_CHANGING. |
|
|
160 | See Flags section below. |
|
|
161 | |
118 | =item auto_apply (0|1) |
162 | =item auto_apply (0|1) |
119 | |
163 | |
120 | Sets the flag FLAG_AUTO_APPLY. |
164 | Sets the flag FLAG_AUTO_APPLY. |
121 | See Flags section below. |
165 | See Flags section below. |
122 | |
166 | |
|
|
167 | =item no_steal (0|1) |
|
|
168 | |
|
|
169 | Sets the flag FLAG_NO_STEAL. |
|
|
170 | See Flags section below. |
|
|
171 | |
|
|
172 | =item reflecting (0|1) |
|
|
173 | |
|
|
174 | Sets the flag FLAG_REFLECTING. |
|
|
175 | See Flags section below. |
|
|
176 | |
|
|
177 | =item reflect_spell (0|1) |
|
|
178 | |
|
|
179 | Sets the flag FLAG_REFL_SPELL. |
|
|
180 | See Flags section below. |
|
|
181 | |
|
|
182 | =item no_skill_ident (0|1) |
|
|
183 | |
|
|
184 | Sets the flag FLAG_NO_SKILL_IDENT. |
|
|
185 | See Flags section below. |
|
|
186 | |
123 | =item activate_on_push (0|1) (default: 1) |
187 | =item activate_on_push (0|1) (default: 1) |
124 | |
188 | |
125 | Sets the flag FLAG_ACTIVATE_ON_PUSH. |
189 | Sets the flag FLAG_ACTIVATE_ON_PUSH. |
126 | See Flags section below. |
190 | See Flags section below. |
127 | |
191 | |
… | |
… | |
131 | See Flags section below. |
195 | See Flags section below. |
132 | |
196 | |
133 | =item editable (more than deprecated) |
197 | =item editable (more than deprecated) |
134 | |
198 | |
135 | This field had a special meaning for crossedit, which used parts |
199 | This field had a special meaning for crossedit, which used parts |
136 | of the server code for editing. Wherever you see this attribute being |
200 | of the server code for editing. Wherever you see this field being |
137 | set in an archetype ignore it and/or remove it. No code interprets this |
201 | set in an archetype ignore it and/or remove it. No code interprets this |
138 | field anymore. |
202 | field anymore. |
139 | |
203 | |
140 | =back |
204 | =back |
141 | |
205 | |
… | |
… | |
168 | this object is removed or not, see the Force type below for the meaning |
232 | this object is removed or not, see the Force type below for the meaning |
169 | of the duration field in this context. |
233 | of the duration field in this context. |
170 | |
234 | |
171 | If FLAG_APPLIED is not set the object is destroyed. |
235 | If FLAG_APPLIED is not set the object is destroyed. |
172 | |
236 | |
|
|
237 | =item FLAG_CHANGING |
|
|
238 | |
|
|
239 | If the 'state' field of the object is 0 the object will be processed periodically. |
|
|
240 | Otherwise it won't "change"; |
|
|
241 | |
173 | =item FLAG_IS_A_TEMPLATE (internal use) |
242 | =item FLAG_IS_A_TEMPLATE (internal use) |
174 | |
243 | |
175 | This flag is set on the inventory of generators like CREATORs and CONVERTERs, |
244 | This flag is set on the inventory of generators like CREATORs and CONVERTERs, |
176 | or other objects that have the flags FLAG_GENERATOR and FLAG_CONTENT_ON_GEN set. |
245 | or other objects that have the flags FLAG_GENERATOR and FLAG_CONTENT_ON_GEN set. |
177 | |
246 | |
… | |
… | |
183 | |
252 | |
184 | This flag has only meaning for objects that can be linked together |
253 | This flag has only meaning for objects that can be linked together |
185 | with the 'connected' field and controls wether the object should |
254 | with the 'connected' field and controls wether the object should |
186 | be activated when the connection is 'pushed' or it is 'released'. |
255 | be activated when the connection is 'pushed' or it is 'released'. |
187 | |
256 | |
|
|
257 | What 'pushed' and 'released' means depends on the object that |
|
|
258 | activates the connection. |
|
|
259 | |
188 | This flag is by default on. |
260 | This flag is by default on. |
189 | |
261 | |
190 | =item FLAG_ACTIVATE_ON_RELEASE |
262 | =item FLAG_ACTIVATE_ON_RELEASE |
191 | |
263 | |
192 | This flag has only meaning for objects that can be linked together |
264 | This flag has only meaning for objects that can be linked together |
193 | with the 'connected' field and controls wether the object should |
265 | with the 'connected' field and controls wether the object should |
194 | be activated when the connection is 'pushed' or it is 'released'. |
266 | be activated when the connection is 'pushed' or it is 'released'. |
195 | |
267 | |
|
|
268 | What 'pushed' and 'released' means depends on the object that |
|
|
269 | activates the connection. |
|
|
270 | |
196 | This flag is by default on. |
271 | This flag is by default on. |
197 | |
272 | |
198 | =back |
273 | =item FLAG_NO_STEAL |
199 | |
274 | |
200 | =head2 Description of type specific attributes |
275 | When this flag is set this object can't be stolen. The flag will be |
|
|
276 | resetted once the object is placed on a map. |
|
|
277 | |
|
|
278 | When this flag is set on a monster it can defent attempts of stealing |
|
|
279 | (but in this context the flag is only used internally). |
|
|
280 | |
|
|
281 | =item FLAG_NO_SKILL_IDENT |
|
|
282 | |
|
|
283 | This flag is mostly used internal and prevents unidentified objects |
|
|
284 | (objects which don't have FLAG_IDENTIFIED set) being identified by |
|
|
285 | skills. |
|
|
286 | |
|
|
287 | This flag is used to mark objects to never being identified by a skill |
|
|
288 | once a player failed to identify an object. So that multiple tries |
|
|
289 | of identifying aren't more effective than one. |
|
|
290 | |
|
|
291 | =item FLAG_REFLECTING |
|
|
292 | |
|
|
293 | This flag is used by spell effects (eg. SP_BOLT), THROWN_OBJ and ARROW |
|
|
294 | to indicate whether this object reflects off walls. |
|
|
295 | |
|
|
296 | =item FLAG_REFL_SPELL |
|
|
297 | |
|
|
298 | This flag indicates whether something reflects spells, like spell reflecting |
|
|
299 | amuletts. |
|
|
300 | |
|
|
301 | =back |
|
|
302 | |
|
|
303 | =head2 Description of type specific fields and behaviour |
201 | |
304 | |
202 | The beginning of the headers of the following subsection |
305 | The beginning of the headers of the following subsection |
203 | are the server internal names for the objects types, see include/define.h. |
306 | are the server internal names for the objects types, see include/define.h. |
204 | |
307 | |
205 | =head3 TRANSPORT - type 2 - Player transports |
308 | =head3 TRANSPORT - type 2 - Player transports |
206 | |
309 | |
207 | This type is implemented by the transport extension and has currently no special |
310 | This type is implemented by the transport extension and has currently no special |
208 | attributes that affect it. |
311 | fields that affect it. |
209 | |
312 | |
210 | =head3 ROD - type 3 - Rods that fire spells |
313 | =head3 ROD - type 3 - Rods that fire spells |
211 | |
314 | |
212 | Rods contain spells and can be fired by a player. |
315 | Rods contain spells and can be fired by a player. |
213 | |
316 | |
214 | =over 4 |
317 | =over 4 |
215 | |
318 | |
216 | =item level <number> |
319 | =item level <number> |
217 | |
320 | |
218 | This attribute is used for calculating the spell level that can be fired |
321 | This field is used for calculating the spell level that can be fired |
219 | with this rod, it's also the maximum level of the spell that can be fired. |
322 | with this rod, it's also the maximum level of the spell that can be fired. |
220 | The level of the spell that is being fired depends mostly on |
323 | The level of the spell that is being fired depends mostly on |
221 | the 'use magic item' skill level of the player and 1/10 of the level of the |
324 | the 'use magic item' skill level of the player and 1/10 of the level of the |
222 | rod is added as bonus. |
325 | rod is added as bonus. |
223 | |
326 | |
… | |
… | |
371 | The main difference between FOOD, FLESH and DRINK is that they |
474 | The main difference between FOOD, FLESH and DRINK is that they |
372 | give different messages. |
475 | give different messages. |
373 | |
476 | |
374 | The specialty of FLESH is that it inherits the resistancies of the |
477 | The specialty of FLESH is that it inherits the resistancies of the |
375 | monsters it was generated in and will let dragons raise their resistancies |
478 | monsters it was generated in and will let dragons raise their resistancies |
376 | with that. |
479 | with that. If the monster has the POISON attacktype the FLESH |
|
|
480 | will change into POISON. |
377 | |
481 | |
378 | If a player runs low on food he will grab for FOOD, DRINK and POISON |
482 | If a player runs low on food he will grab for FOOD, DRINK and POISON |
379 | and if he doesn't find any of that he will start eating FLESH. |
483 | and if he doesn't find any of that he will start eating FLESH. |
380 | |
484 | |
381 | =over 4 |
485 | =over 4 |
… | |
… | |
396 | =item on_use_yield <archetype> |
500 | =item on_use_yield <archetype> |
397 | |
501 | |
398 | When this object is applied an instance of <archetype> will be created. |
502 | When this object is applied an instance of <archetype> will be created. |
399 | |
503 | |
400 | =back |
504 | =back |
|
|
505 | |
|
|
506 | =head3 POISON - type 7 - Poisonous stuff |
|
|
507 | |
|
|
508 | This type is for objects that can poison the player when drinking. |
|
|
509 | When applied it will hit the attacked with AT_POISON and will create |
|
|
510 | a POISONING object in the one who was hit. |
|
|
511 | |
|
|
512 | =over 4 |
|
|
513 | |
|
|
514 | =item level <number> |
|
|
515 | |
|
|
516 | This field affects the propability of poisoning. The higher the level difference |
|
|
517 | between the one who is hit and the poision the mose propable it is the attacked |
|
|
518 | one will be poisoned. |
|
|
519 | |
|
|
520 | =item slaying <race> |
|
|
521 | |
|
|
522 | On poison this field has the usual meaning of 'slaying', when the |
|
|
523 | ones race matches the slaying field the damage done by the poison |
|
|
524 | is multiplied by 3. |
|
|
525 | |
|
|
526 | =item hp <number> |
|
|
527 | |
|
|
528 | This is the amount of damage the player will receive from applying this. The |
|
|
529 | attacktype AT_POISON will be used to hit the player and the damage will |
|
|
530 | determine the strenght, duration and depletion of stats of the poisoning. The |
|
|
531 | created POISONING object which is being placed in the one who was attacked will |
|
|
532 | get the damage from this field (which is maybe adjusted by slaying or the |
|
|
533 | resistancies). |
|
|
534 | |
|
|
535 | =item food <number> |
|
|
536 | |
|
|
537 | 1/4 of <number> will be drained from the players food. |
|
|
538 | |
|
|
539 | =item on_use_yield <archetype> |
|
|
540 | |
|
|
541 | When this object is applied an instance of <archetype> will be created. |
|
|
542 | |
|
|
543 | =back |
|
|
544 | |
|
|
545 | =head3 BOOK - type 8 - Readable books |
|
|
546 | |
|
|
547 | This type is basically for representing text books in the game. |
|
|
548 | |
|
|
549 | Reading a book also identifys it (if FLAG_NO_SKILL_IDENT is not set). |
|
|
550 | |
|
|
551 | =over 4 |
|
|
552 | |
|
|
553 | =item msg <text> |
|
|
554 | |
|
|
555 | This is the contents of the book. When this field is unset |
|
|
556 | at treasure generation a random text will be inserted. |
|
|
557 | |
|
|
558 | =item skill <skill name> |
|
|
559 | |
|
|
560 | The skill required to read this book. (The most resonable |
|
|
561 | skill would be literacy). |
|
|
562 | |
|
|
563 | =item exp <number> |
|
|
564 | |
|
|
565 | The experience points the player get for reading this book. |
|
|
566 | |
|
|
567 | =item subtype <readable subtype> |
|
|
568 | |
|
|
569 | This field determines the type of the readable. |
|
|
570 | Please see common/readable.C in the readable_message_types table. |
|
|
571 | |
|
|
572 | =back |
|
|
573 | |
|
|
574 | =head3 CLOCK - type 9 - Clocks |
|
|
575 | |
|
|
576 | This type of objects just display the time when being applied. |
|
|
577 | |
|
|
578 | =head3 LIGHTNING - type 12 - Lightnings (DEPRECATED, see SPELL_EFFECT subtype SP_BOLT) |
|
|
579 | |
|
|
580 | This is a spell effect of a moving bolt. It moves straigt forward |
|
|
581 | through the map until something blocks it. |
|
|
582 | If FLAG_REFLECTING is set it even reflects on walls. |
|
|
583 | |
|
|
584 | FLAG_IS_TURNABLE should be set on these objects. |
|
|
585 | |
|
|
586 | =over 4 |
|
|
587 | |
|
|
588 | =item move_type <movetype> |
|
|
589 | |
|
|
590 | This field affects the move type with which the lightning moves through |
|
|
591 | the map and which map cells will reflect or block it. |
|
|
592 | |
|
|
593 | =item attacktype <attacktype> |
|
|
594 | |
|
|
595 | The attacktype with which it hits the objects on the map. |
|
|
596 | |
|
|
597 | =item dam <number> |
|
|
598 | |
|
|
599 | The damage this bolt inflicts when it hits objects on the map. |
|
|
600 | |
|
|
601 | =item Dex <number> |
|
|
602 | |
|
|
603 | This is the fork percentage, it is reduced by 10 per fork. |
|
|
604 | And the damage is halved on each fork. |
|
|
605 | |
|
|
606 | =item Con <number> |
|
|
607 | |
|
|
608 | This value is a percentage of which the forking lightning |
|
|
609 | is deflected to the left. This value should be mostly used internally. |
|
|
610 | |
|
|
611 | =item duration <number> |
|
|
612 | |
|
|
613 | The duration the bolt stays on a map cell. This field is decreased each time |
|
|
614 | the object is processed (see the meaning of speed and speed_left fields in |
|
|
615 | the object general description). |
|
|
616 | |
|
|
617 | =item range <number> |
|
|
618 | |
|
|
619 | This is the range of the bolt, each space it advances this field is decreased. |
|
|
620 | |
|
|
621 | =back |
|
|
622 | |
|
|
623 | =head3 ARROW - type 13 - Arrows |
|
|
624 | |
|
|
625 | This is the type for objects that represent projectiles like arrows. |
|
|
626 | The movement of THROWN_OBJs behave similar to this type. |
|
|
627 | |
|
|
628 | Flying arrows are stopped either when they hit something blocking |
|
|
629 | (move_block) or something which is alive. |
|
|
630 | If it hits something that is alive, which doesn't have FLAG_REFL_MISSILE |
|
|
631 | set, it will inflict damage. If FLAG_REFL_MISSILE is set it will inflict |
|
|
632 | damage with a small chance which is affected by the 'level' field of the arrow. |
|
|
633 | |
|
|
634 | If FLAG_REFLECTING is set on the arrow it will bounce off everything |
|
|
635 | that is not alive and blocks it's movement. |
|
|
636 | |
|
|
637 | When an arrow is being shot it's dam, wc, attacktype, slaying fields will |
|
|
638 | be saved in the sp, hp, grace and spellarg fields of the object, to restore them |
|
|
639 | once the arrow has been stopped. |
|
|
640 | |
|
|
641 | =over 4 |
|
|
642 | |
|
|
643 | =item dam <number> |
|
|
644 | |
|
|
645 | The amount of damage that is being done to the victim that gets hit. |
|
|
646 | This field is recomputed when the arrow is fired and will consist |
|
|
647 | of the sum of a damage bonus (see description of the BOW type), |
|
|
648 | the arrows 'dam' field, the bows 'dam' field, the bows 'magic' field |
|
|
649 | and the arrows magic field. |
|
|
650 | |
|
|
651 | =item wc <number> |
|
|
652 | |
|
|
653 | The weaponclass of the arrow, which has effect on the propability of hitting. |
|
|
654 | |
|
|
655 | It is recomputed when the arrow is being fired by this formula: |
|
|
656 | |
|
|
657 | wc = 20 - bow->magic - arrow->magic - (skill->level or shooter->level) |
|
|
658 | - dex_bonus - thaco_bonus - arrow->stats.wc - bow->stats.wc + wc_mod |
|
|
659 | |
|
|
660 | When the arrow is not being shot by an player dex_bonus and thaco_bonus and the |
|
|
661 | level is not added. |
|
|
662 | |
|
|
663 | The wc_mod is dependend on the fire mode of the bow. For a more detailed |
|
|
664 | explanation of dex_bonus, thaco_bonus and wc_mod please consult the code. |
|
|
665 | |
|
|
666 | =item magic <number> |
|
|
667 | |
|
|
668 | This field is added to the damage of the arrow when it is shot and |
|
|
669 | will also improve it's speed by 1/5 of it's value. |
|
|
670 | |
|
|
671 | =item attacktype <attacktype> |
|
|
672 | |
|
|
673 | Bitfield which decides the attacktype of the damage, see include/attackinc.h |
|
|
674 | On fireing the attacktype of the bow is added to the arrows attacktype. |
|
|
675 | |
|
|
676 | =item level <number> (interally used) |
|
|
677 | |
|
|
678 | The level of the arrow, this affects the propability of piercing FLAG_REFL_MISSILE, |
|
|
679 | see above in the ARROW description. |
|
|
680 | |
|
|
681 | The level is set when the arrow is fired to either the skill level or the |
|
|
682 | shooters level. |
|
|
683 | |
|
|
684 | =item speed <number> (internal) |
|
|
685 | |
|
|
686 | This field shouldn't be set directly in the archetype, the arrow will get it's |
|
|
687 | speed from the bow. This fields value has to be atleast 0.5 or otherwise the |
|
|
688 | arrow will be stopped immediatly. |
|
|
689 | |
|
|
690 | On fireing the speed of the arrow is computed of 1/5 of the |
|
|
691 | sum of the damage bonus (see BOW), bow magic and arrow magic. After that 1/7 |
|
|
692 | of the bows 'dam' field is added to the speed of the arrow. |
|
|
693 | |
|
|
694 | The minimum speed of an arrow is 1.0. |
|
|
695 | |
|
|
696 | While flying the arrows speed is decreased by 0.05 each time it's moved. |
|
|
697 | |
|
|
698 | If the speed is above 10.0 it goes straight through the creature it hits and |
|
|
699 | it's speed is reduced by 1. If the speed is lower or equal 10.0 the arrow is |
|
|
700 | stopped and either sticked into the victim (see weight field description) or |
|
|
701 | put on it's map square (if it didn't break, see description of the food field). |
|
|
702 | |
|
|
703 | =item weight <number> |
|
|
704 | |
|
|
705 | This field is the weight of the arrow, if the weight is below or equal 5000 (5 kg) |
|
|
706 | the arrow will stick in the victim it hits. Otherwise it will fall to the ground. |
|
|
707 | |
|
|
708 | =item food <number> |
|
|
709 | |
|
|
710 | The breaking percentage. 100% means: breaks on usage for sure. |
|
|
711 | |
|
|
712 | =item inventory (internal) |
|
|
713 | |
|
|
714 | If the flying/moving object has something in it's inventory and it stops, it |
|
|
715 | will be replaced with it's inventory. Otherwise it will be handled as usual, |
|
|
716 | which means: it will be calculated whether the arrow breaks and it will be |
|
|
717 | reset for reuse. |
|
|
718 | |
|
|
719 | =item slaying <string> |
|
|
720 | |
|
|
721 | When the bow that fires this arrow has it's slaying field set it is copied |
|
|
722 | to the arrows slaying field. Otherwise the arrows slaying field remains. |
|
|
723 | |
|
|
724 | =item move_type <movetype> (internally used) |
|
|
725 | |
|
|
726 | This field is set when the arrow is shot to MOVE_FLY_LOW. |
|
|
727 | |
|
|
728 | =item move_on <movetype> (internally used) |
|
|
729 | |
|
|
730 | This field is set when the arrow is shot to MOVE_FLY_LOW and MOVE_WALK. |
|
|
731 | |
|
|
732 | =item race <string> |
|
|
733 | |
|
|
734 | The race field is a unique key that assigns arrows, bows and quivers. When |
|
|
735 | shooting an arrow the bows race is used to search for arrows (which have the |
|
|
736 | same race as the bow) in the players inventory and will recursively search in |
|
|
737 | the containers (which are applied and have the same race as the bow and the arrow). |
|
|
738 | |
|
|
739 | =back |
|
|
740 | |
|
|
741 | =head3 BOW - type 14 - Bows, those that fire ARROWs |
|
|
742 | |
|
|
743 | TODO, but take into account ARROW description above |
401 | |
744 | |
402 | =head3 WEAPON - type 15 - Weapons |
745 | =head3 WEAPON - type 15 - Weapons |
403 | |
746 | |
404 | This type is for general hack and slash weapons like swords, maces |
747 | This type is for general hack and slash weapons like swords, maces |
405 | and daggers and and .... |
748 | and daggers and and .... |
… | |
… | |
524 | - weapon speed (last_sp): weapon_speed is calculated by: (last_sp * 2 - magic) / 2 |
867 | - weapon speed (last_sp): weapon_speed is calculated by: (last_sp * 2 - magic) / 2 |
525 | (minium is 0) |
868 | (minium is 0) |
526 | |
869 | |
527 | =item ac <number> |
870 | =item ac <number> |
528 | |
871 | |
529 | the amount of ac points the player's ac is decreased |
872 | the amount of ac points the player's ac is decreased when applying this object. |
530 | |
873 | |
531 | =item wc <number> |
874 | =item wc <number> |
532 | |
875 | |
533 | the amount of wc points the player's wc is decreased |
876 | the amount of wc points the player's wc is decreased when applying this object. |
534 | |
877 | |
535 | =back |
878 | =back |
536 | |
879 | |
537 | =head4 Player inherits following flags from weapons: |
880 | =head4 Player inherits following flags from weapons: |
538 | |
881 | |
… | |
… | |
543 | FLAG_XRAYS |
886 | FLAG_XRAYS |
544 | FLAG_BLIND |
887 | FLAG_BLIND |
545 | FLAG_SEE_IN_DARK |
888 | FLAG_SEE_IN_DARK |
546 | FLAG_UNDEAD |
889 | FLAG_UNDEAD |
547 | |
890 | |
|
|
891 | =head3 GRIMREAPER - type 28 - Grimreapers |
|
|
892 | |
|
|
893 | These type are mostly used for monsters, they give the |
|
|
894 | monster the ability to dissapear after 10 hits with AT_DRAIN. |
|
|
895 | |
|
|
896 | =over 4 |
|
|
897 | |
|
|
898 | =item value <number> |
|
|
899 | |
|
|
900 | This field stores the hits the monster did yet. |
|
|
901 | |
|
|
902 | =back |
|
|
903 | |
|
|
904 | =head3 CREATOR - type 42 - Object creators |
|
|
905 | |
|
|
906 | Once a creator is activated by a connection it creates a number of objects |
|
|
907 | (cloned from it's inventory or a new object derived from the archetype |
|
|
908 | named in the other_arch slot). |
|
|
909 | |
|
|
910 | If FLAG_LIVESAFE is set the number of uses is unlimited. |
|
|
911 | |
|
|
912 | =over 4 |
|
|
913 | |
|
|
914 | =item hp <number> |
|
|
915 | |
|
|
916 | If FLAG_LIVE_SAVE is not set it is the absolute number of times the creator can |
|
|
917 | be used. |
|
|
918 | |
|
|
919 | =item speed <number> |
|
|
920 | |
|
|
921 | If speed is set the creator will create an object periodically, |
|
|
922 | see speed and speed_left fields in general object field description |
|
|
923 | for more details on how this period works. |
|
|
924 | |
|
|
925 | =item slaying <string> |
|
|
926 | |
|
|
927 | If set the generated object's name and |
|
|
928 | title will be set to this. |
|
|
929 | |
|
|
930 | =item other_arch <string> |
|
|
931 | |
|
|
932 | If the inventory of the creator is empty new objects |
|
|
933 | will be derived from the archetype named by <string>. |
|
|
934 | |
|
|
935 | =item connected <number> |
|
|
936 | |
|
|
937 | See generic object field section. |
|
|
938 | |
|
|
939 | =back |
|
|
940 | |
548 | =head3 DRINK - type 54 - Drinkable stuff |
941 | =head3 DRINK - type 54 - Drinkable stuff |
549 | |
942 | |
550 | See FOOD description. |
943 | See FOOD description. |
551 | |
944 | |
552 | =head3 CHECK_INV - type 64 - Inventory checkers |
945 | =head3 CHECK_INV - type 64 - Inventory checkers |
… | |
… | |
598 | If this field is set the inventory checker will search for an object which |
991 | If this field is set the inventory checker will search for an object which |
599 | has the archetype name that matches <string>. |
992 | has the archetype name that matches <string>. |
600 | |
993 | |
601 | =item connected <connection id> |
994 | =item connected <connection id> |
602 | |
995 | |
603 | This is the connection that will be activated. |
996 | This is the connection that will be activated. The connection is |
|
|
997 | 'pushed' when someone enters the space with the inventory checker, |
|
|
998 | and it is 'released' when he leaves it. |
|
|
999 | |
|
|
1000 | See also the description of the connected field in the generic object field |
|
|
1001 | section. |
604 | |
1002 | |
605 | =back |
1003 | =back |
606 | |
1004 | |
607 | =head3 FLESH - type 72 - Organs and body parts |
1005 | =head3 FLESH - type 72 - Organs and body parts |
608 | |
1006 | |
609 | See FOOD description. |
1007 | See FOOD description. |
|
|
1008 | |
|
|
1009 | =head3 MISC_OBJECT - type 79 - Misc. objects |
|
|
1010 | |
|
|
1011 | A type for any object that has no special behaviour. |
|
|
1012 | |
|
|
1013 | =head3 LAMP - type 82 - A lamp |
|
|
1014 | |
|
|
1015 | This object makes light. |
|
|
1016 | |
|
|
1017 | =head3 DUPLICATOR - type 83 - Duplicators or: Multiplicators |
|
|
1018 | |
|
|
1019 | This type of objects multiplies objects that are above it when it is activated. |
|
|
1020 | You can even multiply by 0, which will destroy the object. |
|
|
1021 | |
|
|
1022 | =over 4 |
|
|
1023 | |
|
|
1024 | =item level <number> |
|
|
1025 | |
|
|
1026 | The multiplicator, if set to 0 or lower it will destroy the objects above it. |
|
|
1027 | |
|
|
1028 | =item other_arch <string> |
|
|
1029 | |
|
|
1030 | The archetype name of the objects that should be multiplied. |
|
|
1031 | |
|
|
1032 | =item connected <number> |
|
|
1033 | |
|
|
1034 | See generic object field section. |
|
|
1035 | |
|
|
1036 | =back |
610 | |
1037 | |
611 | =head3 HOLE - type 94 - Holes |
1038 | =head3 HOLE - type 94 - Holes |
612 | |
1039 | |
613 | Holes are holes in the ground where objects can fall through. When the hole |
1040 | Holes are holes in the ground where objects can fall through. When the hole |
614 | opens and/or is completly open all objects above it fall through (more |
1041 | opens and/or is completly open all objects above it fall through (more |
615 | precisely: if their head is above the hole). |
1042 | precisely: if their head is above the hole). |
|
|
1043 | |
|
|
1044 | When the HOLE is activated it's speed is set to 0.5. |
616 | |
1045 | |
617 | Trapdoors can only transfer the one who falls through to other coordinates |
1046 | Trapdoors can only transfer the one who falls through to other coordinates |
618 | on the B<same> map. |
1047 | on the B<same> map. |
619 | |
1048 | |
620 | =over 4 |
1049 | =over 4 |
… | |
… | |
652 | |
1081 | |
653 | The destination x coordinates on the same map. |
1082 | The destination x coordinates on the same map. |
654 | |
1083 | |
655 | =back |
1084 | =back |
656 | |
1085 | |
|
|
1086 | =head3 POISONING - type 105 - The poisoning of players and monsters |
|
|
1087 | |
|
|
1088 | This type is doing the actual damage to the ones who were attacked |
|
|
1089 | via AT_POISON (or drank POISON). |
|
|
1090 | |
|
|
1091 | The duration is handled via the FLAG_IS_USED_UP mechanism (please look |
|
|
1092 | there for details). |
|
|
1093 | |
|
|
1094 | =over 4 |
|
|
1095 | |
|
|
1096 | =item dam <number> |
|
|
1097 | |
|
|
1098 | Each time the poisoning is processed (which is determined by the speed and speed_left |
|
|
1099 | fields, see the general object fields above) it hits the player with |
|
|
1100 | <number> damage and the AT_INTERNAL attacktype (means: it will simply |
|
|
1101 | hit the player with no strings attached). |
|
|
1102 | |
|
|
1103 | =item food <number> |
|
|
1104 | |
|
|
1105 | Just a note: The posion is removed when food == 1 and not when |
|
|
1106 | the whole duration is up, because the POISONING code has to remove |
|
|
1107 | the poison-effects from the player before the FLAG_IS_USED_UP mechanism |
|
|
1108 | deletes the POISONING object. |
|
|
1109 | |
|
|
1110 | =back |
|
|
1111 | |
657 | =head3 FORCE - type 114 - Forces |
1112 | =head3 FORCE - type 114 - Forces |
658 | |
1113 | |
659 | Forces are a very 'thin' type. They don't have much behaviour other than |
1114 | Forces are a very 'thin' type. They don't have much behaviour other than |
660 | disappearing after a time and/or affecting the player if they are in his |
1115 | disappearing after a time and/or affecting the player if they are in his |
661 | inventory. |
1116 | inventory. |
662 | |
1117 | |
663 | Forces only take effect on the player if they have set FLAG_APPLIED. |
1118 | Forces only take effect on the player if they have set FLAG_APPLIED. |
664 | |
1119 | |
665 | Whether the duration field is processed or not a tick is controlled via the |
1120 | Whether the duration field is processed or not a tick is controlled via the |
666 | speed and speed_left field. Look above at the generic description of these |
1121 | speed and speed_left field. Look above in the generic object field description. |
667 | fields. |
|
|
668 | |
1122 | |
669 | NOTE: Setting FLAG_IS_USED_UP on an force will also consider the 'food' field |
1123 | NOTE: Setting FLAG_IS_USED_UP on an force will also consider the 'food' field |
670 | like stated above in the FLAG_IS_USED_UP description. BUT: If the food field reaches |
1124 | like stated above in the FLAG_IS_USED_UP description. BUT: If the food field reaches |
671 | 0 before duration and FLAG_APPLIED is set, the force will last for 'duration'. |
1125 | 0 before duration and FLAG_APPLIED is set, the force will last for 'duration'. |
672 | If the FLAG_APPLIED is not set the force is removed when food reaches 0. |
1126 | If the FLAG_APPLIED is not set the force is removed when food reaches 0. |