--- deliantra/server/include/define.h 2007/01/18 19:32:37 1.42 +++ deliantra/server/include/define.h 2007/05/19 00:08:11 1.59 @@ -1,5 +1,5 @@ /* - * CrossFire, A Multiplayer game for X-windows + * CrossFire, A Multiplayer game * * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team * Copyright (C) 2003-2005 Mark Wedel & Crossfire Development Team @@ -34,25 +34,13 @@ #ifndef DEFINE_H #define DEFINE_H -/* - * Crossfire requires ANSI-C, but some compilers "forget" to define it. - * Thus the prototypes made by cextract don't get included correctly. - */ -#if !defined(__STDC__) - -/* Removed # from start of following line. makedepend was picking it up. - * The following should still hopefully result in an error. - */ -error - Your ANSI C compiler should be defining __STDC__; -#endif - #include #define FONTDIR "" #define FONTNAME "" /* Decstations have trouble with fabs()... */ -#define FABS(x) ((x)<0?-(x):(x)) +#define FABS(x) fabs (x) #ifdef __NetBSD__ # include @@ -82,6 +70,14 @@ #define MAX_STAT 30 /* The maximum legal value of any stat */ #define MIN_STAT 1 /* The minimum legal value of any stat */ +//TODO: not only use more reasonable values, also enforce them +#define MIN_WC -120 +#define MAX_WC 120 +#define MIN_AC -120 +#define MAX_AC 120 +#define MIN_DAM 0 +#define MAX_DAM 200 + #define MAX_BUF 1024 /* Used for all kinds of things */ #define VERY_BIG_BUF 2048 @@ -96,9 +92,10 @@ #define MAX_EXT_TITLE 98 /* Fatal variables: */ +//TODO: remove all calls to fatal and replace them by cleanup #define OUT_OF_MEMORY 0 #define MAP_ERROR 1 -#define ARCHTABLE_TOO_SMALL 2 +#define ARCHTABLE_TOO_SMALL 2 // unused #define TOO_MANY_ERRORS 3 /* TYPE DEFINES */ @@ -279,6 +276,8 @@ #define SAFE_GROUND 165 /* This is a safe ground, means that neither bombs, potions, alchemy, or magic works here (elmex) */ +#define NUM_TYPES 166 // must be max(type) + 1 + /* DEAD TYPES: */ //#define FBULLET 10 //#define FBALL 11 @@ -298,7 +297,7 @@ * and should perhaps be removed. * * Wed Dec 20 13:35:24 CET 2006: - * elmex: haha, removed TRAP_PART, LIGHT_SOURCE, MONSTER and SPAWN_GENERATOR now. + * elmex: removed TRAP_PART, LIGHT_SOURCE, MONSTER and SPAWN_GENERATOR now. * monsters are marked by FLAG_MONSTER and generator with FLAG_GENERATOR. * renamed WALL to BUILDABLE_WALL. */ @@ -434,7 +433,7 @@ #define FLAG_WIZ 1 /* Object has special privilegies */ #define FLAG_REMOVED 2 /* Object is not in any map or invenory */ #define FLAG_FREED 3 /* Object is in the list of free objects */ -#define FLAG_WAS_WIZ 4 /* Player was once a wiz */ +//#define FLAG_WAS_WIZ 4 /* Player was once a wiz */ #define FLAG_APPLIED 5 /* Object is ready for use by living */ #define FLAG_UNPAID 6 /* Object hasn't been paid for yet */ #define FLAG_USE_SHIELD 7 @@ -457,7 +456,7 @@ #define FLAG_IS_THROWN 17 /* Object is designed to be thrown. */ #define FLAG_AUTO_APPLY 18 /* Will be applied when created */ - // not used anywhere in the code // #define FLAG_TREASURE 19 /* Will generate treasure when applied */ +#define FLAG_TREASURE_ENV 19 // put treasure into environment not in inventory #define FLAG_PLAYER_SOLD 20 /* Object was sold to a shop by a player. */ #define FLAG_SEE_INVISIBLE 21 /* Will see invisible player */ #define FLAG_CAN_ROLL 22 /* Object can be rolled */ @@ -517,7 +516,7 @@ /* (Monster) can wield weapons */ #define FLAG_USE_RING 58 /* (Monster) can use rings, boots, gauntlets, etc */ #define FLAG_READY_RANGE 59 /* (Monster) has a range attack readied... 8) */ -#define FLAG_READY_BOW 60 /* not implemented yet */ +#define FLAG_READY_BOW 60 /* (Monster) has valid bow readied */ #define FLAG_XRAYS 61 /* X-ray vision */ #define FLAG_NO_APPLY 62 /* Avoids step_on/fly_on to this object */ #define FLAG_IS_FLOOR 63 /* Can't see what's underneath this object */ @@ -544,7 +543,7 @@ #define FLAG_READY_SCROLL 81 /* monster has scroll in inv and can use it */ #define FLAG_USE_ROD 82 /* (Monster) can apply and use rods */ -/*#define FLAG_READY_HORN 83 unused (Monster) has a horn readied */ +#define FLAG_PRECIOUS 83 // object is precious (pets) #define FLAG_USE_HORN 84 /* (Monster) can apply and use horns */ #define FLAG_MAKE_INVIS 85 /* (Item) gives invisibility when applied */ @@ -589,7 +588,7 @@ #define FLAG_IS_A_TEMPLATE 109 /* Object has no ingame life until instanciated */ #define FLAG_IS_BUILDABLE 110 /* Can build on item */ #define FLAG_DESTROY_ON_DEATH 111 /* Object will be destroyed when env dies */ -#define FLAG_NO_SAVE 112 // item doesn't get saved with map +#define FLAG_NO_MAP_SAVE 112 // item doesn't get saved with map #define NUM_FLAGS 113 /* Should always be equal to the last * defined flag + 1. If you change this, @@ -608,24 +607,16 @@ * describe_item() so properly describe those types. * change_abil() probably should be updated also. */ -#define MOVE_WALK 0x1 /* Object walks */ -#define MOVE_FLY_LOW 0x2 /* Low flying object */ -#define MOVE_FLY_HIGH 0x4 /* High flying object */ -#define MOVE_FLYING 0x6 +#define MOVE_WALK 0x01 /* Object walks */ +#define MOVE_FLY_LOW 0x02 /* Low flying object */ +#define MOVE_FLY_HIGH 0x04 /* High flying object */ +#define MOVE_FLYING 0x06 /* Combo of fly_low and fly_high */ -#define MOVE_SWIM 0x8 /* Swimming object */ +#define MOVE_SWIM 0x08 /* Swimming object */ #define MOVE_BOAT 0x10 /* Boats/sailing */ -#define MOVE_ALL 0x1f /* Mask of all movement types */ +#define MOVE_SHIP 0x20 /* boats suitable fro oceans */ -/* the normal assumption is that objects are walking/flying. - * So often we don't want to block movement, but still don't want - * to allow all types (swimming is rather specialized) - I also - * expect as more movement types show up, this is likely to get - * updated. Basically, this is the default for spaces that allow - * movement - anything but swimming right now. If you really - * want nothing at all, then can always set move_block to 0 - */ -#define MOVE_BLOCK_DEFAULT MOVE_SWIM +#define MOVE_ALL 0x3f /* Mask of all movement types */ /* typdef here to define type large enough to hold bitmask of * all movement types. Make one declaration so easy to update. @@ -782,10 +773,6 @@ #define BLANK_FACE_NAME "blank.x11" #define EMPTY_FACE_NAME "empty.x11" -#define DARK_FACE1_NAME "dark1.x11" -#define DARK_FACE2_NAME "dark2.x11" -#define DARK_FACE3_NAME "dark3.x11" -#define SMOOTH_FACE_NAME "default_smoothed.111" /* * Defines for the luck/random functions to make things more readable @@ -885,18 +872,18 @@ /* Flags for apply_special() */ enum apply_flag { - /* Basic flags, always use one of these */ - AP_NULL = 0, - AP_APPLY = 1, + /* Basic flags/mode, always use one of these */ + AP_TOGGLE = 0, + AP_APPLY = 1, AP_UNAPPLY = 2, - AP_BASIC_FLAGS = 15, + AP_BASIC_FLAGS = 0x0f, /* Optional flags, for bitwise or with a basic flag */ - AP_NO_MERGE = 16, - AP_IGNORE_CURSE = 32, - AP_PRINT = 64 /* Print what to do, don't actually do it */ - /* Note this is supported in all the functions */ + AP_NO_MERGE = 0x10, + AP_IGNORE_CURSE = 0x20, + AP_PRINT = 0x40, /* Print what to do, don't actually do it */ + AP_NO_READY = 0x80, // do not ready skill associated with skilltool. }; /* Bitmask values for 'can_apply_object()' return values. @@ -935,20 +922,8 @@ /* Cut off point of when an object is put on the active list or not */ #define MIN_ACTIVE_SPEED 1e-5 -/* - * random() is much better than rand(). If you have random(), use it instead. - * You shouldn't need to change any of this - * - * 0.93.3: It looks like linux has random (previously, it was set below - * to use rand). Perhaps old version of linux lack rand? IF you run into - * problems, add || defined(__linux__) the #if immediately below. - * - * 0.94.2 - you probably shouldn't need to change any of the rand stuff - * here. - */ - -#define RANDOM() rndm.next () -#define SRANDOM(xyz) //TODO, get rid of +#define RANDOM() (rndm.next () & 0xffffffU) +#define SRANDOM(xyz) rndm.seed (xyz) //TODO, get rid of /* Returns the weight of the given object. Note: it does not take the number of * items (nrof) into account.