if (!explode)
{
project(m_idx, 0, t_ptr->fy, t_ptr->fx,
- (pt == GF_OLD_SLEEP ? r_ptr->level : damage), pt, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER, -1);
+ (pt == GF_OLD_SLEEP ? r_ptr->level : damage), pt, PROJECT_KILL | PROJECT_STOP | PROJECT_AIMED, -1);
}
if (heal_effect)
project(t_idx, 0, m_ptr->fy, m_ptr->fx,
damroll (1 + ((tr_ptr->level) / 26),
1 + ((tr_ptr->level) / 17)),
- GF_FIRE, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER, -1);
+ GF_FIRE, PROJECT_KILL | PROJECT_STOP | PROJECT_AIMED, -1);
}
else
{
project(t_idx, 0, m_ptr->fy, m_ptr->fx,
damroll (1 + ((tr_ptr->level) / 26),
1 + ((tr_ptr->level) / 17)),
- GF_COLD, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER, -1);
+ GF_COLD, PROJECT_KILL | PROJECT_STOP | PROJECT_AIMED, -1);
}
else
{
project(t_idx, 0, m_ptr->fy, m_ptr->fx,
damroll (1 + ((tr_ptr->level) / 26),
1 + ((tr_ptr->level) / 17)),
- GF_ELEC, PROJECT_KILL | PROJECT_STOP | PROJECT_MONSTER, -1);
+ GF_ELEC, PROJECT_KILL | PROJECT_STOP | PROJECT_AIMED, -1);
}
else
{
*/
static void monst_breath_monst(int m_idx, int y, int x, int typ, int dam_hp, int rad, bool breath, int monspell, bool learnable)
{
- int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_MONSTER;
+ int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
monster_type *m_ptr = &m_list[m_idx];
monster_race *r_ptr = &r_info[m_ptr->r_idx];
*/
static void monst_bolt_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell, bool learnable)
{
- int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_MONSTER | PROJECT_REFLECTABLE;
+ int flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
(void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
}
static void monst_beam_monst(int m_idx, int y, int x, int typ, int dam_hp, int monspell, bool learnable)
{
- int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU | PROJECT_MONSTER;
+ int flg = PROJECT_BEAM | PROJECT_KILL | PROJECT_THRU;
(void)project(m_idx, 0, y, x, dam_hp, typ, flg, (learnable ? monspell : -1));
}
if (see_m)
{
#ifdef JP
- msg_format("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À", m_name, t_name);
+ msg_format("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", m_name, t_name);
#else
msg_format("%^s gazes intently at %s.", m_name, t_name);
#endif
if (see_m)
{
#ifdef JP
- msg_format("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À", m_name, t_name);
+ msg_format("%^s¤Ï%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", m_name, t_name);
#else
msg_format("%^s gazes intently at %s.", m_name, t_name);
#endif
}
}
- (void)project(m_idx, 3, y, x, 0, GF_DARK_WEAK, PROJECT_GRID | PROJECT_KILL | PROJECT_MONSTER, MS_DARKNESS);
+ (void)project(m_idx, 3, y, x, 0, GF_DARK_WEAK, PROJECT_GRID | PROJECT_KILL, MS_DARKNESS);
unlite_room(y, x);
if ((r_ptr->flags4 & ~(RF4_NOMAGIC_MASK)) || (r_ptr->flags5 & ~(RF5_NOMAGIC_MASK)) || (r_ptr->flags6 & ~(RF6_NOMAGIC_MASK)))
{
- /* Message */
+ if (!who)
+ {
+ /* Message */
#ifdef JP
-msg_format("%s¤«¤éÀº¿À¥¨¥Í¥ë¥®¡¼¤òµÛ¤¤¤È¤Ã¤¿¡£",m_name);
+ msg_format("%s¤«¤éÀº¿À¥¨¥Í¥ë¥®¡¼¤òµÛ¤¤¤È¤Ã¤¿¡£", m_name);
#else
- msg_format("You draw psychic energy from %s.", m_name);
+ msg_format("You draw psychic energy from %s.", m_name);
#endif
- (void)hp_player(dam);
+ (void)hp_player(dam);
+ }
}
else
{
#ifdef JP
-msg_format("%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£",m_name);
+ msg_format("%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", m_name);
#else
msg_format("%s is unaffected.", m_name);
#endif
if (seen) obvious = TRUE;
/* Message */
#ifdef JP
-msg_format("%s¤ò¤¸¤Ã¤Èâˤó¤À¡£",m_name);
+ if (!who) msg_format("%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", m_name);
#else
- msg_format("You gaze intently at %s.", m_name);
+ if (!who) msg_format("You gaze intently at %s.", m_name);
#endif
if (r_ptr->flagsr & RFR_RES_ALL)
if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
}
#ifdef JP
-note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
+ note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
#else
note = "is unaffected!";
#endif
else
{
#ifdef JP
-msg_format("%s¤ÏÀº¿À¹¶·â¤ò¿©¤é¤Ã¤¿¡£",m_name);
-note_dies = "¤ÎÀº¿À¤ÏÊø²õ¤·¡¢ÆùÂΤÏÈ´¤±³Ì¤È¤Ê¤Ã¤¿¡£";
+ msg_format("%s¤ÏÀº¿À¹¶·â¤ò¿©¤é¤Ã¤¿¡£", m_name);
+ note_dies = "¤ÎÀº¿À¤ÏÊø²õ¤·¡¢ÆùÂΤÏÈ´¤±³Ì¤È¤Ê¤Ã¤¿¡£";
#else
msg_format("%^s is blasted by psionic energy.", m_name);
note_dies = " collapses, a mindless husk.";
if (seen) obvious = TRUE;
/* Message */
#ifdef JP
-msg_format("%s¤ò¤¸¤Ã¤Èâˤó¤À¡£",m_name);
+ if (!who) msg_format("%s¤ò¤¸¤Ã¤Èâˤó¤À¡£", m_name);
#else
- msg_format("You gaze intently at %s.", m_name);
+ if (!who) msg_format("You gaze intently at %s.", m_name);
#endif
if (r_ptr->flagsr & RFR_RES_ALL)
if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
}
#ifdef JP
-note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
+ note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
#else
note = "is unaffected!";
#endif
else
{
#ifdef JP
-msg_format("%s¤ÏÀº¿À¹¶·â¤ò¿©¤é¤Ã¤¿¡£",m_name);
-note_dies = "¤ÎÀº¿À¤ÏÊø²õ¤·¡¢ÆùÂΤÏÈ´¤±³Ì¤È¤Ê¤Ã¤¿¡£";
+ msg_format("%s¤ÏÀº¿À¹¶·â¤ò¿©¤é¤Ã¤¿¡£", m_name);
+ note_dies = "¤ÎÀº¿À¤ÏÊø²õ¤·¡¢ÆùÂΤÏÈ´¤±³Ì¤È¤Ê¤Ã¤¿¡£";
#else
msg_format("%^s is blasted by psionic energy.", m_name);
note_dies = " collapses, a mindless husk.";
if (seen) obvious = TRUE;
/* Message */
#ifdef JP
-msg_format("%s¤ò»Øº¹¤·¤Æ¼ö¤¤¤ò¤«¤±¤¿¡£",m_name);
+ if (!who) msg_format("%s¤ò»Øº¹¤·¤Æ¼ö¤¤¤ò¤«¤±¤¿¡£", m_name);
#else
- msg_format("You point at %s and curses.", m_name);
+ if (!who) msg_format("You point at %s and curses.", m_name);
#endif
if (r_ptr->flagsr & RFR_RES_ALL)
/* Attempt a saving throw */
if (randint0(100 + caster_lev) < (r_ptr->level + 35))
{
-
#ifdef JP
-note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
+ note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
#else
note = "is unaffected!";
#endif
if (seen) obvious = TRUE;
/* Message */
#ifdef JP
-msg_format("%s¤ò»Øº¹¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤¤¤ò¤«¤±¤¿¡£",m_name);
+ if (!who) msg_format("%s¤ò»Øº¹¤·¤Æ¶²¤í¤·¤²¤Ë¼ö¤¤¤ò¤«¤±¤¿¡£", m_name);
#else
- msg_format("You point at %s and curses horribly.", m_name);
+ if (!who) msg_format("You point at %s and curses horribly.", m_name);
#endif
if (r_ptr->flagsr & RFR_RES_ALL)
/* Attempt a saving throw */
if (randint0(100 + caster_lev) < (r_ptr->level + 35))
{
-
#ifdef JP
-note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
+ note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
#else
note = "is unaffected!";
#endif
if (seen) obvious = TRUE;
/* Message */
#ifdef JP
-msg_format("%s¤ò»Øº¹¤·¡¢¶²¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª",m_name);
+ if (!who) msg_format("%s¤ò»Øº¹¤·¡¢¶²¤í¤·¤²¤Ë¼öʸ¤ò¾§¤¨¤¿¡ª", m_name);
#else
- msg_format("You point at %s, incanting terribly!", m_name);
+ if (!who) msg_format("You point at %s, incanting terribly!", m_name);
#endif
if (r_ptr->flagsr & RFR_RES_ALL)
/* Attempt a saving throw */
if (randint0(100 + caster_lev) < (r_ptr->level + 35))
{
-
#ifdef JP
-note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
+ note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
#else
note = "is unaffected!";
#endif
if (seen) obvious = TRUE;
/* Message */
#ifdef JP
-msg_format("%s¤ÎÈ빦¤òÆͤ¤¤Æ¡¢¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£",m_name);
+ if (!who) msg_format("%s¤ÎÈ빦¤òÆͤ¤¤Æ¡¢¡Ö¤ªÁ°¤Ï´û¤Ë»à¤ó¤Ç¤¤¤ë¡×¤È¶«¤ó¤À¡£", m_name);
#else
- msg_format("You point at %s, screaming th word, 'DIE!'.", m_name);
+ if (!who) msg_format("You point at %s, screaming the word, 'DIE!'.", m_name);
#endif
if (r_ptr->flagsr & RFR_RES_ALL)
}
/* Attempt a saving throw */
- if (randint0(100 + caster_lev) < (r_ptr->level + 35))
+ if ((randint0(100 + caster_lev) < (r_ptr->level + 35)) && ((who <= 0) || (m_list[who].r_idx != MON_KENSHIROU)))
{
-
#ifdef JP
-note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
+ note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
#else
note = "is unaffected!";
#endif
case GF_PHOTO:
{
#ifdef JP
- msg_format("%s¤ò¼Ì¿¿¤Ë»£¤Ã¤¿¡£",m_name);
+ if (!who) msg_format("%s¤ò¼Ì¿¿¤Ë»£¤Ã¤¿¡£", m_name);
#else
- msg_format("You take a photograph of %s.",m_name);
+ if (!who) msg_format("You take a photograph of %s.", m_name);
#endif
/* Hurt by light */
if (r_ptr->flags3 & (RF3_HURT_LITE))
/* Special effect */
#ifdef JP
-note = "¤Ï¸÷¤Ë¿È¤ò¤¹¤¯¤á¤¿¡ª";
-note_dies = "¤Ï¸÷¤ò¼õ¤±¤Æ¤·¤Ü¤ó¤Ç¤·¤Þ¤Ã¤¿¡ª";
+ note = "¤Ï¸÷¤Ë¿È¤ò¤¹¤¯¤á¤¿¡ª";
+ note_dies = "¤Ï¸÷¤ò¼õ¤±¤Æ¤·¤Ü¤ó¤Ç¤·¤Þ¤Ã¤¿¡ª";
#else
note = " cringes from the light!";
note_dies = " shrivels away in the light!";
}
/* Only do visuals if requested */
- if (!blind && !(flg & (PROJECT_HIDE)) && !(flg & PROJECT_FAST))
+ if (!blind && !(flg & (PROJECT_HIDE | PROJECT_FAST)))
{
/* Only do visuals if the player can "see" the bolt */
if (panel_contains(y, x) && player_has_los_bold(y, x))
}
/* Reflected bolts randomly target either one */
- flg &= ~(PROJECT_MONSTER | PROJECT_PLAYER);
- if (one_in_(2)) flg |= PROJECT_MONSTER;
- else flg |= PROJECT_PLAYER;
+ if (one_in_(2)) flg |= PROJECT_PLAYER;
+ else flg &= ~(PROJECT_PLAYER);
/* The bolt is reflected */
project(cave[y][x].m_idx, 0, t_y, t_x, dam, typ, flg, monspell);
/* Aimed on the player */
if (flg & PROJECT_PLAYER)
{
- if (flg & (PROJECT_BEAM | PROJECT_REFLECTABLE))
+ if (flg & (PROJECT_BEAM | PROJECT_REFLECTABLE | PROJECT_AIMED))
{
/*
* A beam or bolt is well aimed
/*
* This grid is the original target.
+ * Or aimed on your horse.
*/
- else if ((y == y2) || (x == x2))
+ else if (((y == y2) && (x == x2)) || (flg & PROJECT_AIMED))
{
/* Hit the mount with full damage */
}
else
{
/* Hit the player later */
- flg &= ~(PROJECT_MONSTER);
flg |= PROJECT_PLAYER;
-
+
/* Don't affect the mount */
continue;
}
*
* But already choosen to hit the
* mount at this point.
+ *
+ * Or aimed on your horse.
*/
- else if (flg & (PROJECT_BEAM | PROJECT_REFLECTABLE))
+ else if (flg & (PROJECT_BEAM | PROJECT_REFLECTABLE | PROJECT_AIMED))
{
/*
* A beam or bolt is well aimed