OSDN Git Service

時止めを使うモンスターがプレイヤーのオーラで死んだ時に時止めをキャンセ
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Wed, 8 Oct 2003 21:54:11 +0000 (21:54 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Wed, 8 Oct 2003 21:54:11 +0000 (21:54 +0000)
ルするコードがいいかげんだった為、光の剣等で関係無いモンスターが死んだ
時にも時止めがキャンセルされていたバグ修正。

src/externs.h
src/melee2.c
src/variable.c
src/xtra2.c

index 22dfaab..c092dd3 100644 (file)
@@ -487,7 +487,7 @@ extern bool preserve_mode;
 extern bool autoroller;
 extern bool autochara;
 extern bool can_save;
-extern bool world_monster;
+extern s16b world_monster;
 extern bool world_player;
 extern int cap_mon;
 extern int cap_mspeed;
index c56fd9e..a55ed56 100644 (file)
@@ -3901,14 +3901,15 @@ bool process_the_world(int num, int who, bool vs_player)
                msg_print(NULL);
        }
 
-       world_monster = TRUE;
+       /* This monster cast spells */
+       world_monster = hack_m_idx;
 
        if (vs_player) do_cmd_redraw();
 
        while(num--)
        {
                if(!m_ptr->r_idx) break;
-               process_monster(hack_m_idx);
+               process_monster(world_monster);
 
                reset_target(m_ptr);
 
@@ -3937,7 +3938,7 @@ bool process_the_world(int num, int who, bool vs_player)
        /* Window stuff */
        p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
 
-       world_monster = FALSE;
+       world_monster = 0;
        if (vs_player || los(py, px, m_ptr->fy, m_ptr->fx))
        {
 #ifdef JP
index 5011be7..bb9683f 100644 (file)
@@ -1118,7 +1118,7 @@ bool autochara;
 
 bool can_save = FALSE;        /* Game can be saved */
 
-bool world_monster;
+s16b world_monster;
 bool world_player;
 
 int cap_mon;
index 1f69c15..6d0dc4e 100644 (file)
@@ -691,8 +691,8 @@ void monster_death(int m_idx, bool drop_item)
        bool drop_chosen_item = drop_item && !cloned && !p_ptr->inside_arena
                && !p_ptr->inside_battle && !is_pet(m_ptr);
 
-
-       if (world_monster) world_monster = FALSE;
+       /* The caster is dead? */
+       if (world_monster && world_monster == m_idx) world_monster = 0;
 
        /* Notice changes in view */
        if (r_ptr->flags7 & (RF7_LITE_MASK | RF7_DARK_MASK))