return (TRUE);
}
+ /* Hex: Anti Magic Barrier */
+ if (!spell_is_inate(thrown_spell) && magic_barrier(m_idx))
+ {
+#ifdef JP
+ msg_format("È¿ËâË¡¥Ð¥ê¥¢¤¬%^s¤Î¼öʸ¤ò¤«¤¾Ã¤·¤¿¡£", m_name);
+#else
+ msg_format("Anti magic barrier cancels the spell which %^s casts.");
+#endif
+ return (TRUE);
+ }
+
/* Projectable? */
direct = player_bold(y, x);
case 160+4:
{
disturb(1, 0);
+ if (teleport_barrier(m_idx))
+ {
#ifdef JP
-msg_format("%^s¤¬½Ö»þ¤Ë¾Ã¤¨¤¿¡£", m_name);
+ msg_format("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£", m_name);
#else
- msg_format("%^s blinks away.", m_name);
+ msg_format("Magic barrier obstructs teleporting of %^s.", m_name);
#endif
-
- teleport_away(m_idx, 10, 0L);
- p_ptr->update |= (PU_MONSTERS);
+ }
+ else
+ {
+#ifdef JP
+ msg_format("%^s¤¬½Ö»þ¤Ë¾Ã¤¨¤¿¡£", m_name);
+#else
+ msg_format("%^s blinks away.", m_name);
+#endif
+ teleport_away(m_idx, 10, 0L);
+ p_ptr->update |= (PU_MONSTERS);
+ }
break;
}
case 160+5:
{
disturb(1, 0);
+ if (teleport_barrier(m_idx))
+ {
#ifdef JP
- msg_format("%^s¤¬¥Æ¥ì¥Ý¡¼¥È¤·¤¿¡£", m_name);
+ msg_format("ËâË¡¤Î¥Ð¥ê¥¢¤¬%^s¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤷¤¿¡£", m_name);
#else
- msg_format("%^s teleports away.", m_name);
+ msg_format("Magic barrier obstructs teleporting of %^s.", m_name);
#endif
-
- teleport_away_followable(m_idx);
+ }
+ else
+ {
+#ifdef JP
+ msg_format("%^s¤¬¥Æ¥ì¥Ý¡¼¥È¤·¤¿¡£", m_name);
+#else
+ msg_format("%^s teleports away.", m_name);
+#endif
+ teleport_away_followable(m_idx);
+ }
break;
}
/* RF6_S_UNIQUE */
case 160+31:
{
+ bool uniques_are_summoned = FALSE;
+ int non_unique_type = SUMMON_HI_UNDEAD;
+
disturb(1, 0);
#ifdef JP
if (blind) msg_format("%^s¤¬²¿¤«¤ò¤Ä¤Ö¤ä¤¤¤¿¡£", m_name);
{
count += summon_specific(m_idx, y, x, rlev, SUMMON_UNIQUE, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
}
- if (r_ptr->flags3 & RF3_GOOD)
- {
- for (k = count; k < s_num_4; k++)
- {
- count += summon_specific(m_idx, y, x, rlev, SUMMON_ANGEL, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
- }
- }
- else
+
+ if (count) uniques_are_summoned = TRUE;
+
+ if ((m_ptr->sub_align & (SUB_ALIGN_GOOD | SUB_ALIGN_EVIL)) == (SUB_ALIGN_GOOD | SUB_ALIGN_EVIL))
+ non_unique_type = 0;
+ else if (m_ptr->sub_align & SUB_ALIGN_GOOD)
+ non_unique_type = SUMMON_ANGEL;
+
+ for (k = count; k < s_num_4; k++)
{
- for (k = count; k < s_num_4; k++)
- {
- count += summon_specific(m_idx, y, x, rlev, SUMMON_HI_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
- }
+ count += summon_specific(m_idx, y, x, rlev, non_unique_type, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE));
}
+
if (blind && count)
{
#ifdef JP
-msg_print("¿¤¯¤ÎÎ϶¯¤¤¤â¤Î¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬Ê¹¤³¤¨¤ë¡£");
+ msg_format("¿¤¯¤Î%s¤¬´Ö¶á¤Ë¸½¤ì¤¿²»¤¬Ê¹¤³¤¨¤ë¡£", uniques_are_summoned ? "Î϶¯¤¤¤â¤Î" : "¤â¤Î");
#else
- msg_print("You hear many powerful things appear nearby.");
+ msg_format("You hear many %s appear nearby.", uniques_are_summoned ? "powerful things" : "things");
#endif
-
}
break;
}