/* Is the monster "seen"? */
bool seen = m_ptr->ml;
+ bool seen_msg = is_seen(m_ptr);
bool slept = (bool)(m_ptr->csleep > 0);
bool known = ((m_ptr->cdis <= MAX_SIGHT) || p_ptr->inside_battle);
/* Can the player see the source of this effect? */
- bool see_s = ((who <= 0) || is_seen(caster_ptr));
+ bool see_s_msg = ((who <= 0) || is_seen(caster_ptr));
/* Were the effects "irrelevant"? */
bool skipped = FALSE;
if (!(los(m_ptr->fy, m_ptr->fx, py, px)))
{
#ifdef JP
- if (is_seen(m_ptr)) msg_format("%s¤Ï¤¢¤Ê¤¿¤¬¸«¤¨¤Ê¤¤¤Î¤Ç±Æ¶Á¤µ¤ì¤Ê¤¤¡ª", m_name);
+ if (seen_msg) msg_format("%s¤Ï¤¢¤Ê¤¿¤¬¸«¤¨¤Ê¤¤¤Î¤Ç±Æ¶Á¤µ¤ì¤Ê¤¤¡ª", m_name);
#else
- if (is_seen(m_ptr)) msg_format("%^s can't see you, and isn't affected!", m_name);
+ if (seen_msg) msg_format("%^s can't see you, and isn't affected!", m_name);
#endif
skipped = TRUE;
break;
if (m_ptr->maxhp < m_ptr->max_maxhp)
{
#ifdef JP
-msg_format("%^s¤Î¶¯¤µ¤¬Ìá¤Ã¤¿¡£", m_name);
+ if (seen_msg) msg_format("%^s¤Î¶¯¤µ¤¬Ìá¤Ã¤¿¡£", m_name);
#else
- msg_format("%^s recovers %s vitality.", m_name, m_poss);
+ if (seen_msg) msg_format("%^s recovers %s vitality.", m_name, m_poss);
#endif
m_ptr->maxhp = m_ptr->max_maxhp;
}
if (m_ptr->stunned)
{
#ifdef JP
-msg_format("%^s¤ÏÛ¯Û°¾õÂÖ¤«¤éΩ¤Áľ¤Ã¤¿¡£", m_name);
+ if (seen_msg) msg_format("%^s¤ÏÛ¯Û°¾õÂÖ¤«¤éΩ¤Áľ¤Ã¤¿¡£", m_name);
#else
- msg_format("%^s is no longer stunned.", m_name);
+ if (seen_msg) msg_format("%^s is no longer stunned.", m_name);
#endif
m_ptr->stunned = 0;
}
if (m_ptr->confused)
{
#ifdef JP
-msg_format("%^s¤Ïº®Í𤫤éΩ¤Áľ¤Ã¤¿¡£", m_name);
+ if (seen_msg) msg_format("%^s¤Ïº®Í𤫤éΩ¤Áľ¤Ã¤¿¡£", m_name);
#else
- msg_format("%^s is no longer confused.", m_name);
+ if (seen_msg) msg_format("%^s is no longer confused.", m_name);
#endif
m_ptr->confused = 0;
}
if (m_ptr->monfear)
{
#ifdef JP
-msg_format("%^s¤Ïͦµ¤¤ò¼è¤êÌᤷ¤¿¡£", m_name);
+ if (seen_msg) msg_format("%^s¤Ïͦµ¤¤ò¼è¤êÌᤷ¤¿¡£", m_name);
#else
- msg_format("%^s recovers %s courage.", m_name, m_poss);
+ if (seen_msg) msg_format("%^s recovers %s courage.", m_name, m_poss);
#endif
m_ptr->monfear = 0;
}
/* No overflow */
if (m_ptr->hp > m_ptr->maxhp) m_ptr->hp = m_ptr->maxhp;
- chg_virtue(V_VITALITY, 1);
-
- if (r_ptr->flags1 & RF1_UNIQUE)
- chg_virtue(V_INDIVIDUALISM, 1);
-
- if (is_friendly(m_ptr))
- chg_virtue(V_HONOUR, 1);
- else if (!(r_ptr->flags3 & RF3_EVIL))
- {
- if (r_ptr->flags3 & RF3_GOOD)
- chg_virtue(V_COMPASSION, 2);
- else
- chg_virtue(V_COMPASSION, 1);
+ if (!who)
+ {
+ chg_virtue(V_VITALITY, 1);
+
+ if (r_ptr->flags1 & RF1_UNIQUE)
+ chg_virtue(V_INDIVIDUALISM, 1);
+
+ if (is_friendly(m_ptr))
+ chg_virtue(V_HONOUR, 1);
+ else if (!(r_ptr->flags3 & RF3_EVIL))
+ {
+ if (r_ptr->flags3 & RF3_GOOD)
+ chg_virtue(V_COMPASSION, 2);
+ else
+ chg_virtue(V_COMPASSION, 1);
+ }
+
+ if (r_ptr->flags3 & RF3_ANIMAL)
+ chg_virtue(V_NATURE, 1);
}
if (m_ptr->r_idx == MON_LEPER)
{
heal_leper = TRUE;
- chg_virtue(V_COMPASSION, 5);
+ if (!who) chg_virtue(V_COMPASSION, 5);
}
-
- if (r_ptr->flags3 & RF3_ANIMAL)
- chg_virtue(V_NATURE, 1);
/* Redraw (later) if needed */
if (p_ptr->health_who == c_ptr->m_idx) p_ptr->redraw |= (PR_HEALTH);
if (c_ptr->m_idx == p_ptr->riding)
p_ptr->update |= (PU_BONUS);
- if (r_ptr->flags1 & RF1_UNIQUE)
- chg_virtue(V_INDIVIDUALISM, 1);
- if (is_friendly(m_ptr))
- chg_virtue(V_HONOUR, 1);
+ if (!who)
+ {
+ if (r_ptr->flags1 & RF1_UNIQUE)
+ chg_virtue(V_INDIVIDUALISM, 1);
+ if (is_friendly(m_ptr))
+ chg_virtue(V_HONOUR, 1);
+ }
/* No "real" damage */
dam = 0;
if (p_ptr->riding == who) p_ptr->redraw |= (PR_UHEALTH);
/* Special message */
- if (is_seen(caster_ptr))
+ if (see_s_msg)
{
/* Get the monster name */
monster_desc(killer, caster_ptr, 0);
else
{
#ifdef JP
- msg_format("%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", m_name);
+ if (see_s_msg) msg_format("%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£", m_name);
#else
- msg_format("%s is unaffected.", m_name);
+ if (see_s_msg) msg_format("%s is unaffected.", m_name);
#endif
}
dam = 0;
/* Extract method of death */
note = note_dies;
}
-
- /* Mega-Hack -- Handle "polymorph" -- monsters get a saving throw */
- else if (do_poly && (randint1(90) > r_ptr->level))
+ else
{
- if (polymorph_monster(y, x))
+ /* Sound and Impact resisters never stun */
+ if (do_stun &&
+ !(r_ptr->flagsr & (RFR_RES_SOUN | RFR_RES_WALL)) &&
+ !(r_ptr->flags3 & RF3_NO_STUN))
{
/* Obvious */
if (seen) obvious = TRUE;
- /* Monster polymorphs */
+ /* Get stunned */
+ if (m_ptr->stunned)
+ {
#ifdef JP
- note = "¤¬ÊѿȤ·¤¿¡ª";
+ note = "¤Ï¤Ò¤É¤¯¤â¤¦¤í¤¦¤È¤·¤¿¡£";
#else
- note = " changes!";
+ note = " is more dazed.";
#endif
+ tmp = m_ptr->stunned + (do_stun / 2);
+ }
+ else
+ {
+#ifdef JP
+ note = "¤Ï¤â¤¦¤í¤¦¤È¤·¤¿¡£";
+#else
+ note = " is dazed.";
+#endif
- /* Turn off the damage */
- dam = 0;
+ tmp = do_stun;
+ }
- /* Hack -- Get new monster */
- m_ptr = &m_list[c_ptr->m_idx];
+ /* Apply stun */
+ m_ptr->stunned = (tmp < 200) ? tmp : 200;
- /* Hack -- Get new race */
- r_ptr = &r_info[m_ptr->r_idx];
+ /* Get angry */
+ get_angry = TRUE;
}
- else
+
+ /* Confusion and Chaos resisters (and sleepers) never confuse */
+ if (do_conf &&
+ !(r_ptr->flags3 & RF3_NO_CONF) &&
+ !(r_ptr->flagsr & RFR_EFF_RES_CHAO_MASK))
{
- /* No polymorph */
+ /* Obvious */
+ if (seen) obvious = TRUE;
+
+ /* Already partially confused */
+ if (m_ptr->confused)
+ {
#ifdef JP
-note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª";
+ note = "¤Ï¤µ¤é¤Ëº®Í𤷤¿¤è¤¦¤À¡£";
#else
- note = " is unaffected!";
+ note = " looks more confused.";
#endif
- }
- }
-
- /* Handle "teleport" */
- else if (do_dist)
- {
- /* Obvious */
- if (seen) obvious = TRUE;
+ tmp = m_ptr->confused + (do_conf / 2);
+ }
- /* Message */
+ /* Was not confused */
+ else
+ {
#ifdef JP
- note = "¤¬¾Ã¤¨µî¤Ã¤¿¡ª";
+ note = "¤Ïº®Í𤷤¿¤è¤¦¤À¡£";
#else
- note = " disappears!";
+ note = " looks confused.";
#endif
- chg_virtue(V_VALOUR, -1);
+ tmp = do_conf;
+ }
- /* Teleport */
- teleport_away(c_ptr->m_idx, do_dist, (bool)(!who), TRUE);
+ /* Apply confusion */
+ m_ptr->confused = (tmp < 200) ? tmp : 200;
- /* Hack -- get new location */
- y = m_ptr->fy;
- x = m_ptr->fx;
+ /* Get angry */
+ get_angry = TRUE;
+ }
- /* Hack -- get new grid */
- c_ptr = &cave[y][x];
- }
+ if (do_time)
+ {
+ /* Obvious */
+ if (seen) obvious = TRUE;
- /* Sound and Impact resisters never stun */
- else if (do_stun &&
- !(r_ptr->flagsr & (RFR_RES_SOUN | RFR_RES_WALL)) &&
- !(r_ptr->flags3 & RF3_NO_STUN))
- {
- /* Obvious */
- if (seen) obvious = TRUE;
+ if (do_time >= m_ptr->maxhp) do_time = m_ptr->maxhp - 1;
- /* Get stunned */
- if (m_ptr->stunned)
- {
+ if (do_time)
+ {
#ifdef JP
- note = "¤Ï¤Ò¤É¤¯¤â¤¦¤í¤¦¤È¤·¤¿¡£";
+ note = "¤Ï¼å¤¯¤Ê¤Ã¤¿¤è¤¦¤À¡£";
#else
- note = " is more dazed.";
+ note = " seems weakened.";
#endif
-
- tmp = m_ptr->stunned + (do_stun / 2);
+ m_ptr->maxhp -= do_time;
+ if ((m_ptr->hp - dam) > m_ptr->maxhp) dam = m_ptr->hp - m_ptr->maxhp;
+ }
+ get_angry = TRUE;
}
- else
+
+ /* Mega-Hack -- Handle "polymorph" -- monsters get a saving throw */
+ if (do_poly && (randint1(90) > r_ptr->level))
{
+ if (polymorph_monster(y, x))
+ {
+ /* Obvious */
+ if (seen) obvious = TRUE;
+
+ /* Monster polymorphs */
#ifdef JP
- note = "¤Ï¤â¤¦¤í¤¦¤È¤·¤¿¡£";
+ note = "¤¬ÊѿȤ·¤¿¡ª";
#else
- note = " is dazed.";
+ note = " changes!";
#endif
- tmp = do_stun;
- }
-
- /* Apply stun */
- m_ptr->stunned = (tmp < 200) ? tmp : 200;
-
- /* Get angry */
- get_angry = TRUE;
- }
+ /* Turn off the damage */
+ dam = 0;
- /* Confusion and Chaos resisters (and sleepers) never confuse */
- else if (do_conf &&
- !(r_ptr->flags3 & RF3_NO_CONF) &&
- !(r_ptr->flagsr & RFR_EFF_RES_CHAO_MASK))
- {
- /* Obvious */
- if (seen) obvious = TRUE;
+ /* Hack -- Get new monster */
+ m_ptr = &m_list[c_ptr->m_idx];
- /* Already partially confused */
- if (m_ptr->confused)
- {
+ /* Hack -- Get new race */
+ r_ptr = &r_info[m_ptr->r_idx];
+ }
+ else
+ {
+ /* No polymorph */
#ifdef JP
- note = "¤Ï¤µ¤é¤Ëº®Í𤷤¿¤è¤¦¤À¡£";
+ note = "¤Ë¤Ï¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡ª";
#else
- note = " looks more confused.";
+ note = " is unaffected!";
#endif
-
- tmp = m_ptr->confused + (do_conf / 2);
+ }
}
- /* Was not confused */
- else
+ /* Handle "teleport" */
+ if (do_dist)
{
+ /* Obvious */
+ if (seen) obvious = TRUE;
+
+ /* Message */
#ifdef JP
- note = "¤Ïº®Í𤷤¿¤è¤¦¤À¡£";
+ note = "¤¬¾Ã¤¨µî¤Ã¤¿¡ª";
#else
- note = " looks confused.";
+ note = " disappears!";
#endif
- tmp = do_conf;
- }
-
- /* Apply confusion */
- m_ptr->confused = (tmp < 200) ? tmp : 200;
+ if (!who) chg_virtue(V_VALOUR, -1);
- /* Get angry */
- get_angry = TRUE;
- }
-
- else if (do_time)
- {
- /* Obvious */
- if (seen) obvious = TRUE;
+ /* Teleport */
+ teleport_away(c_ptr->m_idx, do_dist, (bool)(!who), TRUE);
- if (do_time >= m_ptr->maxhp) do_time = m_ptr->maxhp - 1;
+ /* Hack -- get new location */
+ y = m_ptr->fy;
+ x = m_ptr->fx;
- if (do_time)
- {
-#ifdef JP
- note = "¤Ï¼å¤¯¤Ê¤Ã¤¿¤è¤¦¤À¡£";
-#else
- note = " seems weakened.";
-#endif
- m_ptr->maxhp -= do_time;
- if ((m_ptr->hp - dam) > m_ptr->maxhp) dam = m_ptr->hp - m_ptr->maxhp;
+ /* Hack -- get new grid */
+ c_ptr = &cave[y][x];
}
- get_angry = TRUE;
- }
+ /* Fear */
+ if (do_fear)
+ {
+ /* Increase fear */
+ tmp = m_ptr->monfear + do_fear;
- /* Fear */
- if (do_fear)
- {
- /* Increase fear */
- tmp = m_ptr->monfear + do_fear;
-
- /* Set fear */
- m_ptr->monfear = (tmp < 200) ? tmp : 200;
+ /* Set fear */
+ m_ptr->monfear = (tmp < 200) ? tmp : 200;
- /* Get angry */
- get_angry = TRUE;
+ /* Get angry */
+ get_angry = TRUE;
+ }
}
-
if (typ == GF_DRAIN_MANA)
{
/* Drain mana does nothing */
if (known && note)
{
monster_desc(m_name, m_ptr, MD_TRUE_NAME);
- if (see_s)
+ if (see_s_msg)
{
msg_format("%^s%s", m_name, note);
}
else
{
/* Give detailed messages if visible or destroyed */
- if (note && is_seen(m_ptr)) msg_format("%^s%s", m_name, note);
+ if (note && seen_msg) msg_format("%^s%s", m_name, note);
/* Hack -- Pain message */
- else if (see_s)
+ else if (see_s_msg)
{
message_pain(c_ptr->m_idx, dam);
}
else if (heal_leper)
{
#ifdef JP
- if (is_seen(m_ptr)) msg_print("ÉÔ·é¤ÊÉ¿ͤÏɵ¤¤¬¼£¤Ã¤¿¡ª");
+ if (seen_msg) msg_print("ÉÔ·é¤ÊÉ¿ͤÏɵ¤¤¬¼£¤Ã¤¿¡ª");
#else
- if (is_seen(m_ptr)) msg_print("The Mangy looking leper is healed!");
+ if (seen_msg) msg_print("The Mangy looking leper is healed!");
#endif
delete_monster_idx(c_ptr->m_idx);
if (do_sleep) anger_monster(m_ptr);
/* Give detailed messages if visible or destroyed */
- if (note && is_seen(m_ptr))
+ if (note && seen_msg)
#ifdef JP
msg_format("%s%s", m_name, note);
#else
anger_monster(m_ptr);
/* Take note */
- if ((fear || do_fear) && is_seen(m_ptr))
+ if ((fear || do_fear) && seen)
{
/* Sound */
sound(SOUND_FLEE);