OSDN Git Service

los()やplayer_has_los_*()の使用に関する変更. 主に透明な壁の作成を想定
[hengband/hengband.git] / src / cmd6.c
index 0508926..e085d19 100644 (file)
@@ -523,12 +523,12 @@ msg_print("
        else if ((prace_is_(RACE_DEMON) ||
                 (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON)) &&
                 (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_CORPSE &&
-                 strchr("pht", r_info[o_ptr->pval].d_char)))
+                 my_strchr("pht", r_info[o_ptr->pval].d_char)))
        {
                /* Drain vitality of humanoids */
                char o_name[MAX_NLEN];
 
-               object_desc(o_name, o_ptr, FALSE, 0);
+               object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
 
 #ifdef JP
                msg_format("%s¤Ïdz¤¨¾å¤ê³¥¤Ë¤Ê¤Ã¤¿¡£ÀºÎϤòµÛ¼ý¤·¤¿µ¤¤¬¤¹¤ë¡£", o_name);
@@ -657,7 +657,7 @@ static bool item_tester_hook_eatable(object_type *o_ptr)
        {
                if (o_ptr->tval == TV_CORPSE &&
                    o_ptr->sval == SV_CORPSE &&
-                   strchr("pht", r_info[o_ptr->pval].d_char))
+                   my_strchr("pht", r_info[o_ptr->pval].d_char))
                        return TRUE;
        }
 
@@ -2174,7 +2174,7 @@ msg_print("
                q=format("book-%d_jp.txt",o_ptr->sval);
 
                /* Display object description */
-               object_desc(o_name, o_ptr, TRUE, 0);
+               object_desc(o_name, o_ptr, OD_NAME_ONLY);
 
                /* Build the filename */
                path_build(buf, sizeof(buf), ANGBAND_DIR_FILE, q);
@@ -2431,7 +2431,7 @@ static int staff_effect(int sval, bool *use_charge, bool magic, bool known)
                                {
                                        scatter(&y, &x, py, px, 4, 0);
 
-                                       if (!cave_floor_bold(y, x)) continue;
+                                       if (!have_flag(f_flags_bold(y, x), FF_PROJECT)) continue;
 
                                        if (!player_bold(y, x)) break;
                                }
@@ -4401,7 +4401,7 @@ msg_print("
                                        {
                                                scatter(&y, &x, py, px, 4, 0);
 
-                                               if (!cave_floor_bold(y, x)) continue;
+                                               if (!have_flag(f_flags_bold(y, x), FF_PROJECT)) continue;
 
                                                if (!player_bold(y, x)) break;
                                        }
@@ -5282,7 +5282,11 @@ msg_print("
 
                        case ART_BOROMIR:
                        {
+#ifdef JP
+                               msg_print("¤¢¤Ê¤¿¤ÏÎ϶¯¤¤ÆÍÉ÷¤ò¿á¤­ÌĤ餷¤¿¡£¼þ°Ï¤ÎŨ¤¬¿Ì¤¨¾å¤Ã¤Æ¤¤¤ë!");
+#else
                                msg_print("You wind a mighty blast; your enemies tremble!");
+#endif
                                (void)turn_monsters((3 * p_ptr->lev / 2) + 10);
                                o_ptr->timeout = randint0(40) + 40;
                                break;
@@ -5403,10 +5407,10 @@ msg_print("
                                y = py+ddy[dir];
                                x = px+ddx[dir];
                                tsuri_dir = dir;
-                               if (!(cave[y][x].feat == FEAT_DEEP_WATER) && !(cave[y][x].feat == FEAT_SHAL_WATER))
+                               if (!have_flag(f_flags_bold(y, x), FF_WATER))
                                {
 #ifdef JP
-                                       msg_print("¤½¤³¤ÏΦÃϤÀ¡£");
+                                       msg_print("¤½¤³¤Ï¿åÊդǤϤʤ¤¡£");
 #else
                                        msg_print("There is no fishing place.");
 #endif
@@ -5521,6 +5525,7 @@ msg_print("
                                                if (!m_ptr->r_idx) continue;
                                                if (!((m_ptr->r_idx == MON_SUKE) || (m_ptr->r_idx == MON_KAKU))) continue;
                                                if (!los(m_ptr->fy, m_ptr->fx, py, px)) continue;
+                                               if (!projectable(m_ptr->fy, m_ptr->fx, py, px)) continue;
                                                count++;
                                                break;
                                        }
@@ -6469,7 +6474,7 @@ msg_print("
                {
                        bool success = FALSE;
                        if (!get_rep_dir2(&dir)) return;
-                       if (cave_floor_bold(py+ddy[dir],px+ddx[dir]))
+                       if (monster_can_enter(py + ddy[dir], px + ddx[dir], &r_info[o_ptr->pval], 0))
                        {
                                if (place_monster_aux(0, py + ddy[dir], px + ddx[dir], o_ptr->pval, (PM_FORCE_PET | PM_NO_KAGE)))
                                {