Difference for include/define.h from version 1.5 to 1.6


version 1.5 version 1.6
Line 1
 
Line 1
 /*  /*
  * static char *rcsid_define_h =   * static char *rcsid_define_h =
  *   "$Id: define.h,v 1.5 1999/09/17 20:54:35 damn Exp $";   *   "$Id: define.h,v 1.6 1999/09/18 07:29:56 damn Exp $";
  */   */
   
 /*  /*
Line 74
 
Line 74
 #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
Line 109
 
Line 269
 #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 187 /* 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 */
   
 /* 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
Line 122
 
Line 310
 #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 */
Line 170
 
Line 521
 #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():
Line 179
 
Line 534
 #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"
Line 213
 
Line 644
       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
   


Legend:
line(s) removed in v.1.5 
line(s) changed
 line(s) added in v.1.6

File made using version 1.98 of cvs2html by leaf at 2011-07-21 19:20