version 1.4 | | version 1.5 |
---|
| | |
/* | | /* |
* static char *rcsid_define_h = | | * static char *rcsid_define_h = |
* "$Id: define.h,v 1.4 1999/08/23 00:26:13 cvs Exp $"; | | * "$Id: define.h,v 1.5 1999/09/17 20:54:35 damn Exp $"; |
*/ | | */ |
| | |
/* | | /* |
| | |
#define ARCHTABLE_TOO_SMALL 2 | | #define ARCHTABLE_TOO_SMALL 2 |
#define TOO_MANY_ERRORS 3 | | #define TOO_MANY_ERRORS 3 |
| | |
/* Only add new values to this list if somewhere in the program code, | | |
* it is actually needed. Just because you add a new monster does not | | |
* mean it has to have a type defined here. That only needs to happen | | |
* if in some .c file, it needs to do certain special actions based on | | |
* the monster type, that can not be handled by any of the numerous | | |
* flags | | |
* Also, if you add new entries, try and fill up the holes in this list. | | |
*/ | | |
#define PLAYER 1 | | |
#define BULLET 2 | | |
#define ROD 3 | | |
#define TREASURE 4 | | |
#define POTION 5 | | |
#define FOOD 6 | | |
#define POISON 7 | | |
#define BOOK 8 | | |
#define CLOCK 9 | | |
#define FBULLET 10 | | |
#define FBALL 11 | | |
#define LIGHTNING 12 | | |
#define ARROW 13 | | |
#define BOW 14 | | |
#define WEAPON 15 | | |
#define ARMOUR 16 | | |
#define PEDESTAL 17 | | |
#define ALTAR 18 | | |
#define CONFUSION 19 | | |
#define LOCKED_DOOR 20 | | |
#define SPECIAL_KEY 21 | | |
#define MAP 22 | | |
#define DOOR 23 | | |
#define KEY 24 | | |
#define MMISSILE 25 | | |
#define TIMED_GATE 26 | | |
#define TRIGGER 27 | | |
#define GRIMREAPER 28 | | |
#define MAGIC_EAR 29 | | |
#define TRIGGER_BUTTON 30 | | |
#define TRIGGER_ALTAR 31 | | |
#define TRIGGER_PEDESTAL 32 | | |
#define SHIELD 33 | | |
#define HELMET 34 | | |
#define HORN 35 | | |
#define MONEY 36 | | |
#define GRAVE 37 | | |
#define GRAVESTONE 38 | | |
#define AMULET 39 | | |
#define PLAYERMOVER 40 | | |
#define TELEPORTER 41 | | |
#define CREATOR 42 | | |
#define SKILL 43 /* Skills are similar to abilites, but | | |
* not related to spells. by njw@cs.city.ac.uk | | |
*/ | | |
#define EXPERIENCE 44 /* An experience 'object'. Needed for multi-exp/skills | | |
* hack. -b.t. thomas@astro.psu.edu | | |
*/ | | |
#define EARTHWALL 45 | | |
#define GOLEM 46 | | |
#define BOMB 47 | | |
#define THROWN_OBJ 48 | | |
#define BLINDNESS 49 | | |
#define GOD 50 | | |
| | |
/* peterm: detector is an object which notices the presense of | | |
another object and is triggered like buttons. */ | | |
#define DETECTOR 51 | | |
| | |
#define SPEEDBALL 52 | | |
#define DEAD_OBJECT 53 | | |
#define DRINK 54 | | |
#define MARKER 55 /* inserts an invisible, weightless | | |
force into a player with a specified string. */ | | |
| | |
#define GEM 60 | | |
#define FIRECHEST 61 | | |
#define FIREWALL 62 | | |
| | |
#define CHECK_INV 64 /* by b.t. thomas@nomad.astro.psu.edu */ | | |
#define MOOD_FLOOR 65 /* by b.t. thomas@nomad.astro.psu.edu | | |
* values of last_sp set how to change: | | |
* 0 = furious, all monsters become aggressive | | |
* 1 = angry, all but friendly become aggressive | | |
* 2 = calm, all aggressive monsters calm down | | |
* 3 = sleep, all monsters fall asleep | | |
* 4 = charm, monsters become pets | | |
*/ | | |
#define EXIT 66 | | |
#define ENCOUNTER 67 | | |
#define SHOP_FLOOR 68 | | |
#define SHOP_MAT 69 | | |
#define RING 70 | | |
| | |
#define FLESH 72 /* animal 'body parts' -b.t. */ | | |
#define INORGANIC 73 /* metals and minerals */ | | |
| | |
#define LIGHTER 75 | | |
#define TRAP_PART 76 /* Needed by set traps skill -b.t. */ | | |
| | |
#define SPELLBOOK 85 | | |
| | |
#define CLOAK 87 | | |
#define CONE 88 | | |
| | |
#define SPINNER 90 | | |
#define GATE 91 | | |
#define BUTTON 92 | | |
#define HANDLE 93 | | |
#define HOLE 94 | | |
#define TRAPDOOR 95 | | |
#define WORD_OF_RECALL 96 | | |
#define PARAIMAGE 97 | | |
#define SIGN 98 | | |
#define BOOTS 99 | | |
#define GLOVES 100 | | |
| | |
#define CONVERTER 103 | | |
#define BRACERS 104 | | |
#define POISONING 105 | | |
#define SAVEBED 106 | | |
#define POISONCLOUD 107 | | |
#define FIREHOLES 108 | | |
#define WAND 109 | | |
#define ABILITY 110 | | |
#define SCROLL 111 | | |
#define DIRECTOR 112 | | |
#define GIRDLE 113 | | |
#define FORCE 114 | | |
| | |
| | |
/* Eneq(@csd.uu.se): Id for close_container archetype. */ | | |
#define CLOSE_CON 121 | | |
#define CONTAINER 122 | | |
#define ARMOUR_IMPROVER 123 | | |
#define WEAPON_IMPROVER 124 | | |
#define MONEY_CHANGER 125 | | |
| | |
#define SKILLSCROLL 130 /* can add a skill to player's inventory -bt.*/ | | |
| | |
#define DEEP_SWAMP 138 | | |
#define IDENTIFY_ALTAR 139 | | |
| | |
#define CANCELLATION 141 | | |
| | |
/* Mark Wedel (mark@pyramid.com) Shop inventories */ | | |
#define MENU 150 | | |
| | |
/* peterm: ball lightning and color spray */ | | |
#define BALL_LIGHTNING 151 | | |
| | |
#define SWARM_SPELL 153 | | |
#define RUNE 154 | | |
| | |
#define POWER_CRYSTAL 156 | | |
#define CORPSE 157 | | |
| | |
#define DISEASE 158 | | |
#define SYMPTOM 159 | | |
| | |
#define MAX_NAME 16 | | #define MAX_NAME 16 |
#define BIG_NAME 32 | | #define BIG_NAME 32 |
#define SIZEOFFREE 49 | | #define SIZEOFFREE 49 |
| | |
/* | | /* |
* Attacktypes: | | * Attacktypes: |
* If this ever exceeds 16, rmember to change all the short's in global.h. | | |
* (Already done, Vick 930307 :) | | |
*/ | | */ |
| | |
#define NROFATTACKS 24 | | #define NROFATTACKS 24 |
| | |
#define AT_BLIND 0x00400000 /*4194304 thomas@astro.psu.edu */ | | #define AT_BLIND 0x00400000 /*4194304 thomas@astro.psu.edu */ |
#define AT_INTERNAL 0x00800000 /* Only used for internal calculations */ | | #define AT_INTERNAL 0x00800000 /* Only used for internal calculations */ |
| | |
#define PATH_NULL 0x00000000 | | |
#define PATH_PROT 0x00000001 | | |
#define PATH_FIRE 0x00000002 | | |
#define PATH_FROST 0x00000004 | | |
#define PATH_ELEC 0x00000008 | | |
#define PATH_MISSILE 0x00000010 | | |
#define PATH_SELF 0x00000020 | | |
#define PATH_SUMMON 0x00000040 | | |
#define PATH_ABJURE 0x00000080 | | |
#define PATH_RESTORE 0x00000100 | | |
#define PATH_DETONATE 0x00000200 | | |
#define PATH_MIND 0x00000400 | | |
#define PATH_CREATE 0x00000800 | | |
#define PATH_TELE 0x00001000 | | |
#define PATH_INFO 0x00002000 | | |
#define PATH_TRANSMUTE 0x00004000 | | |
#define PATH_TRANSFER 0x00008000 | | |
#define PATH_TURNING 0x00010000 | | |
#define PATH_WOUNDING 0x00020000 | | |
#define PATH_DEATH 0x00040000 | | |
#define PATH_LIGHT 0x00080000 | | |
| | |
#define NRSPELLPATHS 20 | | |
| | |
#define NROFREALSPELLS 180 /* Number of different spells */ | | |
| | |
#define NROFSKILLS 32 /* match to the number of elements in skills[] array */ | | |
| | |
#define NROF_SOUNDS (23 + NROFREALSPELLS) /* Number of sounds */ | | #define NROF_SOUNDS (23 + NROFREALSPELLS) /* Number of sounds */ |
| | |
| | |
| | |
#define NROFMATERIALS 9 | | |
#define M_PAPER 1 | | |
#define M_IRON 2 | | |
#define M_GLASS 4 | | |
#define M_LEATHER 8 | | |
#define M_WOOD 16 | | |
#define M_ORGANIC 32 | | |
#define M_STONE 64 | | |
#define M_CLOTH 128 | | |
#define M_ADAMANT 256 | | |
| | |
/* These are used in the MapLook flags element. They are not used in | | /* These are used in the MapLook flags element. They are not used in |
* in the object flags structure. | | * in the object flags structure. |
*/ | | */ |
| | |
#define P_IS_ALIVE 0x00000010 /* */ | | #define P_IS_ALIVE 0x00000010 /* */ |
#define P_NO_CLERIC 0x00000020 /* no clerical spells cast here */ | | #define P_NO_CLERIC 0x00000020 /* no clerical spells cast here */ |
| | |
| | |
/* Flag structure now changed. | | |
* Each flag is now a bit offset, starting at zero. The macros | | |
* will update/read the appropriate flag element in the object | | |
* structure. | | |
* | | |
* Hopefully, since these offsets are integer constants set at run time, | | |
* the compiler will reduce the macros something as simple as the | | |
* old system was. | | |
* | | |
* Flags now have FLAG as the prefix. This to be clearer, and also | | |
* to make sure F_ names are not still being used anyplace. | | |
* | | |
* The macros below assume that the flag size for each element is 32 | | |
* bits. IF it is smaller, bad things will happen. See structs.h | | |
* for more info. | | |
* | | |
* All functions should use the macros below. In process of converting | | |
* to the new system, I find several files that did not use the previous | | |
* macros. | | |
* | | |
* If any FLAG's are added, be sure to add them to the flag_links structure | | |
* in common/loader.c, if necessary. | | |
* | | |
* flags[0] is 0 to 31 | | |
* flags[1] is 32 to 63 | | |
* flags[2] is 64 to 95 | | |
* flags[3] is 96 to 127 | | |
*/ | | |
/* Basic routines to do above */ | | |
#define SET_FLAG(xyz, p) \ | | |
((xyz)->flags[p/32] |= (1U << (p % 32))) | | |
#define CLEAR_FLAG(xyz, p) \ | | |
((xyz)->flags[p/32] &= ~(1U << (p % 32))) | | |
#define QUERY_FLAG(xyz, p) \ | | |
((xyz)->flags[p/32] & (1U << (p % 32))) | | |
| | |
| | |
#define FLAG_ALIVE 0 /* Object can fight (or be fought) */ | | |
#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_APPLIED 5 /* Object is ready for use by living */ | | |
#define FLAG_UNPAID 6 /* Object hasn't been paid for yet */ | | |
#define FLAG_AN 7 /* Name must be prepended by "an", not "a"*/ | | |
#define FLAG_NO_PICK 8 /* Object can't be picked up */ | | |
#define FLAG_WALK_ON 9 /* Applied when it's walked upon */ | | |
#define FLAG_NO_PASS 10 /* Nothing can pass (wall() is true) */ | | |
#define FLAG_ANIMATE 11 /* The object looks at archetype for faces */ | | |
#define FLAG_SLOW_MOVE 12 /* Uses the stats.exp/1000 to slow down */ | | |
#define FLAG_FLYING 13 /* Not affected by WALK_ON or SLOW_MOVE) */ | | |
#define FLAG_MONSTER 14 /* Will attack players */ | | |
#define FLAG_FRIENDLY 15 /* Will help players */ | | |
#define FLAG_GENERATOR 16 /* Will generate type ob->stats.food */ | | |
#define FLAG_IS_THROWN 17 /* Object is designed to be thrown. */ | | |
#define FLAG_AUTO_APPLY 18 /* Will be applied when created */ | | |
#define FLAG_TREASURE 19 /* Will generate treasure when applied */ | | |
#define FLAG_APPLY_ONCE 20 /* Will dissapear when applied */ | | |
#define FLAG_SEE_INVISIBLE 21 /* Will see invisible player */ | | |
#define FLAG_CAN_ROLL 22 /* Object can be rolled */ | | |
/* FLAG_IS_TURNING is no longer used */ | | |
/*#define FLAG_IS_TURNING 23 *//* Object will turn after player */ | | |
#define FLAG_IS_TURNABLE 24 /* Object can change face with direction */ | | |
#define FLAG_WALK_OFF 25 /* Object is applied when left */ | | |
#define FLAG_FLY_ON 26 /* As WALK_ON, but only with FLAG_FLYING */ | | |
#define FLAG_FLY_OFF 27 /* As WALK_OFF, but only with FLAG_FLYING */ | | |
#define FLAG_IS_USED_UP 28 /* When (--food<0) the object will exit */ | | |
#define FLAG_IDENTIFIED 29 /* Not implemented yet */ | | |
#define FLAG_REFLECTING 30 /* Object reflects from walls (lightning) */ | | |
#define FLAG_CHANGING 31 /* Changes to other_arch when anim is done*/ | | |
/* Start of values in flags[1] */ | | |
#define FLAG_SPLITTING 32 /* Object splits into stats.food other objs */ | | |
#define FLAG_HITBACK 33 /* Object will hit back when hit */ | | |
#define FLAG_STARTEQUIP 34 /* Object was given to player at start */ | | |
#define FLAG_BLOCKSVIEW 35 /* Object blocks view */ | | |
#define FLAG_UNDEAD 36 /* Monster is undead */ | | |
#define FLAG_SCARED 37 /* Monster is scared (mb player in future)*/ | | |
#define FLAG_UNAGGRESSIVE 38 /* Monster doesn't attack players */ | | |
#define FLAG_REFL_MISSILE 39 /* Arrows will reflect from object */ | | |
#define FLAG_REFL_SPELL 40 /* Spells (some) will reflect from object */ | | |
#define FLAG_NO_MAGIC 41 /* Spells (some) can't pass this object */ | | |
#define FLAG_NO_FIX_PLAYER 42 /* fix_player() won't be called */ | | |
#define FLAG_NEED_IE 43 /* 1 ruby -> 2 rubies */ | | |
#define FLAG_TEAR_DOWN 44 /* at->faces[hp*animations/maxhp] at hit */ | | |
#define FLAG_RUN_AWAY 45 /* Object runs away from nearest player \ | | |
but can still attack at a distance */ | | |
#define FLAG_PASS_THRU 46 /* Objects with can_pass_thru can pass \ | | |
thru this object as if it wasn't there */ | | |
#define FLAG_CAN_PASS_THRU 47 /* Can pass thru... */ | | |
#define FLAG_PICK_UP 48 /* Can pick up */ | | |
#define FLAG_UNIQUE 49 /* Item is really unique (UNIQUE_ITEMS) */ | | |
#define FLAG_NO_DROP 50 /* Object can't be dropped */ | | |
#define FLAG_NO_PRETEXT 51 /* No text is added before name. */ | | |
#define FLAG_CAST_SPELL 52 /* (Monster) can learn and cast spells */ | | |
#define FLAG_USE_SCROLL 53 /* (Monster) can read scroll */ | | |
#define FLAG_USE_WAND 54 /* (Monster) can apply and use wands */ | | |
#define FLAG_USE_BOW 55 /* (Monster) can apply and fire bows */ | | |
#define FLAG_USE_ARMOUR 56 /* (Monster) can wear armour/shield/helmet */ | | |
#define FLAG_USE_WEAPON 57 /* (Monster) can wield weapons */ | | |
#define FLAG_USE_RING 58 /* (Monster) can use rings, boots, gauntlets, etc */ | | |
#define FLAG_READY_WAND 59 /* (Monster) has a wand readied... 8) */ | | |
#define FLAG_READY_BOW 60 /* not implemented yet */ | | |
#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 */ | | |
#define FLAG_LIFESAVE 64 /* Saves a players' life once, then destr. */ | | |
/* Start of values in flags[2] */ | | |
#define FLAG_NO_STRENGTH 65 /* Strength-bonus not added to wc/dam */ | | |
#define FLAG_SLEEP 66 /* NPC is sleeping */ | | |
#define FLAG_STAND_STILL 67 /* NPC will not (ever) move */ | | |
#define FLAG_RANDOM_MOVE 68 /* NPC will move randomly */ | | |
#define FLAG_ONLY_ATTACK 69 /* NPC will evaporate if there is no enemy */ | | |
#define FLAG_CONFUSED 70 /* Will also be unable to cast spells */ | | |
#define FLAG_STEALTH 71 /* Will wake monsters with less range */ | | |
#define FLAG_WIZPASS 72 /* The wizard can go through walls */ | | |
#define FLAG_IS_LINKED 73 /* The object is linked with other objects */ | | |
#define FLAG_CURSED 74 /* The object is cursed */ | | |
#define FLAG_DAMNED 75 /* The object is _very_ cursed */ | | |
#define FLAG_SEE_ANYWHERE 76 /* The object will be visible behind walls */ | | |
#define FLAG_KNOWN_MAGICAL 77 /* The object is known to be magical */ | | |
#define FLAG_KNOWN_CURSED 78 /* The object is known to be cursed */ | | |
#define FLAG_CAN_USE_SKILL 79 /* The monster can use skills */ | | |
#define FLAG_BEEN_APPLIED 80 /* The object has been applied */ | | |
#define FLAG_READY_ROD 81 /* (Monster) has a rod readied... 8) */ | | |
#define FLAG_USE_ROD 82 /* (Monster) can apply and use rods */ | | |
#define FLAG_READY_HORN 83 /* (Monster) has a horn readied */ | | |
#define FLAG_USE_HORN 84 /* (Monster) can apply and use horns */ | | |
#define FLAG_MAKE_INVIS 85 /* (Item) gives invisibility when applied */ | | |
#define FLAG_INV_LOCKED 86 /* Item will not be dropped from inventory */ | | |
#define FLAG_IS_WOODED 87 /* Item is wooded terrain */ | | |
#define FLAG_IS_HILLY 88 /* Item is hilly/mountain terrain */ | | |
#define FLAG_READY_SKILL 89 /* (Monster or Player) has a skill readied */ | | |
#define FLAG_READY_WEAPON 90 /* (Monster or Player) has a weapon readied */ | | |
#define FLAG_NO_SKILL_IDENT 91 /* If set, item cannot be identified w/ a skill */ | | |
#define FLAG_BLIND 92 /* If set, object cannot see (visually) */ | | |
#define FLAG_SEE_IN_DARK 93 /* if set ob not effected by darkness */ | | |
#define FLAG_IS_CAULDRON 94 /* container can make alchemical stuff */ | | |
#define FLAG_DUST 95 /* item is a 'powder', effects throwing */ | | |
/* Start of values in flags[3] */ | | |
#define FLAG_NO_STEAL 96 /* Item can't be stolen */ | | |
#define FLAG_ONE_HIT 97 /* Monster can only hit once before going | | |
* away (replaces ghosthit) | | |
*/ | | |
#define FLAG_CLIENT_SENT 98 /* THIS IS A DEBUG FLAG ONLY. We use it to | | |
* detect cases were the server is trying | | |
* to send an upditem when we have not | | |
* actually sent the item. | | |
*/ | | |
#define NUM_FLAGS 98 /* Should always be equal to the last | | |
* defined flag */ | | |
| | |
/* Values can go up to 127 before the size of the flags array in the | | |
* object structure needs to be enlarged. | | |
*/ | | |
| | |
| | |
#define NROFNEWOBJS(xyz) ((xyz)->stats.food) | | #define NROFNEWOBJS(xyz) ((xyz)->stats.food) |
| | |
#define SLOW_PENALTY(xyz) ((xyz)->stats.exp)/1000.0 | | |
#define SET_SLOW_PENALTY(xyz,fl) (xyz)->stats.exp=(fl)*1000 | | |
#define SET_GENERATE_TYPE(xyz,va) (xyz)->stats.sp=(va) | | |
#define GENERATE_TYPE(xyz) ((xyz)->stats.sp) | | |
#define GENERATE_SPEED(xyz) ((xyz)->stats.maxsp) /* if(!RANDOM()%<speed>) */ | | |
| | |
/* Note: These values are only a default value, resizing can change them */ | | /* Note: These values are only a default value, resizing can change them */ |
#define INV_SIZE 12 /* How many items can be viewed in inventory */ | | #define INV_SIZE 12 /* How many items can be viewed in inventory */ |
#define LOOK_SIZE 6 /* ditto, but for the look-window */ | | #define LOOK_SIZE 6 /* ditto, but for the look-window */ |
| | |
#define D_LOCK(xyz) (xyz)->contr->freeze_inv=(xyz)->contr->freeze_look=1; | | #define D_LOCK(xyz) (xyz)->contr->freeze_inv=(xyz)->contr->freeze_look=1; |
#define D_UNLOCK(xyz) (xyz)->contr->freeze_inv=(xyz)->contr->freeze_look=0; | | #define D_UNLOCK(xyz) (xyz)->contr->freeze_inv=(xyz)->contr->freeze_look=0; |
| | |
#define ARMOUR_SPEED(xyz) (xyz)->last_sp | | |
#define ARMOUR_SPELLS(xyz) (xyz)->last_heal | | |
#define WEAPON_SPEED(xyz) (xyz)->last_sp | | |
| | |
| | |
/* | | /* |
* Flags to generate_treasures(): | | * Flags to generate_treasures(): |
| | |
#define GT_ENVIRONMENT 1 | | #define GT_ENVIRONMENT 1 |
#define GT_INVISIBLE 2 | | #define GT_INVISIBLE 2 |
| | |
/******************************************************************************/ | | |
/* Monster Movements added by kholland@sunlab.cit.cornell.edu */ | | |
/******************************************************************************/ | | |
/* if your monsters start acting wierd, mail me */ | | |
/******************************************************************************/ | | |
/* the following definitions are for the attack_movement variable in monsters */ | | |
/* if the attack_variable movement is left out of the monster archetype, or is*/ | | |
/* set to zero */ | | |
/* the standard mode of movement from previous versions of crossfire will be */ | | |
/* used. the upper four bits of movement data are not in effect when the monst*/ | | |
/* er has an enemy. these should only be used for non agressive monsters. */ | | |
/* to program a monsters movement add the attack movement numbers to the movem*/ | | |
/* ment numbers example a monster that moves in a circle until attacked and */ | | |
/* then attacks from a distance: */ | | |
/* CIRCLE1 = 32 */ | | |
/* + DISTATT = 1 */ | | |
/* ------------------- */ | | |
/* attack_movement = 33 */ | | |
/******************************************************************************/ | | |
#define DISTATT 1 /* move toward a player if far, but mantain some space, */ | | |
/* attack from a distance - good for missile users only */ | | |
#define RUNATT 2 /* run but attack if player catches up to object */ | | |
#define HITRUN 3 /* run to then hit player then run away cyclicly */ | | |
#define WAITATT 4 /* wait for player to approach then hit, move if hit */ | | |
#define RUSH 5 /* Rush toward player blindly, similiar to dumb monster */ | | |
#define ALLRUN 6 /* always run never attack good for sim. of weak player */ | | |
#define DISTHIT 7 /* attack from a distance if hit as recommended by Frank */ | | |
#define WAIT2 8 /* monster does not try to move towards player if far */ | | |
/* maintains comfortable distance */ | | |
#define PETMOVE 16 /* if the upper four bits of move_type / attack_movement */ | | |
/* are set to this number, the monster follows a player */ | | |
/* until the owner calls it back or off */ | | |
/* player followed denoted by 0b->owner */ | | |
/* the monster will try to attack whatever the player is */ | | |
/* attacking, and will continue to do so until the owner */ | | |
/* calls off the monster - a key command will be */ | | |
/* inserted to do so */ | | |
#define CIRCLE1 32 /* if the upper four bits of move_type / attack_movement */ | | |
/* are set to this number, the monster will move in a */ | | |
/* circle until it is attacked, or the enemy field is */ | | |
/* set, this is good for non-aggressive monsters and NPC */ | | |
#define CIRCLE2 48 /* same as above but a larger circle is used */ | | |
#define PACEH 64 /* The Monster will pace back and forth until attacked */ | | |
/* this is HORIZONTAL movement */ | | |
#define PACEH2 80 /* the monster will pace as above but the length of the */ | | |
/* pace area is longer and the monster stops before */ | | |
/* changing directions */ | | |
/* this is HORIZONTAL movement */ | | |
#define RANDO 96 /* the monster will go in a random direction until */ | | |
/* it is stopped by an obstacle, then it chooses another */ | | |
/* direction. */ | | |
#define RANDO2 112 /* constantly move in a different random direction */ | | |
#define PACEV 128 /* The Monster will pace back and forth until attacked */ | | |
/* this is VERTICAL movement */ | | |
#define PACEV2 144 /* the monster will pace as above but the length of the */ | | |
/* pace area is longer and the monster stops before */ | | |
/* changing directions */ | | |
/* this is VERTICAL movement */ | | |
#define LO4 15 /* bitmasks for upper and lower 4 bits from 8 bit fields */ | | |
#define HI4 240 | | |
| | |
/* | | |
* Use of the state-variable in player objects: | | |
*/ | | |
| | |
#define ST_PLAYING 0 | | |
#define ST_PLAY_AGAIN 1 | | |
#define ST_ROLL_STAT 2 | | |
#define ST_CHANGE_CLASS 3 | | |
#define ST_CONFIRM_QUIT 4 | | |
#define ST_CONFIGURE 5 | | |
#define ST_GET_NAME 6 | | |
#define ST_GET_PASSWORD 7 | | |
#define ST_CONFIRM_PASSWORD 8 | | |
#define ST_GET_PARTY_PASSWORD 10 | | |
| | |
#define BLANK_FACE_NAME "blank.111" | | #define BLANK_FACE_NAME "blank.111" |
#define BLOCKED_FACE_NAME "blocked.111" | | #define BLOCKED_FACE_NAME "blocked.111" |
#define STIPPLE1_FACE_NAME "stipple.111" | | #define STIPPLE1_FACE_NAME "stipple.111" |
| | |
strcat(retbuf,")"); \ | | strcat(retbuf,")"); \ |
} | | } |
| | |
| | |
#define DESCRIBE_PATH(retbuf, variable, name) \ | | |
if(variable) { \ | | |
int i,j=0; \ | | |
strcat(retbuf,"(" name ": "); \ | | |
for(i=0; i<NRSPELLPATHS; i++) \ | | |
if(variable & (1<<i)) { \ | | |
if (j) \ | | |
strcat(retbuf,", "); \ | | |
else \ | | |
j = 1; \ | | |
strcat(retbuf, spellpathnames[i]); \ | | |
} \ | | |
strcat(retbuf,")"); \ | | |
} | | |
| | |
#define AP_APPLY 1 | | #define AP_APPLY 1 |
#define AP_UNAPPLY 2 | | #define AP_UNAPPLY 2 |
| | |