summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/misc.cc7
-rw-r--r--crawl-ref/source/mon-util.cc8
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 ))
{