--- src/tables.c.orig 2004-02-24 16:42:12.000000000 -0500 +++ src/tables.c 2004-08-22 13:19:43.000000000 -0400 @@ -1555,11 +1555,17 @@ { &avoid_abort, FALSE, 4, 2, "avoid_abort", "Avoid checking for user abort" }, - { &avoid_shimmer, FALSE, 4, 17, - "avoid_shimmer", "Avoid extra shimmering (fast)" }, + { &avoid_m_shimmer, FALSE, 4, 3, + "avoid_m_shimmer", "Avoid shimmering multi-hued monsters (fast)" }, - { &avoid_other, FALSE, 4, 3, - "avoid_other", "Avoid processing special colors (fast)" }, + { &avoid_o_shimmer, FALSE, 4, 18, + "avoid_o_shimmer", "Avoid shimmering multi-colored objects (fast)" }, + + { &avoid_f_shimmer, FALSE, 4, 17, + "avoid_f_shimmer", "Avoid shimmering for terrain features (fast)" }, + + { &avoid_cloud, FALSE, 4, 19, + "avoid_cloud", "Avoid special cloud-effect colors (fast)" }, { &flush_failure, TRUE, 4, 4, "flush_failure", "Flush input on various failures" }, --- src/variable.c.orig 2004-02-24 16:42:15.000000000 -0500 +++ src/variable.c 2004-08-22 13:19:43.000000000 -0400 @@ -316,8 +316,10 @@ bool view_reduce_view; /* Reduce view-radius in town */ bool avoid_abort; /* Avoid checking for user abort */ -bool avoid_shimmer; /* Avoid processing extra shimmering */ -bool avoid_other; /* Avoid processing special colors */ +bool avoid_m_shimmer; /* Avoid shimmering multi-hued monsters */ +bool avoid_o_shimmer; /* Avoid shimmering multi-colored objects */ +bool avoid_f_shimmer; /* Avoid shimmering for terrain features */ +bool avoid_cloud; /* Avoid special cloud-effect colors */ bool flush_failure; /* Flush input on any failure */ bool flush_disturb; /* Flush input on disturbance */ --- src/externs.h.orig 2004-07-11 15:01:30.000000000 -0400 +++ src/externs.h 2004-08-22 13:22:48.000000000 -0400 @@ -222,8 +222,10 @@ extern bool disturb_minor; extern bool disturb_other; extern bool avoid_abort; -extern bool avoid_shimmer; -extern bool avoid_other; +extern bool avoid_m_shimmer; +extern bool avoid_o_shimmer; +extern bool avoid_f_shimmer; +extern bool avoid_cloud; extern bool flush_disturb; extern bool flush_failure; extern bool flush_command; --- src/dungeon.c.orig 2004-08-13 23:00:00.000000000 -0400 +++ src/dungeon.c 2004-08-22 13:21:13.000000000 -0400 @@ -4968,7 +4968,7 @@ /* Shimmer monsters if needed */ - if (!avoid_other && !use_graphics && shimmer_monsters) + if (!avoid_m_shimmer && !use_graphics && shimmer_monsters) { /* Clear the flag */ shimmer_monsters = FALSE; @@ -5000,7 +5000,7 @@ } /* Shimmer objects if needed and requested */ - if (!avoid_other && !avoid_shimmer && !use_graphics && + if (!avoid_o_shimmer && !use_graphics && shimmer_objects) { /* Clear the flag */ @@ -5037,7 +5037,7 @@ * fast, and that's why shimmering has been limited to small * number of monsters -- pelpel */ - if (!avoid_other && !avoid_shimmer && !use_graphics && + if (!avoid_f_shimmer && !use_graphics && !resting && !running) { for (j = panel_row_min; j <= panel_row_max; j++) --- src/cave.c.orig 2004-02-24 19:50:56.000000000 -0500 +++ src/cave.c 2004-08-22 13:50:38.000000000 -0400 @@ -828,7 +828,7 @@ * they take the symbol of whatever is under them. Technically, the flag * "CHAR_MULTI" is supposed to indicate that a monster looks strange when * examined, but this flag is currently ignored. All of these flags are - * ignored if the "avoid_other" option is set, since checking for these + * ignored if the "avoid_m_shimmer" option is set, since checking for these * conditions is expensive (and annoying) on some systems. * * Normally, players could be handled just like monsters, except that the @@ -1056,16 +1056,16 @@ /**** Step 2 -- Apply special random effects ****/ - if (!avoid_other && !avoid_shimmer && attr_mutable) + if (attr_mutable) { /* Special terrain effect */ - if (c_ptr->effect) + if (!avoid_cloud && c_ptr->effect) { a = spell_color(effects[c_ptr->effect].type); } /* Multi-hued attr */ - else if (f_ptr->flags1 & FF1_ATTR_MULTI) + else if (!avoid_f_shimmer && f_ptr->flags1 & FF1_ATTR_MULTI) { a = f_ptr->shimmer[rand_int(7)]; } @@ -1279,7 +1279,7 @@ *ap = object_attr(o_ptr); /* Multi-hued attr */ - if (!avoid_other && attr_mutable && + if (!avoid_o_shimmer && attr_mutable && (k_info[o_ptr->k_idx].flags5 & TR5_ATTR_MULTI)) { *ap = get_shimmer_color(); @@ -1319,7 +1319,7 @@ *ap = object_attr(o_ptr); /* Multi-hued attr */ - if (!avoid_other && attr_mutable && + if (!avoid_o_shimmer && attr_mutable && (k_info[o_ptr->k_idx].flags5 & TR5_ATTR_MULTI)) { *ap = get_shimmer_color(); @@ -1371,7 +1371,7 @@ a = r_ptr->x_attr; /* Ignore weird codes */ - if (avoid_other) + if (avoid_m_shimmer) { /* Use char */ *cp = c; @@ -1478,7 +1478,7 @@ #endif /* USE_EGO_GRAPHICS */ /* Get the "player" attr */ - if (!avoid_other && attr_mutable && (r_ptr->flags1 & RF1_ATTR_MULTI)) + if (!avoid_m_shimmer && attr_mutable && (r_ptr->flags1 & RF1_ATTR_MULTI)) { a = get_shimmer_color(); } @@ -1708,19 +1708,16 @@ /**** Step 2 -- Apply special random effects ****/ - if (!avoid_other) + /* Special terrain effect */ + if (!avoid_cloud && c_ptr->effect) { - /* Special terrain effect */ - if (c_ptr->effect) - { - a = spell_color(effects[c_ptr->effect].type); - } + a = spell_color(effects[c_ptr->effect].type); + } - /* Multi-hued attr */ - else if (f_ptr->flags1 & FF1_ATTR_MULTI) - { - a = f_ptr->shimmer[rand_int(7)]; - } + /* Multi-hued attr */ + else if (!avoid_f_shimmer && f_ptr->flags1 & FF1_ATTR_MULTI) + { + a = f_ptr->shimmer[rand_int(7)]; } @@ -1860,7 +1857,7 @@ *ap = object_attr_default(o_ptr); /* Multi-hued attr */ - if (!avoid_other && + if (!avoid_o_shimmer && (k_info[o_ptr->k_idx].flags5 & TR5_ATTR_MULTI)) { *ap = get_shimmer_color(); @@ -1900,7 +1897,7 @@ *ap = object_attr_default(o_ptr); /* Multi-hued attr */ - if (!avoid_other && !use_graphics && + if (!avoid_o_shimmer && !use_graphics && (k_info[o_ptr->k_idx].flags5 & TR5_ATTR_MULTI)) { *ap = get_shimmer_color(); @@ -1922,7 +1919,7 @@ a = r_ptr->d_attr; /* Ignore weird codes */ - if (avoid_other) + if (avoid_m_shimmer) { /* Use char */ *cp = c; @@ -2010,7 +2007,7 @@ monster_race *r_ptr = &r_info[p_ptr->body_monster]; /* Get the "player" attr */ - if (!avoid_other && (r_ptr->flags1 & RF1_ATTR_MULTI)) + if (!avoid_m_shimmer && (r_ptr->flags1 & RF1_ATTR_MULTI)) { a = get_shimmer_color(); } --- lib/help/option.txt.orig 2004-02-24 16:42:10.000000000 -0500 +++ lib/help/option.txt 2004-08-22 13:44:26.000000000 -0400 @@ -457,7 +457,7 @@ for long periods of time with this option set is dangerous since the resting may not stop until the user takes damage from starvation. -#####GAvoid processing special colors [avoid_other] +#####GAvoid shimmering multi-hued monsters [avoid_m_shimmer] Avoid processing the "multi-hued" or "clear" attributes of monsters. This will cause all "multi-hued" monsters to appear "violet" and all "clear" monsters to appear "white", and will cause "trappers" and @@ -471,6 +471,25 @@ are using graphics, and you use a "normal" attr/char for the "floor" grids, then you can use the "special lighting effects" for floors. +#####GAvoid shimmering multi-colored objects [avoid_o_shimmer] + Avoid processing the "multi-colored" attributes of objects. This will + cause all (or most) "multi-colored" objects to appear "violet". See + the 'avoid_m_shimmer' option for discussion of special color-handling + or graphics issues with some systems. + +#####GAvoid shimmering for terrain features [avoid_f_shimmer] + Avoid processing the "multi-colored" attributes of terrain features. + This will cause all "multi-colored" terrain features to appear in its + primary defined color. See the 'avoid_m_shimmer' option for discussion + of special color-handling or graphics issues with some systems. + +#####GAvoid special cloud-effect colors [avoid_cloud] + Avoid processing the shimmering spell-color effects for lingering cloud + effects, such as those left by the Noxious Cloud spell. This will + cause such lingering effects to be effectively invisible. See the + 'avoid_m_shimmer' option for discussion of special color-handling or + graphics issues with some systems. + #####GFlush input on various failures [flush_failure] This option forces the game to flush all pending input whenever various "failures" occur, such as failure to cast a spell, failure to use a wand,