diff options
-rw-r--r-- | crawl-ref/source/misc.cc | 7 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 8 |
2 files changed, 10 insertions, 5 deletions
diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc index 31c4cbd86a..a3e8006ab6 100644 --- a/crawl-ref/source/misc.cc +++ b/crawl-ref/source/misc.cc @@ -2580,8 +2580,11 @@ std::string cloud_name(cloud_type type) bool mons_is_safe(const struct monsters *mon, bool want_move) { - bool is_safe = mons_wont_attack(mon) - || mons_class_flag(mon->type, M_NO_EXP_GAIN); + bool is_safe = (mons_wont_attack(mon) + || mons_class_flag(mon->type, M_NO_EXP_GAIN) + // only seen through glass walls + || !see_grid_no_trans(mon->x, mon->y) + && !mons_has_ranged_spell(mon)); #ifdef CLUA_BINDINGS bool moving = (!you.delay_queue.empty() diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 1b4f701b60..0906dbd7e9 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -1333,9 +1333,7 @@ int exper_value( const struct monsters *monster ) // cause the experience value to be overly large... this tries // to reduce the inappropriate amount of XP that results. -- bwr if (speed < 10 && !spellcaster && item_usage < MONUSE_STARTING_EQUIPMENT) - { x_val /= 2; - } // Apply the modifier in the monster's definition if (modifier > 0) @@ -2366,7 +2364,11 @@ bool mons_is_magic_user( const monsters *mon ) bool mons_has_ranged_spell( const monsters *mon ) { - const int mclass = mon->type; + const int mclass = mon->type; + + // These two have Torment, but are handled specially. + if (mclass == MONS_FIEND || mclass == MONS_PIT_FIEND) + return (true); if (mons_class_flag( mclass, M_SPELLCASTER )) { |