diff options
Diffstat (limited to 'crawl-ref/source/beam.cc')
-rw-r--r-- | crawl-ref/source/beam.cc | 50 |
1 files changed, 19 insertions, 31 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 71973ed73d..e0dcfc4656 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -2413,9 +2413,7 @@ static bool _monster_resists_mass_enchantment(monsters *monster, bool mass_enchantment( enchant_type wh_enchant, int pow, int origin, int *m_succumbed, int *m_attempted ) { - int i; // loop variable {dlb} bool msg_generated = false; - monsters *monster; if (m_succumbed) *m_succumbed = 0; @@ -2424,16 +2422,18 @@ bool mass_enchantment( enchant_type wh_enchant, int pow, int origin, viewwindow(false, false); - if (pow > 200) - pow = 200; + pow = std::min(pow, 200); const kill_category kc = (origin == MHITYOU ? KC_YOU : KC_OTHER); - for (i = 0; i < MAX_MONSTERS; i++) + for (int i = 0; i < MAX_MONSTERS; i++) { - monster = &menv[i]; + monsters* const monster = &menv[i]; - if (monster->type == -1 || !mons_near(monster)) + if (!monster->alive()) + continue; + + if (!mons_near(monster)) continue; if (monster->has_ench(wh_enchant)) @@ -2450,35 +2450,23 @@ bool mass_enchantment( enchant_type wh_enchant, int pow, int origin, if (m_succumbed) ++*m_succumbed; - if (player_monster_visible( monster )) - { - // turn message on - msg_generated = true; - switch (wh_enchant) - { - case ENCH_FEAR: - simple_monster_message(monster, - " looks frightened!"); - break; - case ENCH_CONFUSION: - simple_monster_message(monster, - " looks rather confused."); - break; - case ENCH_CHARM: - simple_monster_message(monster, - " submits to your will."); - break; - default: - // oops, I guess not! - msg_generated = false; - } + // Do messaging. + const char* msg; + switch (wh_enchant) + { + case ENCH_FEAR: msg = " looks frightened!"; break; + case ENCH_CONFUSION: msg = " looks rather confused."; break; + case ENCH_CHARM: msg = " submits to your will."; break; + default: msg = NULL; break; } + if (msg) + msg_generated = simple_monster_message(monster, msg); // Extra check for fear (monster needs to reevaluate behaviour). if (wh_enchant == ENCH_FEAR) - behaviour_event( monster, ME_SCARE, origin ); + behaviour_event(monster, ME_SCARE, origin); } - } // end "for i" + } if (!msg_generated) canned_msg(MSG_NOTHING_HAPPENS); |