if ((have_flag(flgs, TR_SLAY_ANIMAL)) &&
(r_ptr->flags3 & RF3_ANIMAL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_ANIMAL;
}
if ((have_flag(flgs, TR_KILL_ANIMAL)) &&
(r_ptr->flags3 & RF3_ANIMAL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_ANIMAL;
}
if ((have_flag(flgs, TR_SLAY_EVIL)) &&
(r_ptr->flags3 & RF3_EVIL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_EVIL;
}
if ((have_flag(flgs, TR_KILL_EVIL)) &&
(r_ptr->flags3 & RF3_EVIL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_EVIL;
}
if ((have_flag(flgs, TR_SLAY_HUMAN)) &&
(r_ptr->flags2 & RF2_HUMAN))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags2 |= RF2_HUMAN;
}
if ((have_flag(flgs, TR_KILL_HUMAN)) &&
(r_ptr->flags2 & RF2_HUMAN))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags2 |= RF2_HUMAN;
}
if ((have_flag(flgs, TR_SLAY_UNDEAD)) &&
(r_ptr->flags3 & RF3_UNDEAD))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_UNDEAD;
}
if ((have_flag(flgs, TR_KILL_UNDEAD)) &&
(r_ptr->flags3 & RF3_UNDEAD))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_UNDEAD;
}
if ((have_flag(flgs, TR_SLAY_DEMON)) &&
(r_ptr->flags3 & RF3_DEMON))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_DEMON;
}
if ((have_flag(flgs, TR_KILL_DEMON)) &&
(r_ptr->flags3 & RF3_DEMON))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_DEMON;
}
if ((have_flag(flgs, TR_SLAY_ORC)) &&
(r_ptr->flags3 & RF3_ORC))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_ORC;
}
if ((have_flag(flgs, TR_KILL_ORC)) &&
(r_ptr->flags3 & RF3_ORC))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_ORC;
}
if ((have_flag(flgs, TR_SLAY_TROLL)) &&
(r_ptr->flags3 & RF3_TROLL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_TROLL;
}
if ((have_flag(flgs, TR_KILL_TROLL)) &&
(r_ptr->flags3 & RF3_TROLL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_TROLL;
}
if ((have_flag(flgs, TR_SLAY_GIANT)) &&
(r_ptr->flags3 & RF3_GIANT))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_GIANT;
}
if ((have_flag(flgs, TR_KILL_GIANT)) &&
(r_ptr->flags3 & RF3_GIANT))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_GIANT;
}
if ((have_flag(flgs, TR_SLAY_DRAGON)) &&
(r_ptr->flags3 & RF3_DRAGON))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_DRAGON;
}
if ((have_flag(flgs, TR_KILL_DRAGON)) &&
(r_ptr->flags3 & RF3_DRAGON))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_DRAGON;
}
/* Notice immunity */
if (r_ptr->flagsr & RFR_EFF_IM_ACID_MASK)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_ACID_MASK);
}
/* Notice immunity */
if (r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK);
}
/* Notice immunity */
if (r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK);
}
if (r_ptr->flags3 & RF3_HURT_FIRE)
{
if (mult < 70) mult = 70;
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_HURT_FIRE;
}
if (r_ptr->flags3 & RF3_HURT_FIRE)
{
if (mult < 50) mult = 50;
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_HURT_FIRE;
}
/* Notice immunity */
if (r_ptr->flagsr & RFR_EFF_IM_COLD_MASK)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_COLD_MASK);
}
if (r_ptr->flags3 & RF3_HURT_COLD)
{
if (mult < 70) mult = 70;
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_HURT_COLD;
}
if (r_ptr->flags3 & RF3_HURT_COLD)
{
if (mult < 50) mult = 50;
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_HURT_COLD;
}
/* Notice immunity */
if (r_ptr->flagsr & RFR_EFF_IM_POIS_MASK)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_POIS_MASK);
}
{
if (r_ptr->flags3 & RF3_UNDEAD)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_UNDEAD;
}
}
if ((mode == HISSATSU_HAGAN) && (r_ptr->flags3 & RF3_HURT_ROCK))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_HURT_ROCK;
}
if (p_ptr->resist_fire) aura_damage = (aura_damage + 2) / 3;
take_hit(DAMAGE_NOESCAPE, aura_damage, aura_dam, -1);
- if (m_ptr->ml) r_ptr->r_flags2 |= RF2_AURA_FIRE;
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flags2 |= RF2_AURA_FIRE;
handle_stuff();
}
}
if (p_ptr->resist_cold) aura_damage = (aura_damage + 2) / 3;
take_hit(DAMAGE_NOESCAPE, aura_damage, aura_dam, -1);
- if (m_ptr->ml) r_ptr->r_flags3 |= RF3_AURA_COLD;
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flags3 |= RF3_AURA_COLD;
handle_stuff();
}
}
#endif
take_hit(DAMAGE_NOESCAPE, aura_damage, aura_dam, -1);
- if (m_ptr->ml) r_ptr->r_flags2 |= RF2_AURA_ELEC;
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flags2 |= RF2_AURA_ELEC;
handle_stuff();
}
}
/* Confuse the monster */
if (r_ptr->flags3 & RF3_NO_CONF)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_NO_CONF;
}
{
if (r_ptr->flags1 & RF1_UNIQUE)
{
- if (m_ptr->ml) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", m_name);
#else
}
else if (r_ptr->level > randint1(100))
{
- if (m_ptr->ml) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
msg_format("%^s¤ÏÄñ¹³ÎϤò»ý¤Ã¤Æ¤¤¤ë¡ª", m_name);
#else
if ((have_flag(flgs, TR_SLAY_ANIMAL)) &&
(r_ptr->flags3 & RF3_ANIMAL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_ANIMAL;
}
if ((have_flag(flgs, TR_KILL_ANIMAL)) &&
(r_ptr->flags3 & RF3_ANIMAL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_ANIMAL;
}
if ((have_flag(flgs, TR_SLAY_EVIL)) &&
(r_ptr->flags3 & RF3_EVIL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_EVIL;
}
if ((have_flag(flgs, TR_KILL_EVIL)) &&
(r_ptr->flags3 & RF3_EVIL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_EVIL;
}
if ((have_flag(flgs, TR_SLAY_HUMAN)) &&
(r_ptr->flags2 & RF2_HUMAN))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags2 |= RF2_HUMAN;
}
if ((have_flag(flgs, TR_KILL_HUMAN)) &&
(r_ptr->flags2 & RF2_HUMAN))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags2 |= RF2_HUMAN;
}
if ((have_flag(flgs, TR_SLAY_UNDEAD)) &&
(r_ptr->flags3 & RF3_UNDEAD))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_UNDEAD;
}
if ((have_flag(flgs, TR_KILL_UNDEAD)) &&
(r_ptr->flags3 & RF3_UNDEAD))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_UNDEAD;
}
if ((have_flag(flgs, TR_SLAY_DEMON)) &&
(r_ptr->flags3 & RF3_DEMON))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_DEMON;
}
if ((have_flag(flgs, TR_KILL_DEMON)) &&
(r_ptr->flags3 & RF3_DEMON))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_DEMON;
}
if ((have_flag(flgs, TR_SLAY_ORC)) &&
(r_ptr->flags3 & RF3_ORC))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_ORC;
}
if ((have_flag(flgs, TR_KILL_ORC)) &&
(r_ptr->flags3 & RF3_ORC))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_ORC;
}
if ((have_flag(flgs, TR_SLAY_TROLL)) &&
(r_ptr->flags3 & RF3_TROLL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_TROLL;
}
if ((have_flag(flgs, TR_KILL_TROLL)) &&
(r_ptr->flags3 & RF3_TROLL))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_TROLL;
}
if ((have_flag(flgs, TR_SLAY_GIANT)) &&
(r_ptr->flags3 & RF3_GIANT))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_GIANT;
}
if ((have_flag(flgs, TR_KILL_GIANT)) &&
(r_ptr->flags3 & RF3_GIANT))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_GIANT;
}
if ((have_flag(flgs, TR_SLAY_DRAGON)) &&
(r_ptr->flags3 & RF3_DRAGON))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_DRAGON;
}
if ((have_flag(flgs, TR_KILL_DRAGON)) &&
(r_ptr->flags3 & RF3_DRAGON))
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_DRAGON;
}
/* Notice immunity */
if (r_ptr->flagsr & RFR_EFF_IM_ACID_MASK)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_ACID_MASK);
}
/* Notice immunity */
if (r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK);
}
/* Notice immunity */
if (r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK);
}
if (r_ptr->flags3 & RF3_HURT_FIRE)
{
if (mult < 25) mult = 25;
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_HURT_FIRE;
}
/* Notice immunity */
if (r_ptr->flagsr & RFR_EFF_IM_COLD_MASK)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_COLD_MASK);
}
if (r_ptr->flags3 & RF3_HURT_COLD)
{
if (mult < 25) mult = 25;
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_HURT_COLD;
}
/* Notice immunity */
if (r_ptr->flagsr & RFR_EFF_IM_POIS_MASK)
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_POIS_MASK);
}
#define is_hostile(A) \
(bool)((is_friendly(A) || is_pet(A)) ? FALSE : TRUE)
+/* Hack -- Determine monster race appearance index is same as race index */
+#define is_original_ap(A) \
+ (bool)(((A)->ap_r_idx == (A)->r_idx) ? TRUE : FALSE)
+
/*** Macro Definitions ***/
((randint0(100) + p_ptr->lev) > 50))
{
/* Remember the Evil-ness */
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
r_ptr->r_flags3 |= RF3_EVIL;
}
}
else
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK);
}
}
}
else
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK);
}
}
}
else
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_COLD_MASK);
}
}
}
else
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_RES_SHAR_MASK);
}
blinked = FALSE;
alive = FALSE;
}
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
r_ptr->r_flags3 |= RF3_EVIL;
}
else
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
r_ptr->r_flagsr |= RFR_RES_ALL;
}
}
}
else
{
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
r_ptr->r_flagsr |= RFR_RES_ALL;
}
}
msg_format("%^s is suddenly very hot!", m_name);
#endif
- if (see_t) tr_ptr->r_flags2 |= RF2_AURA_FIRE;
+ if (see_t && is_original_ap(t_ptr)) tr_ptr->r_flags2 |= RF2_AURA_FIRE;
}
project(t_idx, 0, m_ptr->fy, m_ptr->fx,
damroll (1 + ((tr_ptr->level) / 26),
}
else
{
- if (see_m) r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK);
+ if (see_m && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK);
}
}
msg_format("%^s is suddenly very cold!", m_name);
#endif
- if (see_t) tr_ptr->r_flags3 |= RF3_AURA_COLD;
+ if (see_t && is_original_ap(t_ptr)) tr_ptr->r_flags3 |= RF3_AURA_COLD;
}
project(t_idx, 0, m_ptr->fy, m_ptr->fx,
damroll (1 + ((tr_ptr->level) / 26),
}
else
{
- if (see_m) r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_COLD_MASK);
+ if (see_m && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_COLD_MASK);
}
}
msg_format("%^s gets zapped!", m_name);
#endif
- if (see_t) tr_ptr->r_flags2 |= RF2_AURA_ELEC;
+ if (see_t && is_original_ap(t_ptr)) tr_ptr->r_flags2 |= RF2_AURA_ELEC;
}
project(t_idx, 0, m_ptr->fy, m_ptr->fx,
damroll (1 + ((tr_ptr->level) / 26),
}
else
{
- if (see_m) r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK);
+ if (see_m && is_original_ap(m_ptr)) r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK);
}
}
}
if (multiply_monster(m_idx, FALSE, (is_pet(m_ptr) ? PM_FORCE_PET : 0)))
{
/* Take note if visible */
- if (m_ptr->ml && m_list[hack_m_idx_ii].ml)
+ if (m_ptr->ml && m_list[hack_m_idx_ii].ml && is_original_ap(m_ptr))
{
r_ptr->r_flags2 |= (RF2_MULTIPLY);
}
}
}
- if (count && m_ptr->ml) r_ptr->r_flags6 |= (RF6_SPECIAL);
+ if (count && m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flags6 |= (RF6_SPECIAL);
}
}
}
}
/* 75% random movement */
- else if ((r_ptr->flags1 & RF1_RAND_50) &&
- (r_ptr->flags1 & RF1_RAND_25) &&
+ else if (((r_ptr->flags1 & (RF1_RAND_50 | RF1_RAND_25)) == (RF1_RAND_50 | RF1_RAND_25)) &&
(randint0(100) < 75))
{
/* Memorize flags */
- if (m_ptr->ml) r_ptr->r_flags1 |= (RF1_RAND_50);
- if (m_ptr->ml) r_ptr->r_flags1 |= (RF1_RAND_25);
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flags1 |= (RF1_RAND_50 | RF1_RAND_25);
/* Try four "random" directions */
mm[0] = mm[1] = mm[2] = mm[3] = 5;
(randint0(100) < 50))
{
/* Memorize flags */
- if (m_ptr->ml) r_ptr->r_flags1 |= (RF1_RAND_50);
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flags1 |= (RF1_RAND_50);
/* Try four "random" directions */
mm[0] = mm[1] = mm[2] = mm[3] = 5;
(randint0(100) < 25))
{
/* Memorize flags */
- if (m_ptr->ml) r_ptr->r_flags1 |= RF1_RAND_25;
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flags1 |= RF1_RAND_25;
/* Try four "random" directions */
mm[0] = mm[1] = mm[2] = mm[3] = 5;
if (do_move && player_bold(ny, nx) && (r_ptr->flags1 & RF1_NEVER_BLOW))
{
/* Hack -- memorize lack of attacks */
- if (m_ptr->ml) r_ptr->r_flags1 |= (RF1_NEVER_BLOW);
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flags1 |= (RF1_NEVER_BLOW);
/* Do not move */
do_move = FALSE;
{
do_move = FALSE;
- if (r_ptr->flags2 & RF2_KILL_BODY) r_ptr->r_flags2 |= (RF2_KILL_BODY);
+ if (r_ptr->flags2 & RF2_KILL_BODY)
+ {
+ if (is_original_ap(m_ptr)) r_ptr->r_flags2 |= (RF2_KILL_BODY);
+ }
/* attack */
if ((m2_ptr->r_idx) && (m2_ptr->hp >= 0))
if (do_move && (r_ptr->flags1 & RF1_NEVER_MOVE))
{
/* Hack -- memorize lack of attacks */
- if (m_ptr->ml) r_ptr->r_flags1 |= (RF1_NEVER_MOVE);
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flags1 |= (RF1_NEVER_MOVE);
/* Do not move */
do_move = FALSE;
}
/* Learn things from observable monster */
- if (m_ptr->ml)
+ if (m_ptr->ml && is_original_ap(m_ptr))
{
/* Monster opened a door */
if (did_open_door) r_ptr->r_flags2 |= (RF2_OPEN_DOOR);
monster_race *r_ptr = &r_info[m_ptr->r_idx];
+ /* If the monster doesn't have original appearance, don't note */
+ if (!is_original_ap(m_ptr)) return;
+
/* Note the number of things dropped */
if (num_item > r_ptr->r_drop_item) r_ptr->r_drop_item = num_item;
if (num_gold > r_ptr->r_drop_gold) r_ptr->r_drop_gold = num_gold;
if (!necro)
{
char m_name[80];
- monster_race *r_ptr = &r_info[m_ptr->r_idx];
+ monster_race *r_ptr = &r_info[m_ptr->ap_r_idx];
power = r_ptr->level / 2;
/* Detectable */
flag = TRUE;
- /* Hack -- Memorize mental flags */
- if (r_ptr->flags2 & (RF2_SMART)) r_ptr->r_flags2 |= (RF2_SMART);
- if (r_ptr->flags2 & (RF2_STUPID)) r_ptr->r_flags2 |= (RF2_STUPID);
+ if (is_original_ap(m_ptr))
+ {
+ /* Hack -- Memorize mental flags */
+ if (r_ptr->flags2 & (RF2_SMART)) r_ptr->r_flags2 |= (RF2_SMART);
+ if (r_ptr->flags2 & (RF2_STUPID)) r_ptr->r_flags2 |= (RF2_STUPID);
+ }
}
/* Basic telepathy */
if (r_ptr->flags2 & (RF2_EMPTY_MIND))
{
/* Memorize flags */
- r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
+ if (is_original_ap(m_ptr)) r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
}
/* Weird mind, occasional telepathy */
/* Detectable */
flag = TRUE;
- /* Memorize flags */
- r_ptr->r_flags2 |= (RF2_WEIRD_MIND);
+ if (is_original_ap(m_ptr))
+ {
+ /* Memorize flags */
+ r_ptr->r_flags2 |= (RF2_WEIRD_MIND);
- /* Hack -- Memorize mental flags */
- if (r_ptr->flags2 & (RF2_SMART)) r_ptr->r_flags2 |= (RF2_SMART);
- if (r_ptr->flags2 & (RF2_STUPID)) r_ptr->r_flags2 |= (RF2_STUPID);
+ /* Hack -- Memorize mental flags */
+ if (r_ptr->flags2 & (RF2_SMART)) r_ptr->r_flags2 |= (RF2_SMART);
+ if (r_ptr->flags2 & (RF2_STUPID)) r_ptr->r_flags2 |= (RF2_STUPID);
+ }
}
}
/* Detectable */
flag = TRUE;
- /* Hack -- Memorize mental flags */
- if (r_ptr->flags2 & (RF2_SMART)) r_ptr->r_flags2 |= (RF2_SMART);
- if (r_ptr->flags2 & (RF2_STUPID)) r_ptr->r_flags2 |= (RF2_STUPID);
+ if (is_original_ap(m_ptr))
+ {
+ /* Hack -- Memorize mental flags */
+ if (r_ptr->flags2 & (RF2_SMART)) r_ptr->r_flags2 |= (RF2_SMART);
+ if (r_ptr->flags2 & (RF2_STUPID)) r_ptr->r_flags2 |= (RF2_STUPID);
+ }
}
}
if ((p_ptr->esp_animal) && (r_ptr->flags3 & (RF3_ANIMAL)))
{
flag = TRUE;
- r_ptr->r_flags3 |= (RF3_ANIMAL);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_ANIMAL);
}
/* Magical sensing */
if ((p_ptr->esp_undead) && (r_ptr->flags3 & (RF3_UNDEAD)))
{
flag = TRUE;
- r_ptr->r_flags3 |= (RF3_UNDEAD);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_UNDEAD);
}
/* Magical sensing */
if ((p_ptr->esp_demon) && (r_ptr->flags3 & (RF3_DEMON)))
{
flag = TRUE;
- r_ptr->r_flags3 |= (RF3_DEMON);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_DEMON);
}
/* Magical sensing */
if ((p_ptr->esp_orc) && (r_ptr->flags3 & (RF3_ORC)))
{
flag = TRUE;
- r_ptr->r_flags3 |= (RF3_ORC);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_ORC);
}
/* Magical sensing */
if ((p_ptr->esp_troll) && (r_ptr->flags3 & (RF3_TROLL)))
{
flag = TRUE;
- r_ptr->r_flags3 |= (RF3_TROLL);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_TROLL);
}
/* Magical sensing */
if ((p_ptr->esp_giant) && (r_ptr->flags3 & (RF3_GIANT)))
{
flag = TRUE;
- r_ptr->r_flags3 |= (RF3_GIANT);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_GIANT);
}
/* Magical sensing */
if ((p_ptr->esp_dragon) && (r_ptr->flags3 & (RF3_DRAGON)))
{
flag = TRUE;
- r_ptr->r_flags3 |= (RF3_DRAGON);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_DRAGON);
}
/* Magical sensing */
if ((p_ptr->esp_human) && (r_ptr->flags2 & (RF2_HUMAN)))
{
flag = TRUE;
- r_ptr->r_flags2 |= (RF2_HUMAN);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags2 |= (RF2_HUMAN);
}
/* Magical sensing */
if ((p_ptr->esp_evil) && (r_ptr->flags3 & (RF3_EVIL)))
{
flag = TRUE;
- r_ptr->r_flags3 |= (RF3_EVIL);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_EVIL);
}
/* Magical sensing */
if ((p_ptr->esp_good) && (r_ptr->flags3 & (RF3_GOOD)))
{
flag = TRUE;
- r_ptr->r_flags3 |= (RF3_GOOD);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_GOOD);
}
/* Magical sensing */
- if ((p_ptr->esp_nonliving) &&
+ if ((p_ptr->esp_nonliving) &&
((r_ptr->flags3 & (RF3_DEMON | RF3_UNDEAD | RF3_NONLIVING)) == RF3_NONLIVING))
{
flag = TRUE;
- r_ptr->r_flags3 |= (RF3_NONLIVING);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags3 |= (RF3_NONLIVING);
}
/* Magical sensing */
if ((p_ptr->esp_unique) && (r_ptr->flags1 & (RF1_UNIQUE)))
{
flag = TRUE;
- r_ptr->r_flags1 |= (RF1_UNIQUE);
-
+ if (is_original_ap(m_ptr)) r_ptr->r_flags1 |= (RF1_UNIQUE);
}
}
/* Visible */
if (flag)
{
- /* Memorize flags */
- if (do_invisible) r_ptr->r_flags2 |= (RF2_INVISIBLE);
- if (do_cold_blood) r_ptr->r_flags2 |= (RF2_COLD_BLOOD);
+ if (is_original_ap(m_ptr))
+ {
+ /* Memorize flags */
+ if (do_invisible) r_ptr->r_flags2 |= (RF2_INVISIBLE);
+ if (do_cold_blood) r_ptr->r_flags2 |= (RF2_COLD_BLOOD);
+ }
}
}
}
m_list[hack_m_idx_ii].mflag2 |= MFLAG2_NOPET;
}
+ /* Hack -- Shadower spawns Shadower */
+ if (m_ptr->mflag2 & MFLAG2_KAGE) m_list[hack_m_idx_ii].mflag2 |= MFLAG2_KAGE;
+
+ /* Hack -- Appearance transfer */
+ if (!is_original_ap(m_ptr)) m_list[hack_m_idx_ii].ap_r_idx = m_ptr->ap_r_idx;
+
return TRUE;
}
}
/* Remember what the monster did to us */
- if (seen)
+ if (seen && is_original_ap(m_ptr))
{
/* Inate spell */
if (thrown_spell < 32 * 4)
/* Always take note of monsters that kill you */
if (p_ptr->is_dead && (r_ptr->r_deaths < MAX_SHORT) && !p_ptr->inside_arena)
{
- r_ptr->r_deaths++;
+ r_ptr->r_deaths++; /* Ignore appearance difference */
}
/* A spell was cast */
/* No obvious effect */
if (see_both)
{
- /* Memorize a flag */
- if (tr_ptr->flagsr & RFR_RES_ALL) tr_ptr->r_flagsr |= (RFR_RES_ALL);
- if (tr_ptr->flags3 & RF3_NO_CONF) tr_ptr->r_flags3 |= (RF3_NO_CONF);
+ if (is_original_ap(t_ptr))
+ {
+ /* Memorize a flag */
+ if (tr_ptr->flagsr & RFR_RES_ALL) tr_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (tr_ptr->flags3 & RF3_NO_CONF) tr_ptr->r_flags3 |= (RF3_NO_CONF);
+ }
#ifdef JP
msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
/* No obvious effect */
if (see_both)
{
- /* Memorize a flag */
- if (tr_ptr->flagsr & RFR_RES_ALL) tr_ptr->r_flagsr |= (RFR_RES_ALL);
- if (tr_ptr->flags3 & RF3_NO_CONF) tr_ptr->r_flags3 |= (RF3_NO_CONF);
+ if (is_original_ap(t_ptr))
+ {
+ /* Memorize a flag */
+ if (tr_ptr->flagsr & RFR_RES_ALL) tr_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (tr_ptr->flags3 & RF3_NO_CONF) tr_ptr->r_flags3 |= (RF3_NO_CONF);
+ }
#ifdef JP
msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
/* Memorize a flag */
if (tr_ptr->flagsr & RFR_RES_ALL)
{
- tr_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= (RFR_RES_ALL);
}
#ifdef JP
if (see_both) msg_format("%^s¤ÏÂÑÀ¤ò»ý¤Ã¤Æ¤¤¤ë¡ª", t_name);
/* Memorize a flag */
if (tr_ptr->flagsr & RFR_RES_ALL)
{
- tr_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= (RFR_RES_ALL);
}
#ifdef JP
if (see_both) msg_format("%^s¤ÏÂÑÀ¤ò»ý¤Ã¤Æ¤¤¤ë¡ª", t_name);
/* Memorize a flag */
if (tr_ptr->flagsr & RFR_RES_ALL)
{
- tr_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= (RFR_RES_ALL);
}
#ifdef JP
if (see_both) msg_format("%^s¤ÏÂÑÀ¤ò»ý¤Ã¤Æ¤¤¤ë¡ª", t_name);
/* Memorize a flag */
if (tr_ptr->flagsr & RFR_RES_ALL)
{
- tr_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= (RFR_RES_ALL);
}
#ifdef JP
if (see_both) msg_format("%^s¤ÏÂÑÀ¤ò»ý¤Ã¤Æ¤¤¤ë¡ª", t_name);
/* Memorize a flag */
if (tr_ptr->flagsr & RFR_RES_ALL)
{
- tr_ptr->r_flagsr |= (RFR_RES_ALL);
+ if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= (RFR_RES_ALL);
}
#ifdef JP
if (see_both) msg_format("¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", t_name);
{
if (see_t)
{
- tr_ptr->r_flagsr |= RFR_RES_TELE;
+ if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
msg_format("%^s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", t_name);
#else
{
if (see_t)
{
- tr_ptr->r_flagsr |= RFR_RES_TELE;
+ if (is_original_ap(t_ptr)) tr_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
msg_format("%^s¤ÏÂÑÀ¤ò»ý¤Ã¤Æ¤¤¤ë¡ª", t_name);
#else
}
/* Remember what the monster did, if we saw it */
- if (see_m)
+ if (see_m && is_original_ap(m_ptr))
{
/* Inate spell */
if (thrown_spell < 32*4)
/* Always take note of monsters that kill you */
if (p_ptr->is_dead && (r_ptr->r_deaths < MAX_SHORT) && !p_ptr->inside_arena)
{
- r_ptr->r_deaths++;
+ r_ptr->r_deaths++; /* Ignore appearance difference */
}
/* A spell was cast */
{
if ((r_ptr->flags1 & (RF1_UNIQUE)) || (r_ptr->flagsr & RFR_RES_ALL))
{
- r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
-msg_format("%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", m_name);
+ msg_format("%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª", m_name);
#else
msg_format("%s is unaffected!", m_name);
#endif
}
else if (r_ptr->level > randint1(100))
{
- r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
#ifdef JP
-msg_format("%s¤Ë¤ÏÂÑÀ¤¬¤¢¤ë¡ª", m_name);
+ msg_format("%s¤Ë¤ÏÂÑÀ¤¬¤¢¤ë¡ª", m_name);
#else
msg_format("%s resists!", m_name);
#endif
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 (seen)
{
- 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);
+ 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 (!monster_living(r_ptr))
{
if (seen)
{
- 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);
+ 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) */
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;
}
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;
}
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;
}
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 */
/* Detect evil monsters */
if (r_ptr->flags3 & RF3_EVIL)
{
- /* Take note that they are evil */
- r_ptr->r_flags3 |= (RF3_EVIL);
-
- /* Update monster recall window */
- if (p_ptr->monster_race_idx == m_ptr->r_idx)
+ if (is_original_ap(m_ptr))
{
- /* Window stuff */
- p_ptr->window |= (PW_MONSTER);
+ /* Take note that they are evil */
+ r_ptr->r_flags3 |= (RF3_EVIL);
+
+ /* Update monster recall window */
+ if (p_ptr->monster_race_idx == m_ptr->r_idx)
+ {
+ /* Window stuff */
+ p_ptr->window |= (PW_MONSTER);
+ }
}
/* Repair visibility later */
/* Detect evil monsters */
if (r_ptr->flags3 & (match_flag))
{
- /* Take note that they are something */
- r_ptr->r_flags3 |= (match_flag);
-
- /* Update monster recall window */
- if (p_ptr->monster_race_idx == m_ptr->r_idx)
+ if (is_original_ap(m_ptr))
{
- /* Window stuff */
- p_ptr->window |= (PW_MONSTER);
+ /* Take note that they are something */
+ r_ptr->r_flags3 |= (match_flag);
+
+ /* Update monster recall window */
+ if (p_ptr->monster_race_idx == m_ptr->r_idx)
+ {
+ /* Window stuff */
+ p_ptr->window |= (PW_MONSTER);
+ }
}
/* Repair visibility later */
msg_print("Your teleportation is blocked!");
#endif
- if (m_ptr->ml) r_ptr->r_flagsr |= RFR_RES_TELE;
+ if (m_ptr->ml && is_original_ap(m_ptr)) r_ptr->r_flagsr |= RFR_RES_TELE;
m_ptr->csleep = 0;
/* Failure */