}
+void mutation_stop_mouth()
+{
+ if (music_singing_any()) stop_singing();
+ if (hex_spelling_any()) stop_hex_spell_all();
+}
+
+
bool mutation_power_aux(u32b power)
{
int dir = 0;
{
case MUT1_SPIT_ACID:
if (!get_aim_dir(&dir)) return FALSE;
- if (music_singing_any()) stop_singing();
+ mutation_stop_mouth();
#ifdef JP
msg_print("»À¤òÅǤ¤«¤±¤¿...");
#else
case MUT1_BR_FIRE:
if (!get_aim_dir(&dir)) return FALSE;
- if (music_singing_any()) stop_singing();
+ mutation_stop_mouth();
#ifdef JP
msg_print("¤¢¤Ê¤¿¤Ï²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿...");
#else
msg_print("You concentrate...");
#endif
- teleport_player(10 + 4 * lvl, FALSE);
+ teleport_player(10 + 4 * lvl, 0L);
break;
case MUT1_MIND_BLST:
x = px + ddx[dir];
c_ptr = &cave[y][x];
- if (music_singing_any()) stop_singing();
+ mutation_stop_mouth();
if (!(c_ptr->m_idx))
{
break;
case MUT1_SMELL_MET:
- if (music_singing_any()) stop_singing();
+ mutation_stop_mouth();
(void)detect_treasure(DETECT_RAD_DEFAULT);
break;
case MUT1_SMELL_MON:
- if (music_singing_any()) stop_singing();
+ mutation_stop_mouth();
(void)detect_monsters_normal(DETECT_RAD_DEFAULT);
break;
case MUT1_BLINK:
- teleport_player(10, FALSE);
+ teleport_player(10, 0L);
break;
case MUT1_EAT_ROCK:
{
int x, y;
cave_type *c_ptr;
- feature_type *f_ptr;
+ feature_type *f_ptr, *mimic_f_ptr;
if (!get_rep_dir2(&dir)) return FALSE;
y = py + ddy[dir];
x = px + ddx[dir];
c_ptr = &cave[y][x];
f_ptr = &f_info[c_ptr->feat];
+ mimic_f_ptr = &f_info[get_feat_mimic(c_ptr)];
- if (music_singing_any()) stop_singing();
+ mutation_stop_mouth();
- if (!have_flag(f_info[get_feat_mimic(c_ptr)].flags, FF_HURT_ROCK))
+ if (!have_flag(mimic_f_ptr->flags, FF_HURT_ROCK))
{
#ifdef JP
msg_print("¤³¤ÎÃÏ·Á¤Ï¿©¤Ù¤é¤ì¤Ê¤¤¡£");
else if (have_flag(f_ptr->flags, FF_PERMANENT))
{
#ifdef JP
- msg_format("¤¤¤Æ¤Ã¡ª¤³¤Î%s¤Ï¤¢¤Ê¤¿¤Î»õ¤è¤ê¹Å¤¤¡ª", f_name + f_info[get_feat_mimic(c_ptr)].name);
+ msg_format("¤¤¤Æ¤Ã¡ª¤³¤Î%s¤Ï¤¢¤Ê¤¿¤Î»õ¤è¤ê¹Å¤¤¡ª", f_name + mimic_f_ptr->name);
#else
- msg_format("Ouch! This %s is harder than your teeth!", f_name + f_info[get_feat_mimic(c_ptr)].name);
+ msg_format("Ouch! This %s is harder than your teeth!", f_name + mimic_f_ptr->name);
#endif
break;
}
#endif
break;
}
+ else if (have_flag(f_ptr->flags, FF_GLASS))
+ {
+#ifdef JP
+ msg_print("¥¬¥é¥¹¤ÎÌ£¤Ï¹¥¤¤¸¤ã¤Ê¤¤¡ª");
+#else
+ msg_print("You don't like the glassy taste!");
+#endif
+ break;
+ }
else if (have_flag(f_ptr->flags, FF_DOOR) || have_flag(f_ptr->flags, FF_CAN_DIG))
{
(void)set_food(p_ptr->food + 3000);
else
{
#ifdef JP
- msg_format("¤³¤Î%s¤Ï¤È¤Æ¤â¤ª¤¤¤·¤¤¡ª", f_name + f_info[get_feat_mimic(c_ptr)].name);
+ msg_format("¤³¤Î%s¤Ï¤È¤Æ¤â¤ª¤¤¤·¤¤¡ª", f_name + mimic_f_ptr->name);
#else
- msg_format("This %s is very filling!", f_name + f_info[get_feat_mimic(c_ptr)].name);
+ msg_format("This %s is very filling!", f_name + mimic_f_ptr->name);
#endif
(void)set_food(p_ptr->food + 10000);
}
break;
case MUT1_SHRIEK:
- if (music_singing_any()) stop_singing();
+ mutation_stop_mouth();
(void)fire_ball(GF_SOUND, 0, 2 * lvl, 8);
(void)aggravate_monsters(0);
break;
#else
msg_print("You failed to teleport.");
#endif
- else teleport_player(30, FALSE);
+ else teleport_player(30, 0L);
}
else
{
(r_ptr->level < randint1(p_ptr->lev+50)) &&
!(m_ptr->mflag2 & MFLAG2_NOGENO))
{
+ if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname)
+ {
+ char m_name[80];
+
+ monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
+ do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name);
+ }
+
/* Delete the monster, rather than killing it. */
delete_monster_idx(c_ptr->m_idx);
#ifdef JP