if ((dam < 20) && (randint0(100) >= dam)) return (0);
/* Perfect damage */
- if (dam == total && dam >= 40) max++;
+ if ((dam >= total) && (dam >= 40)) max++;
/* Super-charge */
if (dam >= 20)
object_type *o_ptr;
- object_kind *k_ptr;
-
char o_name[MAX_NLEN];
char m_name[80];
bool blinked;
bool touched = FALSE, fear = FALSE, alive = TRUE;
bool explode = FALSE;
- bool resist_drain = FALSE;
bool do_silly_attack = (one_in_(2) && p_ptr->image);
- int syouryaku = 0;
int get_damage = 0;
+#ifdef JP
+ int abbreviate = 0;
+#endif
/* Not allowed to attack */
if (r_ptr->flags1 & (RF1_NEVER_BLOW)) return (FALSE);
monster_desc(m_name, m_ptr, 0);
/* Get the "died from" information (i.e. "a kobold") */
- monster_desc(ddesc, m_ptr, 0x288);
+ monster_desc(ddesc, m_ptr, MD_IGNORE_HALLU | MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
if (p_ptr->special_defense & KATA_IAI)
{
((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;
}
/* Message */
#ifdef JP
- if (syouryaku)
+ if (abbreviate)
msg_format("·âÂष¤¿¡£");
else
msg_format("%^s¤Ï·âÂव¤ì¤¿¡£", m_name);
- syouryaku = 1;/*£²²óÌܰʹߤϾÊά */
+ abbreviate = 1;/*£²²óÌܰʹߤϾÊά */
#else
msg_format("%^s is repelled.", m_name);
#endif
case RBM_CHARGE:
{
#ifdef JP
- syouryaku = -1;
+ abbreviate = -1;
act = "¤ÏÀÁµá½ñ¤ò¤è¤³¤·¤¿¡£";
#else
act = "charges you.";
case RBM_CRAWL:
{
#ifdef JP
- syouryaku = -1;
+ abbreviate = -1;
act = "¤¬ÂΤξå¤òÇ礤²ó¤Ã¤¿¡£";
#else
act = "crawls on you.";
case RBM_EXPLODE:
{
- syouryaku = -1;
#ifdef JP
+ abbreviate = -1;
act = "¤ÏÇúȯ¤·¤¿¡£";
#else
act = "explodes.";
case RBM_XXX4:
{
- syouryaku = -1;
#ifdef JP
+ abbreviate = -1;
act = "¤¬ XXX4 ¤òȯ¼Í¤·¤¿¡£";
#else
act = "projects XXX4's at you.";
case RBM_INSULT:
{
- syouryaku = -1;
+#ifdef JP
+ abbreviate = -1;
+#endif
act = desc_insult[randint0(m_ptr->r_idx == MON_DEBBY ? 10 : 8)];
sound(SOUND_MOAN);
break;
case RBM_MOAN:
{
- syouryaku = -1;
+#ifdef JP
+ abbreviate = -1;
+#endif
act = desc_moan[randint0(4)];
sound(SOUND_MOAN);
break;
case RBM_SHOW:
{
- syouryaku = -1;
+#ifdef JP
+ abbreviate = -1;
+#endif
if (m_ptr->r_idx == MON_JAIAN)
{
#ifdef JP
{
if (do_silly_attack)
{
- syouryaku = -1;
+#ifdef JP
+ abbreviate = -1;
+#endif
act = silly_attacks[randint0(MAX_SILLY_ATTACK)];
}
#ifdef JP
- if(syouryaku==0)
+ if (abbreviate == 0)
msg_format("%^s¤Ë%s", m_name, act);
- else if(syouryaku==1)
+ else if (abbreviate == 1)
msg_format("%s", act);
- else /*if(syouryaku==-1)*/
+ else /* if (abbreviate == -1) */
msg_format("%^s%s", m_name, act);
- syouryaku = 1;/*£²²óÌܰʹߤϾÊά */
+ abbreviate = 1;/*£²²óÌܰʹߤϾÊά */
#else
- msg_format("%^s %s", m_name, act);
+ msg_format("%^s %s%s", m_name, act, do_silly_attack ? " you." : "");
#endif
}
if (explode) break;
/* Take "poison" effect */
- if (!(p_ptr->resist_pois || p_ptr->oppose_pois))
+ if (!(p_ptr->resist_pois || IS_OPPOSE_POIS()))
{
if (set_poisoned(p_ptr->poisoned + randint1(rlev) + 5))
{
if (artifact_p(o_ptr) || o_ptr->art_name) continue;
/* Get a description */
- object_desc(o_name, o_ptr, FALSE, 3);
+ object_desc(o_name, o_ptr, OD_OMIT_PREFIX);
/* Message */
#ifdef JP
*/
if ((o_ptr->tval == TV_ROD) || (o_ptr->tval == TV_WAND))
{
- k_ptr = &k_info[o_ptr->k_idx];
j_ptr->pval = o_ptr->pval / o_ptr->number;
o_ptr->pval -= j_ptr->pval;
}
if ((o_ptr->tval != TV_FOOD) && !((o_ptr->tval == TV_CORPSE) && (o_ptr->sval))) continue;
/* Get a description */
- object_desc(o_name, o_ptr, FALSE, 0);
+ object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
/* Message */
#ifdef JP
if (p_ptr->is_dead) break;
/* Take "poison" effect */
- if (!(p_ptr->resist_pois || p_ptr->oppose_pois))
+ if (!(p_ptr->resist_pois || IS_OPPOSE_POIS()))
{
if (set_poisoned(p_ptr->poisoned + randint1(rlev) + 5))
{
case RBE_EXP_VAMP:
{
s32b d = damroll(60, 6) + (p_ptr->exp / 100) * MON_DRAIN_LIFE;
+ bool resist_drain;
/* Obvious */
obvious = TRUE;
if (p_ptr->riding == m_idx) p_ptr->redraw |= (PR_UHEALTH);
/* Special message */
- if ((m_ptr->ml) && (did_heal))
+ if (m_ptr->ml && did_heal)
{
#ifdef JP
msg_format("%s¤ÏÂÎÎϤò²óÉü¤·¤¿¤è¤¦¤À¡£", m_name);
}
case RBE_DR_MANA:
{
- bool did_heal = FALSE;
-
/* Obvious */
obvious = TRUE;
p_ptr->csp_frac = 0;
}
- if (m_ptr->hp < m_ptr->maxhp) did_heal = TRUE;
-
p_ptr->redraw |= (PR_MANA);
break;
{
if (p_ptr->sh_fire && alive && !p_ptr->is_dead)
{
- if (!(r_ptr->flags3 & RF3_IM_FIRE))
+ if (!(r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK))
{
int dam = damroll(2, 6);
}
else
{
- if (m_ptr->ml)
- r_ptr->r_flags3 |= RF3_IM_FIRE;
+ if (m_ptr->ml && is_original_ap(m_ptr))
+ r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_FIRE_MASK);
}
}
if (p_ptr->sh_elec && alive && !p_ptr->is_dead)
{
- if (!(r_ptr->flags3 & RF3_IM_ELEC))
+ if (!(r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK))
{
int dam = damroll(2, 6);
}
else
{
- if (m_ptr->ml)
- r_ptr->r_flags3 |= RF3_IM_ELEC;
+ if (m_ptr->ml && is_original_ap(m_ptr))
+ r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_ELEC_MASK);
}
}
if (p_ptr->sh_cold && alive && !p_ptr->is_dead)
{
- if (!(r_ptr->flags3 & RF3_IM_COLD))
+ if (!(r_ptr->flagsr & RFR_EFF_IM_COLD_MASK))
{
int dam = damroll(2, 6);
}
else
{
- if (m_ptr->ml)
- r_ptr->r_flags3 |= RF3_IM_COLD;
+ if (m_ptr->ml && is_original_ap(m_ptr))
+ r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_IM_COLD_MASK);
}
}
/* by henkma */
if (p_ptr->dustrobe && alive && !p_ptr->is_dead)
{
- if (!(r_ptr->flags4 & RF4_BR_SHAR))
+ if (!(r_ptr->flagsr & RFR_EFF_RES_SHAR_MASK))
{
int dam = damroll(2, 6);
if (mon_take_hit(m_idx, dam, &fear,
" had torn to pieces."))
#endif
-
{
blinked = FALSE;
alive = FALSE;
}
}
+ else
+ {
+ if (m_ptr->ml && is_original_ap(m_ptr))
+ r_ptr->r_flagsr |= (r_ptr->flagsr & RFR_EFF_RES_SHAR_MASK);
+ }
+
if (is_mirror_grid(&cave[py][px])) {
teleport_player(10);
}
{
if (r_ptr->flags3 & RF3_EVIL)
{
- int dam = damroll(2, 6);
+ if (!(r_ptr->flagsr & RFR_RES_ALL))
+ {
+ int dam = damroll(2, 6);
- /* Modify the damage */
- dam = mon_damage_mod(m_ptr, dam, FALSE);
+ /* Modify the damage */
+ dam = mon_damage_mod(m_ptr, dam, FALSE);
#ifdef JP
- msg_format("%^s¤ÏÀ»¤Ê¤ë¥ª¡¼¥é¤Ç½ý¤Ä¤¤¤¿¡ª", m_name);
- if (mon_take_hit(m_idx, dam, &fear,
- "¤ÏÅݤ줿¡£"))
+ msg_format("%^s¤ÏÀ»¤Ê¤ë¥ª¡¼¥é¤Ç½ý¤Ä¤¤¤¿¡ª", m_name);
+ if (mon_take_hit(m_idx, dam, &fear,
+ "¤ÏÅݤ줿¡£"))
#else
- msg_format("%^s is injured by holy power!", m_name);
+ msg_format("%^s is injured by holy power!", m_name);
- if (mon_take_hit(m_idx, dam, &fear,
- " is destroyed."))
+ if (mon_take_hit(m_idx, dam, &fear,
+ " is destroyed."))
#endif
-
+ {
+ blinked = FALSE;
+ alive = FALSE;
+ }
+ if (m_ptr->ml && is_original_ap(m_ptr))
+ r_ptr->r_flags3 |= RF3_EVIL;
+ }
+ else
{
- blinked = FALSE;
- alive = FALSE;
+ if (m_ptr->ml && is_original_ap(m_ptr))
+ r_ptr->r_flagsr |= RFR_RES_ALL;
}
- if (m_ptr->ml)
- r_ptr->r_flags3 |= RF3_EVIL;
}
}
if (p_ptr->tim_sh_touki && alive && !p_ptr->is_dead)
{
- int dam = damroll(2, 6);
+ if (!(r_ptr->flagsr & RFR_RES_ALL))
+ {
+ int dam = damroll(2, 6);
- /* Modify the damage */
- dam = mon_damage_mod(m_ptr, dam, FALSE);
+ /* Modify the damage */
+ dam = mon_damage_mod(m_ptr, dam, FALSE);
#ifdef JP
- msg_format("%^s¤¬±Ô¤¤Æ®µ¤¤Î¥ª¡¼¥é¤Ç½ý¤Ä¤¤¤¿¡ª", m_name);
- if (mon_take_hit(m_idx, dam, &fear,
- "¤ÏÅݤ줿¡£"))
+ msg_format("%^s¤¬±Ô¤¤Æ®µ¤¤Î¥ª¡¼¥é¤Ç½ý¤Ä¤¤¤¿¡ª", m_name);
+ if (mon_take_hit(m_idx, dam, &fear,
+ "¤ÏÅݤ줿¡£"))
#else
- msg_format("%^s is injured by the Force", m_name);
+ msg_format("%^s is injured by the Force", m_name);
- if (mon_take_hit(m_idx, dam, &fear,
- " is destroyed."))
+ if (mon_take_hit(m_idx, dam, &fear,
+ " is destroyed."))
#endif
+ {
+ blinked = FALSE;
+ alive = FALSE;
+ }
+ }
+ else
{
- blinked = FALSE;
- alive = FALSE;
+ if (m_ptr->ml && is_original_ap(m_ptr))
+ r_ptr->r_flagsr |= RFR_RES_ALL;
}
}
}
/* Message */
#ifdef JP
- if (syouryaku)
+ if (abbreviate)
msg_format("%s¤«¤ï¤·¤¿¡£", (p_ptr->special_attack & ATTACK_SUIKEN) ? "´ñ̯¤ÊÆ°¤¤Ç" : "");
else
msg_format("%s%^s¤Î¹¶·â¤ò¤«¤ï¤·¤¿¡£", (p_ptr->special_attack & ATTACK_SUIKEN) ? "´ñ̯¤ÊÆ°¤¤Ç" : "", m_name);
- syouryaku = 1;/*£²²óÌܰʹߤϾÊά */
+ abbreviate = 1;/*£²²óÌܰʹߤϾÊά */
#else
msg_format("%^s misses you.", m_name);
#endif
msg_format("¹¶·â¤¬%s¼«¿È¤ò½ý¤Ä¤±¤¿¡ª", m_name);
#else
char m_name_self[80];
-
+
/* hisself */
- monster_desc(m_name_self, m_ptr, 0x23);
+ monster_desc(m_name_self, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
msg_format("The attack of %s has wounded %s!", m_name, m_name_self);
#endif
#endif
py_attack(m_ptr->fy, m_ptr->fx, HISSATSU_COUNTER);
fear = FALSE;
+
+ /* Redraw mana */
+ p_ptr->redraw |= (PR_MANA);
}
/* Blink away */