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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines