X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmelee2.c;h=5928770232f2294fd3f0a3e756490b2fa6f7ad6e;hb=d325f1529d9b8662add63886c586d86985ea7990;hp=8a0cb63928b3e59adedc1426f41054d2046bb1d0;hpb=5c5038208e0d25bfe298c11624e4620fb8fc466e;p=hengband%2Fhengband.git diff --git a/src/melee2.c b/src/melee2.c index 8a0cb6392..592877023 100644 --- a/src/melee2.c +++ b/src/melee2.c @@ -1434,7 +1434,7 @@ static bool monst_attack_monst(int m_idx, int t_idx) int ap_cnt; int ac, rlev, pt; char m_name[80], t_name[80]; - char temp[80]; + char temp[MAX_NLEN]; bool blinked; bool explode = FALSE, touched = FALSE, fear = FALSE; int y_saver = t_ptr->fy; @@ -1942,6 +1942,14 @@ act = "%s effect_type = BLOW_EFFECT_TYPE_HEAL; break; + case RBE_INERTIA: + pt = GF_INERTIA; + break; + + case RBE_STUN: + pt = GF_SOUND; + break; + default: pt = 0; break; @@ -2149,20 +2157,38 @@ act = "%s /* Blink away */ if (blinked && m_ptr->r_idx) { - if (see_m) + if (teleport_barrier(m_idx)) { + if (see_m) + { #ifdef JP - msg_print("Å¥ËÀ¤Ï¾Ð¤Ã¤Æƨ¤²¤¿¡ª"); + msg_print("Å¥ËÀ¤Ï¾Ð¤Ã¤Æƨ¤²...¤è¤¦¤È¤·¤¿¤¬¥Ð¥ê¥¢¤ËËɤ¬¤ì¤¿¡£"); #else - msg_print("The thief flees laughing!"); + msg_print("The thief flees laughing...? But magic barrier obstructs it."); #endif + } + else if (known) + { + mon_fight = TRUE; + } } - else if (known) + else { - mon_fight = TRUE; - } + if (see_m) + { +#ifdef JP + msg_print("Å¥ËÀ¤Ï¾Ð¤Ã¤Æƨ¤²¤¿¡ª"); +#else + msg_print("The thief flees laughing!"); +#endif + } + else if (known) + { + mon_fight = TRUE; + } - teleport_away(m_idx, MAX_SIGHT * 2 + 5, 0L); + teleport_away(m_idx, MAX_SIGHT * 2 + 5, 0L); + } } return TRUE; @@ -2540,6 +2566,9 @@ static void process_monster(int m_idx) } } + /* Hex */ + if (multiply_barrier(m_idx)) k = 8; + /* Hack -- multiply slower in crowded areas */ if ((k < 4) && (!k || !randint0(k * MON_MULT_ADJ))) { @@ -3440,7 +3469,7 @@ msg_format("%^s%s", m_name, monmessage); excise_object_idx(this_o_idx); /* Forget mark */ - o_ptr->marked = 0; + o_ptr->marked &= OM_TOUCHED; /* Forget location */ o_ptr->iy = o_ptr->ix = 0; @@ -4550,11 +4579,22 @@ bool process_the_world(int num, int who, bool vs_player) void monster_gain_exp(int m_idx, int s_idx) { - monster_type *m_ptr = &m_list[m_idx]; - monster_race *r_ptr = &r_info[m_ptr->r_idx]; - monster_race *s_ptr = &r_info[s_idx]; + monster_type *m_ptr; + monster_race *r_ptr; + monster_race *s_ptr; int new_exp; + /* Paranoia */ + if (m_idx <= 0 || s_idx <= 0) return; + + m_ptr = &m_list[m_idx]; + + /* Paranoia -- Skip dead monsters */ + if (!m_ptr->r_idx) return; + + r_ptr = &r_info[m_ptr->r_idx]; + s_ptr = &r_info[s_idx]; + if (p_ptr->inside_battle) return; if (!r_ptr->next_exp) return;