OSDN Git Service

乗馬中のプレイヤーがドアを開けたりするとプレイヤーのいるグリッドの
authornothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Tue, 16 Sep 2003 10:59:50 +0000 (10:59 +0000)
committernothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Tue, 16 Sep 2003 10:59:50 +0000 (10:59 +0000)
m_idxが0になって, モンスターがいないことになるバグを修正. また, 乗馬
のいるグリッドのm_idx処理を少し変更. p_ptr->ridingを直接使える場合は
使うようにした.

src/cmd1.c
src/hissatsu.c
src/mutation.c
src/spells2.c
src/spells3.c

index 92747c6..054585a 100644 (file)
@@ -3687,11 +3687,6 @@ void move_player(int dir, int do_pickup, bool break_trap)
                p_can_pass_walls = FALSE;
        }
 
-       if (p_ptr->riding)
-       {
-               cave[py][px].m_idx = 0;
-       }
-
        /* Hack -- attack monsters */
        if (c_ptr->m_idx && (m_ptr->ml || cave_floor_bold(y, x) || p_can_pass_walls))
        {
@@ -4106,6 +4101,10 @@ void move_player(int dir, int do_pickup, bool break_trap)
                        }
                }
 
+               /* Hack -- For moving monster or riding player's moving */
+               cave[py][px].m_idx = c_ptr->m_idx;
+               c_ptr->m_idx = 0;
+
                if (do_past)
                {
 #ifdef JP
@@ -4116,8 +4115,6 @@ void move_player(int dir, int do_pickup, bool break_trap)
 
                        m_ptr->fy = py;
                        m_ptr->fx = px;
-                       cave[py][px].m_idx = c_ptr->m_idx;
-                       c_ptr->m_idx = 0;
                        update_mon(cave[py][px].m_idx, TRUE);
                }
 
@@ -4151,6 +4148,7 @@ void move_player(int dir, int do_pickup, bool break_trap)
                                cave_set_feat(py, px, floor_type[randint0(100)]);
                        }
                }
+
                if (music_singing(MUSIC_WALL))
                {
                        project(0, 0, py, px,
@@ -4177,6 +4175,14 @@ void move_player(int dir, int do_pickup, bool break_trap)
                /* Remove "unsafe" flag */
                if ((!p_ptr->blind && !no_lite()) || !is_trap(c_ptr->feat)) c_ptr->info &= ~(CAVE_UNSAFE);
 
+               if (p_ptr->riding)
+               {
+                       riding_m_ptr->fy = py;
+                       riding_m_ptr->fx = px;
+                       cave[py][px].m_idx = p_ptr->riding;
+                       update_mon(p_ptr->riding, TRUE);
+               }
+
                /* Redraw new spot */
                lite_spot(py, px);
 
@@ -4359,16 +4365,6 @@ void move_player(int dir, int do_pickup, bool break_trap)
                        }
                }
        }
-
-       if (p_ptr->riding)
-       {
-               riding_m_ptr->fy = py;
-               riding_m_ptr->fx = px;
-               cave[py][px].m_idx = p_ptr->riding;
-               update_mon(cave[py][px].m_idx, TRUE);
-               if (riding_r_ptr->flags7 & (RF7_LITE_MASK | RF7_DARK_MASK))
-                       p_ptr->update |= (PU_MON_LITE);
-       }
 }
 
 
index 2c9c324..2e358ef 100644 (file)
@@ -946,13 +946,11 @@ static bool cast_hissatsu_spell(int spell)
 
                                if (p_ptr->riding)
                                {
-                                       int tmp;
-                                       tmp = cave[py][px].m_idx;
-                                       cave[py][px].m_idx = cave[oy][ox].m_idx;
-                                       cave[oy][ox].m_idx = tmp;
+                                       cave[oy][ox].m_idx = cave[py][px].m_idx;
+                                       cave[py][px].m_idx = p_ptr->riding;
                                        m_list[p_ptr->riding].fy = py;
                                        m_list[p_ptr->riding].fx = px;
-                                       update_mon(cave[py][px].m_idx, TRUE);
+                                       update_mon(p_ptr->riding, TRUE);
                                }
 
                                forget_flow();
index 1426f61..866be03 100644 (file)
@@ -3543,7 +3543,7 @@ bool mutation_power_aux(u32b power)
                                        m_list[p_ptr->riding].fx = px;
                                        cave[py][px].m_idx = p_ptr->riding;
                                        cave[oy][ox].m_idx = 0;
-                                       update_mon(cave[py][px].m_idx, TRUE);
+                                       update_mon(p_ptr->riding, TRUE);
                                }
 
                                lite_spot(py, px);
index 86d9978..7a058a8 100644 (file)
@@ -5784,13 +5784,11 @@ msg_print("
 
                        if (p_ptr->riding)
                        {
-                               int tmp;
-                               tmp = cave[py][px].m_idx;
-                               cave[py][px].m_idx = cave[oy][ox].m_idx;
-                               cave[oy][ox].m_idx = tmp;
+                               cave[oy][ox].m_idx = cave[py][px].m_idx;
+                               cave[py][px].m_idx = p_ptr->riding;
                                m_list[p_ptr->riding].fy = py;
                                m_list[p_ptr->riding].fx = px;
-                               update_mon(cave[py][px].m_idx, TRUE);
+                               update_mon(p_ptr->riding, TRUE);
                        }
 
                        /* Redraw the old spot */
@@ -6800,7 +6798,7 @@ msg_print("
                m_list[p_ptr->riding].fx = tx;
 
                /* Update the monster (new location) */
-               update_mon(cave[ty][tx].m_idx, TRUE);
+               update_mon(p_ptr->riding, TRUE);
        }
 
        tx = m_ptr->fx;
index 444ceef..ac6af74 100644 (file)
@@ -362,13 +362,11 @@ msg_print("
 
        if (p_ptr->riding)
        {
-               int tmp;
-               tmp = cave[py][px].m_idx;
-               cave[py][px].m_idx = cave[oy][ox].m_idx;
-               cave[oy][ox].m_idx = tmp;
+               cave[oy][ox].m_idx = cave[py][px].m_idx;
+               cave[py][px].m_idx = p_ptr->riding;
                m_list[p_ptr->riding].fy = py;
                m_list[p_ptr->riding].fx = px;
-               update_mon(cave[py][px].m_idx, TRUE);
+               update_mon(p_ptr->riding, TRUE);
        }
 
        /* Redraw the old spot */
@@ -483,13 +481,11 @@ msg_print("
 
        if (p_ptr->riding)
        {
-               int tmp;
-               tmp = cave[py][px].m_idx;
-               cave[py][px].m_idx = cave[oy][ox].m_idx;
-               cave[oy][ox].m_idx = tmp;
+               cave[oy][ox].m_idx = cave[py][px].m_idx;
+               cave[py][px].m_idx = p_ptr->riding;
                m_list[p_ptr->riding].fy = py;
                m_list[p_ptr->riding].fx = px;
-               update_mon(cave[py][px].m_idx, TRUE);
+               update_mon(p_ptr->riding, TRUE);
        }
 
        forget_flow();