OSDN Git Service
(root)
/
hengband
/
hengband.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Sometimes generate a shopping arcade in a dungeon which has ARCADE flag (now only...
[hengband/hengband.git]
/
src
/
melee2.c
diff --git
a/src/melee2.c
b/src/melee2.c
index
8a0cb63
..
5928770
100644
(file)
--- 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];
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;
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;
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;
default:
pt = 0;
break;
@@
-2149,20
+2157,38
@@
act = "%s
/* Blink away */
if (blinked && m_ptr->r_idx)
{
/* Blink away */
if (blinked && m_ptr->r_idx)
{
- if (
see_m
)
+ if (
teleport_barrier(m_idx)
)
{
{
+ if (see_m)
+ {
#ifdef JP
#ifdef JP
-
msg_print("Å¥ËÀ¤Ï¾Ð¤Ã¤Æƨ¤²¤¿¡ª
");
+
msg_print("Å¥ËÀ¤Ï¾Ð¤Ã¤Æƨ¤²...¤è¤¦¤È¤·¤¿¤¬¥Ð¥ê¥¢¤ËËɤ¬¤ì¤¿¡£
");
#else
#else
-
msg_print("The thief flees laughing!
");
+
msg_print("The thief flees laughing...? But magic barrier obstructs it.
");
#endif
#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;
}
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)))
{
/* 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 */
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;
/* 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)
{
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;
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;
if (p_ptr->inside_battle) return;
if (!r_ptr->next_exp) return;