ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/define.h
(Generate patch)

Comparing deliantra/server/include/define.h (file contents):
Revision 1.15 by root, Thu Dec 14 22:45:40 2006 UTC vs.
Revision 1.28 by elmex, Wed Dec 20 14:48:10 2006 UTC

16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 20
21 The authors can be reached via e-mail at crossfire-devel@real-time.com 21 The authors can be reached via e-mail at crossfire@schmorp.de
22*/ 22*/
23 23
24/* This file is best viewed with a window width of about 100 character */ 24/* This file is best viewed with a window width of about 100 character */
25 25
26/* This file is really too large. With all the .h files 26/* This file is really too large. With all the .h files
110 * flags 110 * flags
111 * Also, if you add new entries, try and fill up the holes in this list. 111 * Also, if you add new entries, try and fill up the holes in this list.
112 * Additionally, when you add a new entry, include it in the table in item.c 112 * Additionally, when you add a new entry, include it in the table in item.c
113 */ 113 */
114 114
115/* type 0 will be undefined and shows a non valid type information */ 115/* USED TYPES: (for dead types please look at the bottom of the type
116 * definitions)
117 */
116 118
117#define PLAYER 1 119/* type 0 objects have the default behaviour */
118#define TRANSPORT 2 /* see doc/Developers/objects */ 120
119#define ROD 3 121#define PLAYER 1
122#define TRANSPORT 2 /* see pod/objects.pod */
123#define ROD 3
120#define TREASURE 4 124#define TREASURE 4
121#define POTION 5 125#define POTION 5
122#define FOOD 6 126#define FOOD 6
123#define POISON 7 127#define POISON 7
124#define BOOK 8 128#define BOOK 8
125#define CLOCK 9 129#define CLOCK 9
126 130
127/*#define FBULLET 10 */ 131#define ARROW 13
128 132#define BOW 14
129/*#define FBALL 11 */
130#define LIGHTNING 12
131#define ARROW 13
132#define BOW 14
133#define WEAPON 15 133#define WEAPON 15
134#define ARMOUR 16 134#define ARMOUR 16
135#define PEDESTAL 17 135#define PEDESTAL 17
136#define ALTAR 18 136#define ALTAR 18
137 137
138/*#define CONFUSION 19 */
139#define LOCKED_DOOR 20 138#define LOCKED_DOOR 20
140#define SPECIAL_KEY 21 139#define SPECIAL_KEY 21
141#define MAP 22 140#define MAP 22
142#define DOOR 23 141#define DOOR 23
143#define KEY 24 142#define KEY 24
144 143
145/*#define MMISSILE 25 */
146#define TIMED_GATE 26 144#define TIMED_GATE 26
147#define TRIGGER 27 145#define TRIGGER 27
148#define GRIMREAPER 28 146#define GRIMREAPER 28
149#define MAGIC_EAR 29 147#define MAGIC_EAR 29
150#define TRIGGER_BUTTON 30 148#define TRIGGER_BUTTON 30
151#define TRIGGER_ALTAR 31 149#define TRIGGER_ALTAR 31
152#define TRIGGER_PEDESTAL 32 150#define TRIGGER_PEDESTAL 32
153#define SHIELD 33 151#define SHIELD 33
154#define HELMET 34 152#define HELMET 34
155#define HORN 35 153#define HORN 35
156#define MONEY 36 154#define MONEY 36
157#define CLASS 37 /* object for applying character class modifications to someone */ 155#define CLASS 37 /* object for applying character class modifications to someone */
158#define GRAVESTONE 38 156#define GRAVESTONE 38
159#define AMULET 39 157#define AMULET 39
160#define PLAYERMOVER 40 158#define PLAYERMOVER 40
161#define TELEPORTER 41 159#define TELEPORTER 41
162#define CREATOR 42 160#define CREATOR 42
163#define SKILL 43 /* also see SKILL_TOOL (74) below */ 161#define SKILL 43 /* also see SKILL_TOOL (74) below */
164#define EXPERIENCE 44 /* This is basically obsolete now. It used to contain */ 162
165 /* experience for broad skill categories. This value */
166 /* is now automatically converteed at load time. */
167#define EARTHWALL 45 163#define EARTHWALL 45
168#define GOLEM 46 164#define GOLEM 46
169 165
170/*#define BOMB 47 */
171#define THROWN_OBJ 48 166#define THROWN_OBJ 48
172#define BLINDNESS 49 167#define BLINDNESS 49
173#define GOD 50 168#define GOD 50
174
175#define DETECTOR 51 /* peterm: detector is an object */ 169#define DETECTOR 51 /* peterm: detector is an object
176 /* which notices the presense of */ 170 * which notices the presense of
177 /* another object and is triggered */ 171 * another object and is triggered
178 /* like buttons. */ 172 * like buttons.
173 */
179#define TRIGGER_MARKER 52 /* inserts an invisible, weightless */ 174#define TRIGGER_MARKER 52 /* inserts an invisible, weightless
180 /* force into a player with a specified string WHEN TRIGGERED. */ 175 * force into a player with a specified string WHEN TRIGGERED.
176 */
181#define DEAD_OBJECT 53 177#define DEAD_OBJECT 53
182#define DRINK 54 178#define DRINK 54
183#define MARKER 55 /* inserts an invisible, weightless */ 179#define MARKER 55 /* inserts an invisible, weightless
184 /* force into a player with a specified string. */ 180 * force into a player with a specified string.
181 */
185#define HOLY_ALTAR 56 182#define HOLY_ALTAR 56
186#define PLAYER_CHANGER 57 183#define PLAYER_CHANGER 57
187#define BATTLEGROUND 58 /* battleground, by Andreas Vogl */ 184#define BATTLEGROUND 58 /* battleground, by Andreas Vogl */
188 185
189#define PEACEMAKER 59 /* Object owned by a player which can convert */ 186#define PEACEMAKER 59 /* Object owned by a player which can convert
190 /* a monster into a peaceful being incapable of attack. */ 187 * a monster into a peaceful being incapable of attack.
191#define GEM 60 188 */
189#define GEM 60
192 190
193 /*#define FIRECHEST 61*//* FIRECHEST folded into FIREWALL */
194#define FIREWALL 62 191#define FIREWALL 62
195#define ANVIL 63 192#define ANVIL 63
196#define CHECK_INV 64 /* by b.t. thomas@nomad.astro.psu.edu */ 193#define CHECK_INV 64 /* by b.t. thomas@nomad.astro.psu.edu */
197#define MOOD_FLOOR 65 /* by b.t. thomas@nomad.astro.psu.edu 194#define MOOD_FLOOR 65 /* by b.t. thomas@nomad.astro.psu.edu
198 * values of last_sp set how to change: 195 * values of last_sp set how to change:
199 * 0 = furious, all monsters become aggressive 196 * 0 = furious, all monsters become aggressive
200 * 1 = angry, all but friendly become aggressive 197 * 1 = angry, all but friendly become aggressive
201 * 2 = calm, all aggressive monsters calm down 198 * 2 = calm, all aggressive monsters calm down
202 * 3 = sleep, all monsters fall asleep 199 * 3 = sleep, all monsters fall asleep
203 * 4 = charm, monsters become pets */ 200 * 4 = charm, monsters become pets */
204#define EXIT 66 201#define EXIT 66
205#define ENCOUNTER 67 202#define ENCOUNTER 67
206#define SHOP_FLOOR 68 203#define SHOP_FLOOR 68
207#define SHOP_MAT 69 204#define SHOP_MAT 69
208#define RING 70 205#define RING 70
209#define FLOOR 71 /* this is a floor tile -> native layer 0 */ 206#define FLOOR 71 /* this is a floor tile -> native layer 0 */
210#define FLESH 72 /* animal 'body parts' -b.t. */ 207#define FLESH 72 /* animal 'body parts' -b.t. */
211#define INORGANIC 73 /* metals and minerals */ 208#define INORGANIC 73 /* metals and minerals */
212#define SKILL_TOOL 74 /* Allows the use of a skill */ 209#define SKILL_TOOL 74 /* Allows the use of a skill */
213#define LIGHTER 75 210#define LIGHTER 75
214 211
215/* The trap_part, wall, light_source, misc_object, monster, and spawn_generator 212#define BUILDABLE_WALL 77 /* this is a buildable wall */
216 * types are not used in any archetypes, and should perhaps be removed.
217 */
218#define TRAP_PART 76 /* Needed by set traps skill -b.t. */
219 213
220#define WALL 77 /* this is a wall. put it always in layer 1 if not set is_floor */ 214
221#define LIGHT_SOURCE 78 /* torches, lamps, etc. */
222#define MISC_OBJECT 79 /* misc. objects are for objects without a function 215#define MISC_OBJECT 79 /* misc. objects are for objects without a function
223 in the engine. Like statues, clocks, chairs,... 216 in the engine. Like statues, clocks, chairs,...
224 If perhaps we create a function where we can sit 217 If perhaps we create a function where we can sit
225 on chairs, we create a new type and remove all 218 on chairs, we create a new type and remove all
226 chairs from here. */ 219 chairs from here. */
227#define MONSTER 80 220
228 /* yes, thats a real, living creature */ 221#define LAMP 82 /* a lamp */
229#define SPAWN_GENERATOR 81
230 /* a spawn point or monster generator object */
231#define LAMP 82 /* a lamp */
232#define DUPLICATOR 83 /* duplicator/multiplier object */ 222#define DUPLICATOR 83 /* duplicator/multiplier object */
233#define TOOL 84 /* a tool for building objects */ 223
234#define SPELLBOOK 85 224#define SPELLBOOK 85
235#define BUILDFAC 86 /* facilities for building objects */
236#define CLOAK 87
237 225
238/*#define CONE 88 */ 226#define CLOAK 87
239 227
240 /*#define AURA 89 *//* aura spell object */
241
242#define SPINNER 90 228#define SPINNER 90
243#define GATE 91 229#define GATE 91
244#define BUTTON 92 230#define BUTTON 92
245#define CF_HANDLE 93 231#define CF_HANDLE 93
246#define HOLE 94 232#define HOLE 94
247#define TRAPDOOR 95 233#define TRAPDOOR 95
248 234
249/*#define WORD_OF_RECALL 96 */ 235#define SIGN 98
250 236#define BOOTS 99
251/*#define PARAIMAGE 97 */
252#define SIGN 98
253#define BOOTS 99
254#define GLOVES 100 237#define GLOVES 100
255#define SPELL 101 238#define SPELL 101
256#define SPELL_EFFECT 102 239#define SPELL_EFFECT 102
257#define CONVERTER 103 240#define CONVERTER 103
258#define BRACERS 104 241#define BRACERS 104
259#define POISONING 105 242#define POISONING 105
260#define SAVEBED 106 243#define SAVEBED 106
261#define POISONCLOUD 107
262#define FIREHOLES 108
263#define WAND 109
264 244
265/*#define ABILITY 110*/ 245#define WAND 109
246
266#define SCROLL 111 247#define SCROLL 111
267#define DIRECTOR 112 248#define DIRECTOR 112
268#define GIRDLE 113 249#define GIRDLE 113
269#define FORCE 114 250#define FORCE 114
270#define POTION_EFFECT 115 /* a force, holding the effect of a potion */ 251#define POTION_EFFECT 115 /* a force, holding the effect of a potion */
271#define EVENT_CONNECTOR 116/* Lauwenmark: an invisible object holding a plugin event hook */ 252#define EVENT_CONNECTOR 116 /* Lauwenmark: an invisible object holding a plugin event hook */
253
272#define CLOSE_CON 121 /* Eneq(@csd.uu.se): Id for close_container archetype. */ 254#define CLOSE_CON 121 /* Eneq(@csd.uu.se): Id for close_container archetype. */
273#define CONTAINER 122 255#define CONTAINER 122
274#define ARMOUR_IMPROVER 123 256#define ARMOUR_IMPROVER 123
275#define WEAPON_IMPROVER 124 257#define WEAPON_IMPROVER 124
276 258
259#define SKILLSCROLL 130 /* can add a skill to player's inventory -bt. */
260#define DEEP_SWAMP 138
261#define IDENTIFY_ALTAR 139
262
263#define MENU 150 /* Mark Wedel (mark@pyramid.com) Shop inventories */
264
265#define RUNE 154
266#define TRAP 155
267
268#define POWER_CRYSTAL 156
269#define CORPSE 157
270
271#define DISEASE 158
272#define SYMPTOM 159
273#define BUILDER 160 /* Generic item builder, see subtypes */
274#define MATERIAL 161 /* Material for building */
275
276#define ITEM_TRANSFORMER 163 /* Transforming one item with another */
277
278#define SAFE_GROUND 165 /* This is a safe ground, means that neither bombs,
279 potions, alchemy, or magic works here (elmex) */
280
281/* DEAD TYPES: */
282//#define FBULLET 10
283//#define FBALL 11
284//#define LIGHTNING 12 // elmex: implemented by type 102 subtype 4
285//#define CONFUSION 19
286//#define MMISSILE 25
287/*#define EXPERIENCE 44*//* This is basically obsolete now. It used to contain
288 * experience for broad skill categories. This value
289 * is now automatically converteed at load time.
290 */
291//#define BOMB 47
292//#define FIRECHEST 61 /* FIRECHEST folded into FIREWALL */
293
294/* random crossfire developer: The trap_part, wall, light_source,
295 * misc_object, monster, and spawn_generator
296 * types are not used in any archetypes,
297 * and should perhaps be removed.
298 *
299 * Wed Dec 20 13:35:24 CET 2006:
300 * elmex: haha, removed TRAP_PART, LIGHT_SOURCE, MONSTER and SPAWN_GENERATOR now.
301 * monsters are marked by FLAG_MONSTER and generator with FLAG_GENERATOR.
302 * renamed WALL to BUILDABLE_WALL.
303 */
304
305//#define TRAP_PART 76 /* Needed by set traps skill -b.t. */
306//#define LIGHT_SOURCE 78 /* torches, lamps, etc. */
307//#define MONSTER 80 /* yes, thats a real, living creature */
308//#define SPAWN_GENERATOR 81 /* a spawn point or monster generator object */
309//#define TOOL 84 /* a tool for building objects */
310//#define BUILDFAC 86 /* facilities for building objects */
311//#define CONE 88
312//#define AURA 89 /* aura spell object */
313//#define WORD_OF_RECALL 96
314//#define PARAIMAGE 97
315//#define POISONCLOUD 107
316//#define FIREHOLES 108
317//#define ABILITY 110
277/* unused: 125 - 129 318/* unused: 125 - 129
278 * type 125 was MONEY_CHANGER 319 * type 125 was MONEY_CHANGER
279 */ 320 */
280#define SKILLSCROLL 130 /* can add a skill to player's inventory -bt. */ 321//#define CANCELLATION 141 /* not used with new spell code */
281#define DEEP_SWAMP 138 322//#define BALL_LIGHTNING 151 /* peterm: ball lightning and color spray */
282#define IDENTIFY_ALTAR 139 323//#define SWARM_SPELL 153
283
284 /*#define CANCELLATION 141*//* not used with new spell code */
285#define MENU 150 /* Mark Wedel (mark@pyramid.com) Shop inventories */
286
287 /*#define BALL_LIGHTNING 151 *//* peterm: ball lightning and color spray */
288
289/*#define SWARM_SPELL 153*/
290#define RUNE 154
291#define TRAP 155
292
293#define POWER_CRYSTAL 156
294#define CORPSE 157
295
296#define DISEASE 158
297#define SYMPTOM 159
298#define BUILDER 160 /* Generic item builder, see subtypes */
299#define MATERIAL 161/* Material for building */
300
301/* #define GPS 162 Ground positionning system, moved to Python plugin */ 324//#define GPS 162 /* Ground positionning system, moved to Python plugin */
302#define ITEM_TRANSFORMER 163/* Transforming one item with another */
303#define QUEST 164/* See below for subtypes */ 325//#define QUEST 164 /* See below for subtypes */
304#define SAFE_GROUND 165 /* This is a safe ground, means that neither bombs,
305 potions, alchemy, or magic works here (elmex) */
306 326
307/* END TYPE DEFINE */ 327/* END TYPE DEFINE */
308 328
309#define NUM_SUBTYPES 64 // maximum supported subtype number + 1, can be increased to 256 329#define NUM_SUBTYPES 64 // maximum supported subtype number + 1, can be increased to 256
310 330
395#define SIZEOFFREE2 24 415#define SIZEOFFREE2 24
396#define SIZEOFFREE 49 416#define SIZEOFFREE 49
397 417
398#define NROF_SOUNDS (23 + NROFREALSPELLS) /* Number of sounds */ 418#define NROF_SOUNDS (23 + NROFREALSPELLS) /* Number of sounds */
399 419
400/* Flag structure now changed. 420/*
401 * Each flag is now a bit offset, starting at zero. The macros
402 * will update/read the appropriate flag element in the object
403 * structure.
404 *
405 * Hopefully, since these offsets are integer constants set at run time,
406 * the compiler will reduce the macros something as simple as the
407 * old system was.
408 *
409 * Flags now have FLAG as the prefix. This to be clearer, and also
410 * to make sure F_ names are not still being used anyplace.
411 *
412 * The macros below assume that the flag size for each element is 32
413 * bits. IF it is smaller, bad things will happen. See structs.h
414 * for more info.
415 *
416 * All functions should use the macros below. In process of converting
417 * to the new system, I find several files that did not use the previous
418 * macros.
419 *
420 * If any FLAG's are or changed, make sure the flag_names structure in 421 * If any FLAG's are added or changed, make sure the flag_names structure in
421 * common/loader.l is updated. 422 * common/loader.l is updated.
422 *
423 * flags[0] is 0 to 31
424 * flags[1] is 32 to 63
425 * flags[2] is 64 to 95
426 * flags[3] is 96 to 127
427 */ 423 */
428 424
429/* Basic routines to do above */ 425/* Basic routines to do above */
430#define SET_FLAG(xyz, p) \ 426#define SET_FLAG(obj, flag) (obj)->flags[flag] = 1
431 ((xyz)->flags[p/32] |= (1U << (p % 32))) 427#define CLEAR_FLAG(obj, flag) (obj)->flags[flag] = 0
432#define CLEAR_FLAG(xyz, p) \ 428#define QUERY_FLAG(obj, flag) (obj)->flags[flag]
433 ((xyz)->flags[p/32] &= ~(1U << (p % 32)))
434#define QUERY_FLAG(xyz, p) \
435 ((xyz)->flags[p/32] & (1U << (p % 32)))
436#define COMPARE_FLAGS(p,q) \
437 ( \
438 ((p)->flags[0] == (q)->flags[0]) && \
439 ((p)->flags[1] == (q)->flags[1]) && \
440 ((p)->flags[2] == (q)->flags[2]) && \
441 ((p)->flags[3] == (q)->flags[3]) \
442 )
443
444/* convenience macros to determine what kind of things we are dealing with */
445
446#define IS_WEAPON(op) \
447 (op->type == ARROW || op->type == BOW || op->type == WEAPON)
448
449#define IS_ARMOR(op) \
450 (op->type == ARMOUR || op->type == SHIELD || op->type == HELMET || \
451 op->type == CLOAK || op->type == BOOTS || op->type == GLOVES || \
452 op->type == BRACERS || op->type == GIRDLE)
453
454#define IS_LIVE(op) \
455 ((op->type == PLAYER || QUERY_FLAG(op, FLAG_MONSTER) || \
456 (QUERY_FLAG(op, FLAG_ALIVE) && !QUERY_FLAG(op, FLAG_GENERATOR) && \
457 !op->type == DOOR)) && (!QUERY_FLAG(op,FLAG_IS_A_TEMPLATE)))
458
459#define IS_ARROW(op) \
460 (op->type==ARROW || \
461 (op->type==SPELL_EFFECT && \
462 (op->subtype == SP_BULLET || op->subtype == SP_MAGIC_MISSILE)))
463
464/* This return TRUE if object has still randomitems which
465 * could be expanded.
466 */
467#define HAS_RANDOM_ITEMS(op) (op->randomitems && (!QUERY_FLAG(op,FLAG_IS_A_TEMPLATE)))
468 429
469/* the flags */ 430/* the flags */
470 431
471#define FLAG_ALIVE 0 /* Object can fight (or be fought) */ 432#define FLAG_ALIVE 0 /* Object can fight (or be fought) */
472#define FLAG_WIZ 1 /* Object has special privilegies */ 433#define FLAG_WIZ 1 /* Object has special privilegies */
493 454
494#define FLAG_GENERATOR 16 /* Will generate type ob->stats.food */ 455#define FLAG_GENERATOR 16 /* Will generate type ob->stats.food */
495#define FLAG_IS_THROWN 17 /* Object is designed to be thrown. */ 456#define FLAG_IS_THROWN 17 /* Object is designed to be thrown. */
496#define FLAG_AUTO_APPLY 18 457#define FLAG_AUTO_APPLY 18
497 /* Will be applied when created */ 458 /* Will be applied when created */
498#define FLAG_TREASURE 19 /* Will generate treasure when applied */ 459 // not used anywhere in the code // #define FLAG_TREASURE 19 /* Will generate treasure when applied */
499#define FLAG_PLAYER_SOLD 20 /* Object was sold to a shop by a player. */ 460#define FLAG_PLAYER_SOLD 20 /* Object was sold to a shop by a player. */
500#define FLAG_SEE_INVISIBLE 21 /* Will see invisible player */ 461#define FLAG_SEE_INVISIBLE 21 /* Will see invisible player */
501#define FLAG_CAN_ROLL 22 /* Object can be rolled */ 462#define FLAG_CAN_ROLL 22 /* Object can be rolled */
502#define FLAG_OVERLAY_FLOOR 23 /* Object is an overlay floor */ 463#define FLAG_OVERLAY_FLOOR 23 /* Object is an overlay floor */
503#define FLAG_IS_TURNABLE 24 /* Object can change face with direction */ 464#define FLAG_IS_TURNABLE 24 /* Object can change face with direction */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines