X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmonster-process.c;h=138389db30af22179b67537d490f6d62899ccf45;hb=80e994dc52316aa1c182c8412af7c6b4290fccdf;hp=e968a6a4c676a52cc2db21f9fd6fec1f7d380fa4;hpb=f8a39af0bb46f0dc544f9d8a55a58e5085d4c119;p=hengband%2Fhengband.git diff --git a/src/monster-process.c b/src/monster-process.c index e968a6a4c..138389db3 100644 --- a/src/monster-process.c +++ b/src/monster-process.c @@ -114,7 +114,7 @@ static bool get_enemy_dir(player_type *target_ptr, MONSTER_IDX m_idx, int *mm) } /* Monster must be 'an enemy' */ - if (!are_enemies(m_ptr, t_ptr)) continue; + if (!are_enemies(target_ptr, m_ptr, t_ptr)) continue; /* Monster must be projectable if we can't pass through walls */ if (((r_ptr->flags2 & RF2_PASS_WALL) && ((m_idx != target_ptr->riding) || target_ptr->pass_wall)) || @@ -340,7 +340,7 @@ static bool get_moves_aux2(player_type *target_ptr, MONSTER_IDX m_idx, POSITION if (!(((r_ptr->flags2 & RF2_PASS_WALL) && ((m_idx != target_ptr->riding) || target_ptr->pass_wall)) || ((r_ptr->flags2 & RF2_KILL_WALL) && (m_idx != target_ptr->riding)))) { if (cost == 0) continue; - if (!can_open_door && is_closed_door(g_ptr->feat)) continue; + if (!can_open_door && is_closed_door(target_ptr, g_ptr->feat)) continue; } /* Hack -- for kill or pass wall monster.. */ @@ -728,7 +728,7 @@ static bool find_safety(player_type *target_ptr, MONSTER_IDX m_idx, POSITION *yp g_ptr = &floor_ptr->grid_array[y][x]; /* Skip locations in a wall */ - if (!monster_can_cross_terrain(g_ptr->feat, &r_info[m_ptr->r_idx], (m_idx == target_ptr->riding) ? CEM_RIDING : 0)) continue; + if (!monster_can_cross_terrain(target_ptr, g_ptr->feat, &r_info[m_ptr->r_idx], (m_idx == target_ptr->riding) ? CEM_RIDING : 0)) continue; /* Check for "availability" (if monsters can flow) */ if (!(m_ptr->mflag2 & MFLAG2_NOFLOW)) @@ -815,7 +815,7 @@ static bool find_hiding(player_type *target_ptr, MONSTER_IDX m_idx, POSITION *yp if (!in_bounds(floor_ptr, y, x)) continue; /* Skip occupied locations */ - if (!monster_can_enter(y, x, r_ptr, 0)) continue; + if (!monster_can_enter(target_ptr, y, x, r_ptr, 0)) continue; /* Check for hidden, available grid */ if (projectable(target_ptr, target_ptr->y, target_ptr->x, y, x) && clean_shot(target_ptr, fy, fx, y, x, FALSE)) @@ -875,7 +875,7 @@ static bool get_moves(player_type *target_ptr, MONSTER_IDX m_idx, DIRECTION *mm) /* The monster must be an enemy, and in LOS */ if (t_m_idx && - are_enemies(m_ptr, &floor_ptr->m_list[t_m_idx]) && + are_enemies(target_ptr, m_ptr, &floor_ptr->m_list[t_m_idx]) && los(target_ptr, m_ptr->fy, m_ptr->fx, m_ptr->target_y, m_ptr->target_x) && projectable(target_ptr, m_ptr->fy, m_ptr->fx, m_ptr->target_y, m_ptr->target_x)) { @@ -911,7 +911,7 @@ static bool get_moves(player_type *target_ptr, MONSTER_IDX m_idx, DIRECTION *mm) g_ptr = &floor_ptr->grid_array[yy][xx]; /* Check grid */ - if (monster_can_cross_terrain(g_ptr->feat, r_ptr, 0)) + if (monster_can_cross_terrain(target_ptr, g_ptr->feat, r_ptr, 0)) { /* One more room grid */ room++; @@ -954,7 +954,7 @@ static bool get_moves(player_type *target_ptr, MONSTER_IDX m_idx, DIRECTION *mm) if (!in_bounds2(floor_ptr, y2, x2)) continue; /* Ignore filled grids */ - if (!monster_can_enter(y2, x2, r_ptr, 0)) continue; + if (!monster_can_enter(target_ptr, y2, x2, r_ptr, 0)) continue; /* Try to fill this hole */ break; @@ -1262,7 +1262,7 @@ void process_monster(player_type *target_ptr, MONSTER_IDX m_idx) msg_print("地面に落とされた。"); #else GAME_TEXT m_name[MAX_NLEN]; - monster_desc(m_name, &target_ptr->current_floor_ptr->m_list[target_ptr->riding], 0); + monster_desc(target_ptr, m_name, &target_ptr->current_floor_ptr->m_list[target_ptr->riding], 0); msg_format("You have fallen from %s.", m_name); #endif } @@ -1445,7 +1445,7 @@ void process_monster(player_type *target_ptr, MONSTER_IDX m_idx) /* Paranoia... no pet uniques outside wizard mode -- TY */ if (is_pet(m_ptr) && ((((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) && - monster_has_hostile_align(NULL, 10, -10, r_ptr)) || (r_ptr->flagsr & RFR_RES_ALL))) + monster_has_hostile_align(target_ptr, NULL, 10, -10, r_ptr)) || (r_ptr->flagsr & RFR_RES_ALL))) { gets_angry = TRUE; } @@ -1588,7 +1588,7 @@ void process_monster(player_type *target_ptr, MONSTER_IDX m_idx) MONSTER_IDX t_m_idx = target_ptr->current_floor_ptr->grid_array[m_ptr->target_y][m_ptr->target_x].m_idx; /* The monster must be an enemy, and projectable */ - if (t_m_idx && are_enemies(m_ptr, &target_ptr->current_floor_ptr->m_list[t_m_idx]) && + if (t_m_idx && are_enemies(target_ptr, m_ptr, &target_ptr->current_floor_ptr->m_list[t_m_idx]) && projectable(target_ptr, m_ptr->fy, m_ptr->fx, m_ptr->target_y, m_ptr->target_x)) { counterattack = TRUE; @@ -1756,7 +1756,7 @@ void process_monster(player_type *target_ptr, MONSTER_IDX m_idx) /* Access that grid */ g_ptr = &target_ptr->current_floor_ptr->grid_array[ny][nx]; f_ptr = &f_info[g_ptr->feat]; - can_cross = monster_can_cross_terrain(g_ptr->feat, r_ptr, is_riding_mon ? CEM_RIDING : 0); + can_cross = monster_can_cross_terrain(target_ptr, g_ptr->feat, r_ptr, is_riding_mon ? CEM_RIDING : 0); /* Access that grid's contents */ y_ptr = &target_ptr->current_floor_ptr->m_list[g_ptr->m_idx]; @@ -1803,7 +1803,7 @@ void process_monster(player_type *target_ptr, MONSTER_IDX m_idx) } /* Handle doors and secret doors */ - else if (is_closed_door(g_ptr->feat)) + else if (is_closed_door(target_ptr, g_ptr->feat)) { bool may_bash = TRUE; @@ -1872,7 +1872,7 @@ void process_monster(player_type *target_ptr, MONSTER_IDX m_idx) if (did_open_door || did_bash_door) { /* Break down the door */ - if (did_bash_door && ((randint0(100) < 50) || (feat_state(g_ptr->feat, FF_OPEN) == g_ptr->feat) || have_flag(f_ptr->flags, FF_GLASS))) + if (did_bash_door && ((randint0(100) < 50) || (feat_state(target_ptr, g_ptr->feat, FF_OPEN) == g_ptr->feat) || have_flag(f_ptr->flags, FF_GLASS))) { cave_alter_feat(target_ptr, ny, nx, FF_BASH); @@ -2023,7 +2023,7 @@ void process_monster(player_type *target_ptr, MONSTER_IDX m_idx) if (((r_ptr->flags2 & RF2_KILL_BODY) && !(r_ptr->flags1 & RF1_NEVER_BLOW) && (r_ptr->mexp * r_ptr->level > z_ptr->mexp * z_ptr->level) && can_cross && (g_ptr->m_idx != target_ptr->riding)) || - are_enemies(m_ptr, y_ptr) || MON_CONFUSED(m_ptr)) + are_enemies(target_ptr, m_ptr, y_ptr) || MON_CONFUSED(m_ptr)) { if (!(r_ptr->flags1 & RF1_NEVER_BLOW)) { @@ -2055,7 +2055,7 @@ void process_monster(player_type *target_ptr, MONSTER_IDX m_idx) else if ((r_ptr->flags2 & RF2_MOVE_BODY) && !(r_ptr->flags1 & RF1_NEVER_MOVE) && (r_ptr->mexp > z_ptr->mexp) && can_cross && (g_ptr->m_idx != target_ptr->riding) && - monster_can_cross_terrain(target_ptr->current_floor_ptr->grid_array[m_ptr->fy][m_ptr->fx].feat, z_ptr, 0)) + monster_can_cross_terrain(target_ptr, target_ptr->current_floor_ptr->grid_array[m_ptr->fy][m_ptr->fx].feat, z_ptr, 0)) { /* Allow movement */ do_move = TRUE; @@ -2105,7 +2105,7 @@ void process_monster(player_type *target_ptr, MONSTER_IDX m_idx) if (must_alter_to_move && (r_ptr->flags7 & RF7_AQUATIC)) { - if (!monster_can_cross_terrain(g_ptr->feat, r_ptr, is_riding_mon ? CEM_RIDING : 0)) + if (!monster_can_cross_terrain(target_ptr, g_ptr->feat, r_ptr, is_riding_mon ? CEM_RIDING : 0)) { /* Assume no move allowed */ do_move = FALSE; @@ -2233,7 +2233,7 @@ void process_monster(player_type *target_ptr, MONSTER_IDX m_idx) object_flags(o_ptr, flgs); /* Acquire the object name */ - object_desc(o_name, o_ptr, 0); + object_desc(target_ptr, o_name, o_ptr, 0); monster_desc(target_ptr, m_name, m_ptr, MD_INDEF_HIDDEN); /* React to objects that hurt the monster */