/* Create a glyph */
cave[y][x].info |= CAVE_OBJECT;
- cave[y][x].mimic = FEAT_GLYPH;
+ cave[y][x].mimic = f_info[FEAT_GLYPH].mimic;
/* Notice */
note_spot(y, x);
-
+
/* Redraw */
lite_spot(y, x);
cptr note = NULL;
/* Assume a default death */
-#ifdef JP
- cptr note_dies = "¤Ï»à¤ó¤À¡£";
-#else
- cptr note_dies = " dies.";
-#endif
+ cptr note_dies = extract_note_dies(real_r_ptr(m_ptr));
int ty = m_ptr->fy;
int tx = m_ptr->fx;
#endif
- /* Some monsters get "destroyed" */
- if (!monster_living(r_ptr))
- {
- int i;
- bool explode = FALSE;
-
- for (i = 0; i < 4; i++)
- {
- if (r_ptr->blow[i].method == RBM_EXPLODE) explode = TRUE;
- }
-
- /* Special note at death */
- if (explode)
-#ifdef JP
-note_dies = "¤ÏÇúȯ¤·¤ÆÊ´¡¹¤Ë¤Ê¤Ã¤¿¡£";
-#else
- note_dies = " explodes into tiny shreds.";
-#endif
- else
-#ifdef JP
-note_dies = "¤òÅݤ·¤¿¡£";
-#else
- note_dies = " is destroyed.";
-#endif
- }
-
if (p_ptr->riding && (c_ptr->m_idx == p_ptr->riding)) disturb(1, 0);
/* Analyze the damage type */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
break;
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_IM_ACID)
#endif
dam /= 9;
- if (seen) r_ptr->r_flagsr |= (RFR_IM_ACID);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_IM_ACID);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_IM_ELEC)
#endif
dam /= 9;
- if (seen) r_ptr->r_flagsr |= (RFR_IM_ELEC);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_IM_ELEC);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_IM_FIRE)
#endif
dam /= 9;
- if (seen) r_ptr->r_flagsr |= (RFR_IM_FIRE);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_IM_FIRE);
}
else if (r_ptr->flags3 & (RF3_HURT_FIRE))
{
#endif
dam *= 2;
- if (seen) r_ptr->r_flags3 |= (RF3_HURT_FIRE);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_HURT_FIRE);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_IM_COLD)
#endif
dam /= 9;
- if (seen) r_ptr->r_flagsr |= (RFR_IM_COLD);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_IM_COLD);
}
else if (r_ptr->flags3 & (RF3_HURT_COLD))
{
#endif
dam *= 2;
- if (seen) r_ptr->r_flags3 |= (RF3_HURT_COLD);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_HURT_COLD);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_IM_POIS)
#endif
dam /= 9;
- if (seen) r_ptr->r_flagsr |= (RFR_IM_POIS);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_IM_POIS);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_IM_POIS)
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flagsr |= (RFR_IM_POIS);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_IM_POIS);
}
else if (one_in_(3)) do_poly = TRUE;
break;
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flags3 & RF3_GOOD)
note = " is hit hard.";
#endif
- if (seen) r_ptr->r_flags3 |= (RF3_GOOD);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_GOOD);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flags3 & RF3_GOOD)
note = " is immune.";
#endif
- if (seen) r_ptr->r_flags3 |= RF3_GOOD;
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= RF3_GOOD;
}
else if (r_ptr->flags3 & RF3_EVIL)
{
note = " is hit hard.";
#endif
- if (seen) r_ptr->r_flags3 |= RF3_EVIL;
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= RF3_EVIL;
}
else
{
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
break;
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_PLAS)
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_PLAS);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_PLAS);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_NETH)
#endif
dam = 0;
- if (seen) r_ptr->r_flags3 |= (RF3_UNDEAD);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_UNDEAD);
}
else
{
dam *= 3; dam /= randint1(6) + 6;
}
- if (seen) r_ptr->r_flagsr |= (RFR_RES_NETH);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_NETH);
}
else if (r_ptr->flags3 & RF3_EVIL)
{
note = " resists somewhat.";
#endif
- if (seen) r_ptr->r_flags3 |= (RF3_EVIL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_EVIL);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_WATE)
dam *= 3; dam /= randint1(6) + 6;
}
- if (seen) r_ptr->r_flagsr |= (RFR_RES_WATE);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_WATE);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_CHAO)
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_CHAO);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_CHAO);
}
else if ((r_ptr->flags3 & RF3_DEMON) && one_in_(3))
{
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flags3 |= (RF3_DEMON);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_DEMON);
}
else
{
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_SHAR)
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_SHAR);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_SHAR);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_SHAR)
#endif
dam /= 2;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_SHAR);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_SHAR);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_SOUN)
#endif
dam *= 2; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_SOUN);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_SOUN);
}
else do_stun = (10 + randint1(15) + r) / (r + 1);
break;
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flags3 & RF3_NO_CONF)
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flags3 |= (RF3_NO_CONF);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
}
else do_conf = (10 + randint1(15) + r) / (r + 1);
break;
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_DISE)
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_DISE);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_DISE);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_NEXU)
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_NEXU);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_NEXU);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_WALL)
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_WALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_WALL);
}
else do_stun = (randint1(15) + r) / (r + 1);
break;
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_INER)
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_INER);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_INER);
}
else
{
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_TIME)
#endif
dam *= 3; dam /= randint1(6) + 6;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_TIME);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_TIME);
}
else do_time = (dam + 1) / 2;
break;
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_TELE)
{
if (r_ptr->flags1 & (RF1_UNIQUE))
{
- if (seen) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
#else
}
else if (r_ptr->level > randint1(100))
{
- if (seen) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
note = "¤Ë¤ÏÂÑÀ¤¬¤¢¤ë¡ª";
#else
dam *= 3; dam /= randint1(6) + 6;
do_dist = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_GRAV);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_GRAV);
}
else
{
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
break;
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flags3 & RF3_HURT_ROCK)
{
- if (seen) r_ptr->r_flags3 |= (RF3_HURT_ROCK);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_HURT_ROCK);
#ifdef JP
note = "¤ÎÈéÉ椬¤¿¤À¤ì¤¿¡ª";
note_dies = "¤Ï¾øȯ¤·¤¿¡ª";
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flags2 & RF2_EMPTY_MIND)
#else
note = " is immune!";
#endif
- if (seen) r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
}
else if ((r_ptr->flags2 & (RF2_STUPID | RF2_WEIRD_MIND)) ||
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flags2 & RF2_EMPTY_MIND)
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (one_in_(4))
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
break;
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
break;
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Attempt a saving throw */
/* Memorize a flag */
if (r_ptr->flags3 & RF3_NO_CONF)
{
- if (seen) r_ptr->r_flags3 |= (RF3_NO_CONF);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
}
/* Resist */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
do_stun = (randint1(15) + 1) / (r + 1);
#endif
dam /= 9;
- if (seen) r_ptr->r_flagsr |= (RFR_IM_COLD);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_IM_COLD);
}
else if (r_ptr->flags3 & (RF3_HURT_COLD))
{
#endif
dam *= 2;
- if (seen) r_ptr->r_flags3 |= (RF3_HURT_COLD);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_HURT_COLD);
}
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (!monster_living(r_ptr))
{
- if (r_ptr->flags3 & RF3_UNDEAD)
+ if (seen)
{
- if (seen) r_ptr->r_flags3 |= (RF3_UNDEAD);
- }
-
- if (r_ptr->flags3 & (RF3_DEMON))
- {
- if (seen) r_ptr->r_flags3 |= (RF3_DEMON);
+ if (is_original_ap(m_ptr))
+ {
+ if (r_ptr->flags3 & RF3_DEMON) r_ptr->r_flags3 |= (RF3_DEMON);
+ if (r_ptr->flags3 & RF3_UNDEAD) r_ptr->r_flags3 |= (RF3_UNDEAD);
+ if (r_ptr->flags3 & RF3_NONLIVING) r_ptr->r_flags3 |= (RF3_NONLIVING);
+ }
}
#ifdef JP
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
- if (r_ptr->flags3 & (RF3_UNDEAD | RF3_NONLIVING))
+ if (!monster_living(r_ptr))
{
- if (r_ptr->flags3 & RF3_UNDEAD)
+ if (seen)
{
- if (seen) r_ptr->r_flags3 |= (RF3_UNDEAD);
+ if (is_original_ap(m_ptr))
+ {
+ if (r_ptr->flags3 & RF3_DEMON) r_ptr->r_flags3 |= (RF3_DEMON);
+ if (r_ptr->flags3 & RF3_UNDEAD) r_ptr->r_flags3 |= (RF3_UNDEAD);
+ if (r_ptr->flags3 & RF3_NONLIVING) r_ptr->r_flags3 |= (RF3_NONLIVING);
+ }
}
#ifdef JP
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Attempt to polymorph (see below) */
/* Wake up */
m_ptr->csleep = 0;
+ if (r_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
+
if (m_ptr->maxhp < m_ptr->max_maxhp)
{
#ifdef JP
/* Wake up */
m_ptr->csleep = 0;
+ if (r_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
+
if (m_ptr->stunned)
{
#ifdef JP
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Powerful monsters can resist */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Attempt a saving throw */
/* Memorize a flag */
if (r_ptr->flags3 & RF3_NO_SLEEP)
{
- if (seen) r_ptr->r_flags3 |= (RF3_NO_SLEEP);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_SLEEP);
}
/* No obvious effect */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Attempt a saving throw */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Attempt a saving throw */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Memorize a flag */
if (r_ptr->flags3 & RF3_NO_CONF)
{
- if (seen) r_ptr->r_flags3 |= (RF3_NO_CONF);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
}
/* Resist */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Memorize a flag */
if (r_ptr->flags3 & (RF3_NO_CONF))
{
- if (seen) r_ptr->r_flags3 |= (RF3_NO_CONF);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
}
/* Resist */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Attempt a saving throw */
if ((r_ptr->flags1 & (RF1_QUESTOR)) ||
(m_ptr->mflag2 & MFLAG2_NOPET) ||
- (r_ptr->flags3 & (RF3_DEMON | RF3_UNDEAD | RF3_NONLIVING)) ||
+ !monster_living(r_ptr) ||
((r_ptr->level+10) > randint1(dam)))
{
/* Resist */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Get confused later */
/* Memorize a flag */
if (r_ptr->flags3 & (RF3_NO_CONF))
{
- if (seen) r_ptr->r_flags3 |= (RF3_NO_CONF);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
}
/* Resist */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
do_stun = damroll((caster_lev / 10) + 3 , (dam)) + 1;
/* Hurt by light */
if (r_ptr->flags3 & (RF3_HURT_LITE))
{
- /* Obvious effect */
- if (seen) obvious = TRUE;
+ if (seen)
+ {
+ /* Obvious effect */
+ obvious = TRUE;
- /* Memorize the effects */
- if (seen) r_ptr->r_flags3 |= (RF3_HURT_LITE);
+ /* Memorize the effects */
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_HURT_LITE);
+ }
/* Special effect */
#ifdef JP
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_LITE)
{
#ifdef JP
-note = "¤Ë¤ÏÂÑÀ¤¬¤¢¤ë¡ª";
+ note = "¤Ë¤ÏÂÑÀ¤¬¤¢¤ë¡ª";
#else
note = " resists.";
#endif
dam *= 2; dam /= (randint1(6)+6);
- if (seen) r_ptr->r_flagsr |= (RFR_RES_LITE);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_LITE);
}
else if (r_ptr->flags3 & (RF3_HURT_LITE))
{
- if (seen) r_ptr->r_flags3 |= (RF3_HURT_LITE);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_HURT_LITE);
#ifdef JP
-note = "¤Ï¸÷¤Ë¿È¤ò¤¹¤¯¤á¤¿¡ª";
-note_dies = "¤Ï¸÷¤ò¼õ¤±¤Æ¤·¤Ü¤ó¤Ç¤·¤Þ¤Ã¤¿¡ª";
+ note = "¤Ï¸÷¤Ë¿È¤ò¤¹¤¯¤á¤¿¡ª";
+ note_dies = "¤Ï¸÷¤ò¼õ¤±¤Æ¤·¤Ü¤ó¤Ç¤·¤Þ¤Ã¤¿¡ª";
#else
note = " cringes from the light!";
note_dies = " shrivels away in the light!";
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flagsr & RFR_RES_DARK)
#endif
dam *= 2; dam /= (randint1(6)+6);
- if (seen) r_ptr->r_flagsr |= (RFR_RES_DARK);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_DARK);
}
break;
}
/* Hurt by rock remover */
if (r_ptr->flags3 & (RF3_HURT_ROCK))
{
- /* Notice effect */
- if (seen) obvious = TRUE;
+ if (seen)
+ {
+ /* Notice effect */
+ obvious = TRUE;
- /* Memorize the effects */
- if (seen) r_ptr->r_flags3 |= (RF3_HURT_ROCK);
+ /* Memorize the effects */
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_HURT_ROCK);
+ }
/* Cute little message */
#ifdef JP
{
if ((r_ptr->flags1 & (RF1_UNIQUE)) || (r_ptr->flagsr & RFR_RES_ALL))
{
- if (seen) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª";
#else
}
else if (r_ptr->level > randint1(100))
{
- if (seen) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
note = "¤Ë¤ÏÂÑÀ¤¬¤¢¤ë¡ª";
#else
if (!resists_tele)
{
- if (seen) obvious = TRUE;
- if (seen) r_ptr->r_flags3 |= (RF3_UNDEAD);
+ if (seen)
+ {
+ obvious = TRUE;
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_UNDEAD);
+ }
do_dist = dam;
}
}
{
if ((r_ptr->flags1 & (RF1_UNIQUE)) || (r_ptr->flagsr & RFR_RES_ALL))
{
- if (seen) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª";
#else
}
else if (r_ptr->level > randint1(100))
{
- if (seen) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
note = "¤Ë¤ÏÂÑÀ¤¬¤¢¤ë¡ª";
#else
if (!resists_tele)
{
- if (seen) obvious = TRUE;
- if (seen) r_ptr->r_flags3 |= (RF3_EVIL);
+ if (seen)
+ {
+ obvious = TRUE;
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_EVIL);
+ }
do_dist = dam;
}
}
{
if ((r_ptr->flags1 & (RF1_UNIQUE)) || (r_ptr->flagsr & RFR_RES_ALL))
{
- if (seen) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª";
#else
}
else if (r_ptr->level > randint1(100))
{
- if (seen) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
note = "¤Ë¤ÏÂÑÀ¤¬¤¢¤ë¡ª";
#else
/* Only affect undead */
if (r_ptr->flags3 & (RF3_UNDEAD))
{
- /* Learn about type */
- if (seen) r_ptr->r_flags3 |= (RF3_UNDEAD);
+ if (seen)
+ {
+ /* Learn about type */
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_UNDEAD);
- /* Obvious */
- if (seen) obvious = TRUE;
+ /* Obvious */
+ obvious = TRUE;
+ }
/* Apply some fear */
do_fear = damroll(3, (dam / 2)) + 1;
/* Only affect evil */
if (r_ptr->flags3 & (RF3_EVIL))
{
- /* Learn about type */
- if (seen) r_ptr->r_flags3 |= (RF3_EVIL);
+ if (seen)
+ {
+ /* Learn about type */
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_EVIL);
- /* Obvious */
- if (seen) obvious = TRUE;
+ /* Obvious */
+ obvious = TRUE;
+ }
/* Apply some fear */
do_fear = damroll(3, (dam / 2)) + 1;
/* Only affect undead */
if (r_ptr->flags3 & (RF3_UNDEAD))
{
- /* Learn about type */
- if (seen) r_ptr->r_flags3 |= (RF3_UNDEAD);
+ if (seen)
+ {
+ /* Learn about type */
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_UNDEAD);
- /* Obvious */
- if (seen) obvious = TRUE;
+ /* Obvious */
+ obvious = TRUE;
+ }
/* Message */
#ifdef JP
/* Only affect evil */
if (r_ptr->flags3 & (RF3_EVIL))
{
- /* Learn about type */
- if (seen) r_ptr->r_flags3 |= (RF3_EVIL);
+ if (seen)
+ {
+ /* Learn about type */
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_EVIL);
- /* Obvious */
- if (seen) obvious = TRUE;
+ /* Obvious */
+ obvious = TRUE;
+ }
/* Message */
#ifdef JP
/* Only affect good */
if (r_ptr->flags3 & (RF3_GOOD))
{
- /* Learn about type */
- if (seen) r_ptr->r_flags3 |= (RF3_GOOD);
+ if (seen)
+ {
+ /* Learn about type */
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_GOOD);
- /* Obvious */
- if (seen) obvious = TRUE;
+ /* Obvious */
+ obvious = TRUE;
+ }
/* Message */
#ifdef JP
/* Only affect demons */
if (r_ptr->flags3 & (RF3_DEMON))
{
- /* Learn about type */
- if (seen) r_ptr->r_flags3 |= (RF3_DEMON);
+ if (seen)
+ {
+ /* Learn about type */
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_DEMON);
- /* Obvious */
- if (seen) obvious = TRUE;
+ /* Obvious */
+ obvious = TRUE;
+ }
/* Message */
#ifdef JP
note = " is immune.";
#endif
skipped = TRUE;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
note = " is immune.";
#endif
skipped = TRUE;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Memorize a flag */
if (r_ptr->flags3 & (RF3_NO_CONF))
{
- r_ptr->r_flags3 |= (RF3_NO_CONF);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
}
#ifdef JP
note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
note = " is immune.";
#endif
skipped = TRUE;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Memorize a flag */
if (r_ptr->flags3 & (RF3_NO_CONF))
{
- r_ptr->r_flags3 |= (RF3_NO_CONF);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_CONF);
}
#ifdef JP
note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£";
note = " is immune.";
#endif
skipped = TRUE;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
note = " is immune.";
#endif
skipped = TRUE;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
note = " is immune.";
#endif
skipped = TRUE;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
note = " is immune.";
#endif
skipped = TRUE;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
note = " is immune.";
#endif
skipped = TRUE;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
}
if (is_pet(m_ptr)) nokori_hp = m_ptr->maxhp*4L;
- else if ((p_ptr->pclass == CLASS_BEASTMASTER) && (r_ptr->flags3 & (RF3_DEMON | RF3_UNDEAD | RF3_NONLIVING)))
+ else if ((p_ptr->pclass == CLASS_BEASTMASTER) && monster_living(r_ptr))
nokori_hp = m_ptr->maxhp * 3 / 10;
else
nokori_hp = m_ptr->maxhp * 3 / 20;
-
+
if (m_ptr->hp >= nokori_hp)
{
#ifdef JP
break;
}
+ /* Attack (Use "dam" as attack type) */
case GF_ATTACK:
{
- if (seen) obvious = TRUE;
- skipped = TRUE;
- if (dam == HISSATSU_NYUSIN)
- {
- int i, yy, xx;
- int ny = y, nx = x;
- bool success = FALSE;
- for (i = 0; i < 8; i++)
- {
- yy = y + ddy[i];
- xx = x + ddx[i];
- if (cave_empty_bold(yy, xx) || player_bold(yy, xx))
- {
- success = TRUE;
- if (distance(py, px, ny, nx) > distance(py, px, yy, xx))
- {
- ny = yy;
- nx = xx;
- }
- }
- }
- if (success)
- {
- if (!player_bold(ny, nx))
- {
- teleport_player_to(ny, nx, FALSE);
-#ifdef JP
- msg_print("ÁÇÁ᤯Áê¼ê¤Î²û¤ËÆþ¤ê¹þ¤ó¤À¡ª");
-#else
- msg_format("You quickly jump in and attack %s!", m_name);
-#endif
- }
- }
- else
- {
-#ifdef JP
- msg_print("¼ºÇÔ¡ª");
-#else
- msg_print("Failed!");
-#endif
- dam = 0;
- break;
- }
- }
- if (c_ptr->m_idx)
- return (py_attack(y, x, dam));
- else
-#ifdef JP
- msg_print("¹¶·â¤Ï¶õ¤òÀڤä¿¡£");
-#else
- msg_print("You attack the empty air.");
-#endif
- dam = 0;
- break;
+ /* Return this monster's death */
+ return py_attack(y, x, dam);
}
/* Sleep (Use "dam" as "power") */
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
if (r_ptr->flags2 & RF2_EMPTY_MIND)
#endif
dam = 0;
skipped = TRUE;
- if (seen) r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
break;
}
if (m_ptr->csleep)
/* Memorize a flag */
if (r_ptr->flags3 & RF3_NO_SLEEP)
{
- if (seen) r_ptr->r_flags3 |= (RF3_NO_SLEEP);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_SLEEP);
}
/* No obvious effect */
note = " is immune.";
#endif
skipped = TRUE;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
/* Hurt by light */
if (r_ptr->flags3 & (RF3_HURT_LITE))
{
- /* Obvious effect */
- if (seen) obvious = TRUE;
+ if (seen)
+ {
+ /* Obvious effect */
+ obvious = TRUE;
- /* Memorize the effects */
- if (seen) r_ptr->r_flags3 |= (RF3_HURT_LITE);
+ /* Memorize the effects */
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_HURT_LITE);
+ }
/* Special effect */
#ifdef JP
note = " is immune.";
#endif
dam = 0;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
break;
m_ptr->fast = MIN(200, m_ptr->fast + 100);
/* Learn about type */
- if (seen) r_ptr->r_flags3 |= (RF3_GOOD);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_GOOD);
success = TRUE;
}
}
}
else if (seen)
{
- r_ptr->r_flags3 |= (RF3_NO_FEAR);
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NO_FEAR);
}
}
note = " is immune.";
#endif
skipped = TRUE;
- if (seen) r_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (seen && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL);
break;
}
tmp = dam;
dam = mon_damage_mod(m_ptr, dam, (bool)(typ == GF_PSY_SPEAR));
#ifdef JP
- if ((tmp > 0) && (dam == 0)) note = "¤Ï¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤¤¤Ê¤¤";
+ if ((tmp > 0) && (dam == 0)) note = "¤Ï¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤¤¤Ê¤¤¡£";
#else
if ((tmp > 0) && (dam == 0)) note = " is unharmed.";
#endif
/* Wake the monster up */
m_ptr->csleep = 0;
+ if (r_ptr->flags7 & RF7_HAS_LD_MASK) p_ptr->update |= (PU_MON_LITE);
+
/* Hurt the monster */
m_ptr->hp -= dam;
Term_xtra(TERM_XTRA_DELAY, msec);
}
}
- if ((typ == GF_ATTACK) && (dam == HISSATSU_NYUSIN) && ((i+1) == path_n))
- {
- if (cave_empty_bold(y, x)) teleport_player_to(ny, nx, FALSE);
- }
-
}
/* Save the "blast epicenter" */
msg_print("The attack bounces!");
#endif
- ref_ptr->r_flags2 |= RF2_REFLECTING;
+ if (is_original_ap(m_ptr)) ref_ptr->r_flags2 |= RF2_REFLECTING;
}
/* Reflected bolts randomly target either one */