diff options
-rw-r--r-- | crawl-ref/source/monplace.cc | 8 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 9 |
2 files changed, 11 insertions, 6 deletions
diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc index 703c39b41a..f0abe5b778 100644 --- a/crawl-ref/source/monplace.cc +++ b/crawl-ref/source/monplace.cc @@ -20,6 +20,7 @@ REVISION("$Rev$"); #include "ghost.h" #include "lev-pand.h" #include "makeitem.h" +#include "message.h" #include "monstuff.h" #include "mon-pick.h" #include "mon-util.h" @@ -1099,8 +1100,15 @@ static int _place_monster_aux(const mgen_data &mg, // Don't leave shifters in their starting shape. if (mg.cls == MONS_SHAPESHIFTER || mg.cls == MONS_GLOWING_SHAPESHIFTER) + { + no_messages nm; monster_polymorph(&menv[id], RANDOM_MONSTER); + // It's not actually a known shapeshifter if it happened to be + // placed in LOS of the player. + menv[id].flags &= ~MF_KNOWN_MIMIC; + } + // dur should always be 1-6 for monsters that can be abjured. const bool summoned = mg.abjuration_duration >= 1 && mg.abjuration_duration <= 6; diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index f104bcefa6..e915034ebc 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -1909,11 +1909,8 @@ bool monster_polymorph(monsters *monster, monster_type targetc, if (!_valid_morph(monster, targetc)) return simple_monster_message(monster, " looks momentarily different."); - const bool just_summoned = monster->flags & MF_JUST_SUMMONED; - - // Messaging. If the monster was just now summoned it's being - // polymorphed as it's being placed, so the player doesn't see it. - bool can_see = you.can_see(monster) && !just_summoned; + // Messaging. + bool can_see = you.can_see(monster); // If old monster is visible to the player, and is interesting, // then note why the interesting monster went away. @@ -2028,7 +2025,7 @@ bool monster_polymorph(monsters *monster, monster_type targetc, if (mons_class_flag(monster->type, M_INVIS)) monster->add_ench(ENCH_INVIS); - if (!player_messaged && !just_summoned && you.can_see(monster)) + if (!player_messaged && you.can_see(monster)) { mprf("%s appears out of thin air!", monster->name(DESC_CAP_A).c_str()); player_messaged = true; |