diff --git a/include/defsym.h b/include/defsym.h index 57b6d1599..34879231d 100644 --- a/include/defsym.h +++ b/include/defsym.h @@ -96,8 +96,10 @@ PCHAR2( 2, '-', S_hwall, "horizontal wall", "wall", CLR(CLR_GRAY)) PCHAR2( 3, '-', S_tlcorn, "top left corner wall", "wall", CLR(CLR_GRAY)) PCHAR2( 4, '-', S_trcorn, "top right corner wall", "wall", CLR(CLR_GRAY)) - PCHAR2( 5, '-', S_blcorn, "bottom left corner wall", "wall", CLR(CLR_GRAY)) - PCHAR2( 6, '-', S_brcorn, "bottom right corner wall", "wall", CLR(CLR_GRAY)) + PCHAR2( 5, '-', S_blcorn, + "bottom left corner wall", "wall", CLR(CLR_GRAY)) + PCHAR2( 6, '-', S_brcorn, + "bottom right corner wall", "wall", CLR(CLR_GRAY)) PCHAR2( 7, '-', S_crwall, "cross wall", "wall", CLR(CLR_GRAY)) PCHAR2( 8, '-', S_tuwall, "tuwall", "wall", CLR(CLR_GRAY)) PCHAR2( 9, '-', S_tdwall, "tdwall", "wall", CLR(CLR_GRAY)) @@ -105,8 +107,10 @@ PCHAR2(11, '|', S_trwall, "trwall", "wall", CLR(CLR_GRAY)) /* start cmap A */ PCHAR2(12, '.', S_ndoor, "no door", "doorway", CLR(CLR_GRAY)) - PCHAR2(13, '-', S_vodoor, "vertical open door", "open door", CLR(CLR_BROWN)) - PCHAR2(14, '|', S_hodoor, "horizontal open door", "open door", CLR(CLR_BROWN)) + PCHAR2(13, '-', S_vodoor, + "vertical open door", "open door", CLR(CLR_BROWN)) + PCHAR2(14, '|', S_hodoor, + "horizontal open door", "open door", CLR(CLR_BROWN)) PCHAR2(15, '+', S_vcdoor, "vertical closed door", "closed door", CLR(CLR_BROWN)) PCHAR2(16, '+', S_hcdoor, diff --git a/include/display.h b/include/display.h index cdd5a81a6..969b37ec3 100644 --- a/include/display.h +++ b/include/display.h @@ -17,7 +17,7 @@ * vobj_at() * * Returns the head of the list of objects that the player can see - * at location (x,y). + * at location (x,y). [Vestige of unimplemented invisible objects.] */ #define vobj_at(x, y) (g.level.objects[x][y]) @@ -541,18 +541,20 @@ enum glyph_offsets { #define warning_to_glyph(mwarnlev) ((mwarnlev) + GLYPH_WARNING_OFF) #define mon_to_glyph(mon, rng) \ - ((int) what_mon(monsndx((mon)->data), rng) + \ - (((mon)->female == 0) ? GLYPH_MON_MALE_OFF : GLYPH_MON_FEM_OFF)) + ((int) what_mon(monsndx((mon)->data), rng) \ + + (((mon)->female == 0) ? GLYPH_MON_MALE_OFF : GLYPH_MON_FEM_OFF)) #define detected_mon_to_glyph(mon, rng) \ - ((int) what_mon(monsndx((mon)->data), rng) + \ - (((mon)->female == 0) ? GLYPH_DETECT_MALE_OFF : GLYPH_DETECT_FEM_OFF)) + ((int) what_mon(monsndx((mon)->data), rng) \ + + (((mon)->female == 0) ? GLYPH_DETECT_MALE_OFF : GLYPH_DETECT_FEM_OFF)) #define ridden_mon_to_glyph(mon, rng) \ - ((int) what_mon(monsndx((mon)->data), rng) + \ - (((mon)->female == 0) ? GLYPH_RIDDEN_MALE_OFF : GLYPH_RIDDEN_FEM_OFF)) + ((int) what_mon(monsndx((mon)->data), rng) \ + + (((mon)->female == 0) ? GLYPH_RIDDEN_MALE_OFF : GLYPH_RIDDEN_FEM_OFF)) #define pet_to_glyph(mon, rng) \ - ((int) what_mon(monsndx((mon)->data), rng) + \ - (((mon)->female == 0) ? GLYPH_PET_MALE_OFF : GLYPH_PET_FEM_OFF)) + ((int) what_mon(monsndx((mon)->data), rng) \ + + (((mon)->female == 0) ? GLYPH_PET_MALE_OFF : GLYPH_PET_FEM_OFF)) +/* treat unaligned as the default instead of explicitly checking for it; + altar alignment uses 3 bits with 4 defined values and 4 unused ones */ #define altar_to_glyph(amsk) \ ((((amsk) & AM_SANCTUM) == AM_SANCTUM) \ ? (GLYPH_ALTAR_OFF + altar_other) \ @@ -562,9 +564,8 @@ enum glyph_offsets { ? (GLYPH_ALTAR_OFF + altar_neutral) \ : (((amsk) & AM_MASK) == AM_CHAOTIC) \ ? (GLYPH_ALTAR_OFF + altar_chaotic) \ - : (((amsk) & AM_MASK) == AM_NONE) \ - ? (GLYPH_ALTAR_OFF + altar_unaligned) \ - : (GLYPH_ALTAR_OFF + altar_neutral)) + /* (((amsk) & AM_MASK) == AM_UNALIGNED) */ \ + : (GLYPH_ALTAR_OFF + altar_unaligned)) /* not used, nor is it correct #define zap_to_glyph(zaptype, cmap_idx) \ @@ -613,7 +614,7 @@ enum glyph_offsets { : ((cmap_idx) == S_altar) ? altar_to_glyph(AM_NEUTRAL) \ : ((cmap_idx) < S_arrow_trap + MAXTCHARS) ? cmap_b_to_glyph(cmap_idx) \ : ((cmap_idx) <= S_goodpos) ? cmap_c_to_glyph(cmap_idx) \ - : NO_GLYPH ) + : NO_GLYPH ) #define trap_to_glyph(trap) \ cmap_to_glyph(trap_to_defsym(((int) (trap)->ttyp))) @@ -636,7 +637,7 @@ enum glyph_offsets { /* The hero's glyph when seen as a monster. */ -#define hero_glyph \ +#define hero_glyph \ monnum_to_glyph((Upolyd || !flags.showrace) ? u.umonnum : g.urace.mnum, \ (Ugender)) @@ -754,20 +755,20 @@ enum glyph_offsets { #define glyph_is_pet(glyph) \ (glyph_is_male_pet(glyph) || glyph_is_female_pet(glyph)) #define glyph_is_ridden_female_monster(glyph) \ - ((glyph) >= GLYPH_RIDDEN_FEM_OFF && (glyph) < \ - (GLYPH_RIDDEN_FEM_OFF + NUMMONS)) + ((glyph) >= GLYPH_RIDDEN_FEM_OFF \ + && (glyph) < (GLYPH_RIDDEN_FEM_OFF + NUMMONS)) #define glyph_is_ridden_male_monster(glyph) \ - ((glyph) >= GLYPH_RIDDEN_MALE_OFF && (glyph) < \ - (GLYPH_RIDDEN_MALE_OFF + NUMMONS)) + ((glyph) >= GLYPH_RIDDEN_MALE_OFF \ + && (glyph) < (GLYPH_RIDDEN_MALE_OFF + NUMMONS)) #define glyph_is_ridden_monster(glyph) \ (glyph_is_ridden_male_monster(glyph) \ || glyph_is_ridden_female_monster(glyph)) #define glyph_is_detected_female_monster(glyph) \ - ((glyph) >= GLYPH_DETECT_FEM_OFF && (glyph) < \ - (GLYPH_DETECT_FEM_OFF + NUMMONS)) + ((glyph) >= GLYPH_DETECT_FEM_OFF \ + && (glyph) < (GLYPH_DETECT_FEM_OFF + NUMMONS)) #define glyph_is_detected_male_monster(glyph) \ - ((glyph) >= GLYPH_DETECT_MALE_OFF && (glyph) < \ - (GLYPH_DETECT_MALE_OFF + NUMMONS)) + ((glyph) >= GLYPH_DETECT_MALE_OFF \ + && (glyph) < (GLYPH_DETECT_MALE_OFF + NUMMONS)) #define glyph_is_detected_monster(glyph) \ (glyph_is_detected_male_monster(glyph) \ || glyph_is_detected_female_monster(glyph)) @@ -796,16 +797,16 @@ enum glyph_offsets { : NO_GLYPH) #define obj_is_piletop(obj) \ - ((obj)->where == OBJ_FLOOR \ - && g.level.objects[(obj)->ox][(obj)->oy] \ - && g.level.objects[(obj)->ox][(obj)->oy]->nexthere) + ((obj)->where == OBJ_FLOOR \ + /*&& g.level.objects[(obj)->ox][(obj)->oy]*/ \ + && g.level.objects[(obj)->ox][(obj)->oy]->nexthere) #define glyph_is_body_piletop(glyph) \ - (((glyph) >= GLYPH_BODY_PILETOP_OFF) \ - && ((glyph) < (GLYPH_BODY_PILETOP_OFF + NUMMONS))) + (((glyph) >= GLYPH_BODY_PILETOP_OFF) \ + && ((glyph) < (GLYPH_BODY_PILETOP_OFF + NUMMONS))) #define glyph_is_body(glyph) \ ((((glyph) >= GLYPH_BODY_OFF) && ((glyph) < (GLYPH_BODY_OFF + NUMMONS))) \ - || glyph_is_body_piletop(glyph)) + || glyph_is_body_piletop(glyph)) #define glyph_is_fem_statue_piletop(glyph) \ (((glyph) >= GLYPH_STATUE_FEM_PILETOP_OFF) \ @@ -833,23 +834,24 @@ enum glyph_offsets { #if 0 #define glyph_is_object(glyph) \ -((((glyph) >= GLYPH_OBJ_OFF) && ((glyph) < (GLYPH_OBJ_OFF + NUM_OBJECTS))) \ - || (((glyph) >= GLYPH_OBJ_PILETOP_OFF) \ - && ((glyph) < (GLYPH_OBJ_PILETOP_OFF + NUM_OBJECTS))) \ - || (((glyph) >= GLYPH_STATUE_MALE_OFF) \ - && ((glyph) < (GLYPH_STATUE_MALE_OFF + NUMMONS))) \ - || (((glyph) >= GLYPH_STATUE_MALE_PILETOP_OFF) \ - && ((glyph) < (GLYPH_STATUE_MALE_PILETOP_OFF + NUMMONS))) \ - || (((glyph) >= GLYPH_STATUE_FEM_OFF) \ - && ((glyph) < (GLYPH_STATUE_FEM_OFF + NUMMONS))) \ - || (((glyph) >= GLYPH_STATUE_FEM_PILETOP_OFF) \ - && ((glyph) < (GLYPH_STATUE_FEM_PILETOP_OFF + NUMMONS))) \ - || (((glyph) >= GLYPH_BODY_OFF) && ((glyph) < (GLYPH_BODY_OFF + NUMMONS))) \ - || (((glyph) >= GLYPH_BODY_PILETOP_OFF) \ - && ((glyph) < (GLYPH_BODY_PILETOP_OFF + NUMMONS)))) + ((((glyph) >= GLYPH_OBJ_OFF) && ((glyph) < (GLYPH_OBJ_OFF + NUM_OBJECTS))) \ + || (((glyph) >= GLYPH_OBJ_PILETOP_OFF) \ + && ((glyph) < (GLYPH_OBJ_PILETOP_OFF + NUM_OBJECTS))) \ + || (((glyph) >= GLYPH_STATUE_MALE_OFF) \ + && ((glyph) < (GLYPH_STATUE_MALE_OFF + NUMMONS))) \ + || (((glyph) >= GLYPH_STATUE_MALE_PILETOP_OFF) \ + && ((glyph) < (GLYPH_STATUE_MALE_PILETOP_OFF + NUMMONS))) \ + || (((glyph) >= GLYPH_STATUE_FEM_OFF) \ + && ((glyph) < (GLYPH_STATUE_FEM_OFF + NUMMONS))) \ + || (((glyph) >= GLYPH_STATUE_FEM_PILETOP_OFF) \ + && ((glyph) < (GLYPH_STATUE_FEM_PILETOP_OFF + NUMMONS))) \ + || (((glyph) >= GLYPH_BODY_OFF) \ + && ((glyph) < (GLYPH_BODY_OFF + NUMMONS))) \ + || (((glyph) >= GLYPH_BODY_PILETOP_OFF) \ + && ((glyph) < (GLYPH_BODY_PILETOP_OFF + NUMMONS)))) #endif -#define glyph_is_object(glyph) \ - (glyph_is_normal_object(glyph) || glyph_is_statue(glyph) \ +#define glyph_is_object(glyph) \ + (glyph_is_normal_object(glyph) || glyph_is_statue(glyph) \ || glyph_is_body(glyph)) /* briefly used for Qt's "paper doll" inventory which shows map tiles for @@ -857,8 +859,8 @@ enum glyph_offsets { so this isn't used anywhere */ #define obj_to_true_glyph(obj) \ (((obj)->otyp == STATUE) \ - ? ((int) (obj)->corpsenm + \ - (((obj)->spe & CORPSTAT_GENDER) == CORPSTAT_FEMALE) \ + ? ((int) (obj)->corpsenm \ + + (((obj)->spe & CORPSTAT_GENDER) == CORPSTAT_FEMALE) \ ? (obj_is_piletop(obj) \ ? (GLYPH_STATUE_FEM_PILETOP_OFF) \ : (GLYPH_STATUE_FEM_OFF)) \ @@ -866,28 +868,25 @@ enum glyph_offsets { ? (GLYPH_STATUE_MALE_PILETOP_OFF) \ : (GLYPH_STATUE_MALE_OFF)) \ : (((obj)->otyp == CORPSE) \ - ? ((int) (obj)->corpsenm + \ - (obj_is_piletop(obj) \ + ? ((int) (obj)->corpsenm \ + + (obj_is_piletop(obj) \ ? (GLYPH_BODY_PILETOP_OFF) \ ? (GLYPH_BODY_OFF))) \ : ((int) (obj)->otyp + GLYPH_OBJ_OFF)))) #define glyph_to_obj(glyph) \ - (glyph_is_body(glyph) \ - ? CORPSE \ - : glyph_is_statue(glyph) \ - ? STATUE \ - : glyph_is_normal_object(glyph) \ - ? ((glyph) - \ - (glyph_is_normal_piletop_obj(glyph) \ - ? GLYPH_OBJ_PILETOP_OFF \ - : GLYPH_OBJ_OFF)) \ + (glyph_is_body(glyph) ? CORPSE \ + : glyph_is_statue(glyph) ? STATUE \ + : glyph_is_normal_object(glyph) \ + ? ((glyph) - (glyph_is_normal_piletop_obj(glyph) \ + ? GLYPH_OBJ_PILETOP_OFF \ + : GLYPH_OBJ_OFF)) \ : NO_GLYPH) #define glyph_to_body_corpsenm(glyph) \ - (glyph_is_body_piletop(glyph) \ - ? ((glyph) - GLYPH_BODY_PILETOP_OFF) \ - : ((glyph) - GLYPH_BODY_OFF)) + (glyph_is_body_piletop(glyph) \ + ? ((glyph) - GLYPH_BODY_PILETOP_OFF) \ + : ((glyph) - GLYPH_BODY_OFF)) #define glyph_to_statue_corpsenm(glyph) \ (glyph_is_fem_statue_piletop(glyph) \ @@ -900,11 +899,11 @@ enum glyph_offsets { ? ((glyph) - GLYPH_STATUE_MALE_OFF) \ : NO_GLYPH) -/* These have the unfortunate side effect of needing a global variable */ +/* These have the unfortunate side effect of needing a global variable */ /* to store a result. 'otg_temp' is defined and declared in decl.{ch}. */ #define random_obj_to_glyph(rng) \ - ((g.otg_temp = random_object(rng)) == CORPSE \ - ? (random_monster(rng) + GLYPH_BODY_OFF) \ + ((g.otg_temp = random_object(rng)) == CORPSE \ + ? (random_monster(rng) + GLYPH_BODY_OFF) \ : (g.otg_temp + GLYPH_OBJ_OFF)) #define corpse_to_glyph(obj) \ ((int) ((obj)->corpsenm + (obj_is_piletop(obj) \ @@ -918,58 +917,57 @@ enum glyph_offsets { also done so that special levels such a Sokoban can "hide" items under the boulders. */ #define normal_obj_to_glyph(obj) \ - ((int) ((obj)->otyp + \ - ((obj_is_piletop(obj) && ((obj)->otyp != BOULDER)) \ - ? GLYPH_OBJ_PILETOP_OFF \ - : GLYPH_OBJ_OFF))) + ((int) ((obj)->otyp + ((obj_is_piletop(obj) && ((obj)->otyp != BOULDER)) \ + ? GLYPH_OBJ_PILETOP_OFF \ + : GLYPH_OBJ_OFF))) /* MRKR: Statues now have glyphs corresponding to the monster they */ /* represent and look like monsters when you are hallucinating. */ #define statue_to_glyph(obj, rng) \ ((Hallucination) \ - ? ((random_monster(rng)) + \ - ((!(rng)(2)) ? GLYPH_MON_MALE_OFF : GLYPH_MON_FEM_OFF)) \ - : ((int) (obj)->corpsenm + \ - ((((obj)->spe & CORPSTAT_GENDER) == CORPSTAT_FEMALE) \ - ? (obj_is_piletop(obj) \ - ? GLYPH_STATUE_FEM_PILETOP_OFF \ - : GLYPH_STATUE_FEM_OFF) \ - : (obj_is_piletop(obj) \ - ? GLYPH_STATUE_MALE_PILETOP_OFF \ - : GLYPH_STATUE_MALE_OFF)))) + ? ((random_monster(rng)) \ + + ((!(rng)(2)) ? GLYPH_MON_MALE_OFF : GLYPH_MON_FEM_OFF)) \ + : ((int) (obj)->corpsenm \ + + ((((obj)->spe & CORPSTAT_GENDER) == CORPSTAT_FEMALE) \ + ? (obj_is_piletop(obj) \ + ? GLYPH_STATUE_FEM_PILETOP_OFF \ + : GLYPH_STATUE_FEM_OFF) \ + : (obj_is_piletop(obj) \ + ? GLYPH_STATUE_MALE_PILETOP_OFF \ + : GLYPH_STATUE_MALE_OFF)))) #define obj_to_glyph(obj, rng) \ - (((obj)->otyp == STATUE) \ - ? statue_to_glyph(obj, rng) \ - : ((Hallucination) \ - ? random_obj_to_glyph(rng) \ - : (((obj)->otyp == CORPSE) \ - ? corpse_to_glyph(obj) \ - : normal_obj_to_glyph(obj)))) + (((obj)->otyp == STATUE) \ + ? statue_to_glyph(obj, rng) \ + : ((Hallucination) \ + ? random_obj_to_glyph(rng) \ + : (((obj)->otyp == CORPSE) \ + ? corpse_to_glyph(obj) \ + : normal_obj_to_glyph(obj)))) #define GLYPH_TRAP_OFF \ (GLYPH_CMAP_B_OFF + (S_arrow_trap - S_grave)) -#define glyph_is_trap(glyph) \ - ((glyph) >= (GLYPH_TRAP_OFF) && \ - (glyph) < ((GLYPH_TRAP_OFF) + MAXTCHARS)) -#define glyph_is_warning(glyph) \ - ((glyph) >= GLYPH_WARNING_OFF \ +#define glyph_is_trap(glyph) \ + ((glyph) >= (GLYPH_TRAP_OFF) \ + && (glyph) < ((GLYPH_TRAP_OFF) + MAXTCHARS)) +#define glyph_is_warning(glyph) \ + ((glyph) >= GLYPH_WARNING_OFF \ && (glyph) < (GLYPH_WARNING_OFF + WARNCOUNT)) #define glyph_is_unexplored(glyph) ((glyph) == GLYPH_UNEXPLORED) #define glyph_is_nothing(glyph) ((glyph) == GLYPH_NOTHING) -/* +#if 0 #define glyph_is_piletop(glyph) \ (glyph_is_body_piletop(glyph) || glyph_is_statue_piletop(glyph) \ || glyph_is_obj_piletop(glyph)) -*/ +#endif /* mgflags for altering map_glyphinfo() internal behaviour */ -#define MG_FLAG_NORMAL 0x00 +#define MG_FLAG_NORMAL 0x00 #define MG_FLAG_NOOVERRIDE 0x01 /* disregard accessibility override values */ -/* Special mapped glyphflags encoded by reset_glyphmap() and/or map_glyphinfo() */ +/* Special mapped glyphflags encoded by reset_glyphmap() + map_glyphinfo() */ #define MG_HERO 0x00001 /* represents the hero */ #define MG_CORPSE 0x00002 /* represents a body */ #define MG_INVIS 0x00004 /* represents invisible monster */ @@ -979,12 +977,12 @@ enum glyph_offsets { #define MG_STATUE 0x00040 /* represents a statue */ #define MG_OBJPILE 0x00080 /* more than one stack of objects */ #define MG_BW_LAVA 0x00100 /* 'black & white lava': highlight lava if it - can't be distringuished from water by color */ + * can't be distringuished from water by color */ #define MG_BW_ICE 0x00200 /* similar for ice vs floor */ #define MG_NOTHING 0x00400 /* char represents GLYPH_NOTHING */ #define MG_UNEXPL 0x00800 /* char represents GLYPH_UNEXPLORED */ -#define MG_MALE 0x01000 /* represents a male mon variation or statue of one */ -#define MG_FEMALE 0x02000 /* represents a female mon variation or statue of one */ +#define MG_MALE 0x01000 /* represents a male mon or statue of one */ +#define MG_FEMALE 0x02000 /* represents a female mon or statue of one */ #define MG_BADXY 0x04000 /* bad coordinates were passed */ typedef struct {