POSITION dummy_x = m_ptr->fx;
BIT_FLAGS mode = 0L;
+ if (see_monster(player_ptr, m_idx) && monster_near_player(floor_ptr, m_idx, 0))
+ disturb(player_ptr, true, true);
+
switch (m_ptr->r_idx) {
case MON_BANORLUPART:
dummy_hp = (m_ptr->hp + 1) / 2;
int count = 0, k;
int num = 1 + randint1(3);
BIT_FLAGS mode = 0L;
+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
+ bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
+ bool mon_to_mon = TARGET_TYPE == MONSTER_TO_MONSTER;
+ bool mon_to_player = TARGET_TYPE == MONSTER_TO_PLAYER;
+ bool known = monster_near_player(floor_ptr, m_idx, t_idx);
+
mspell_cast_msg_blind msg(_("%^sが何か大量に投げた。", "%^s spreads something."),
_("%^sは手榴弾をばらまいた。", "%^s throws some hand grenades."), _("%^sは手榴弾をばらまいた。", "%^s throws some hand grenades."));
monspell_message(player_ptr, m_idx, t_idx, msg, TARGET_TYPE);
+ if (mon_to_player || (mon_to_mon && known && see_either))
+ disturb(player_ptr, true, true);
for (k = 0; k < num; k++) {
count += summon_named_creature(player_ptr, m_idx, y, x, MON_GRENADE, mode);
monster_type *m_ptr = &floor_ptr->m_list[m_idx];
monster_race *r_ptr = &r_info[m_ptr->r_idx];
- disturb(player_ptr, true, true);
switch (m_ptr->r_idx) {
case MON_OHMU:
return MonsterSpellResult::make_invalid();
char m_poss[10];
monster_desc(player_ptr, m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
- disturb(player_ptr, true, true);
-
msg.to_player_true = _("%^sが何かをつぶやいた。", "%^s mumbles.");
msg.to_mons_true = _("%^sは自分の傷に念を集中した。", format("%%^s concentrates on %s wounds.", m_poss));
msg.to_player_false = _("%^sが自分の傷に集中した。", format("%%^s concentrates on %s wounds.", m_poss));