OSDN Git Service

アーチャーの岩石からのスリング用の弾作成に関する変更.
authornothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 1 Dec 2003 19:56:04 +0000 (19:56 +0000)
committernothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 1 Dec 2003 19:56:04 +0000 (19:56 +0000)
* 岩石が泥になるメッセージを出さないようにした.
* 地形判定をCAN_DIG && HURT_ROCKに変更.
* 明らかに材料にできない地形から作成試みた場合はターンを消費しないよ
  うに変更. ただしmimicしているために失敗した場合はターン消費.

なお, 以下の変更を含む.
* 岩喰いの岩石味判定をHAS_ITEMからCAN_DIGに変更.

src/mutation.c
src/racial.c

index 5faf057..4773cc3 100644 (file)
@@ -3506,7 +3506,7 @@ bool mutation_power_aux(u32b power)
 #endif
                                        break;
                                }
-                               else if (have_flag(f_ptr->flags, FF_DOOR) || have_flag(f_ptr->flags, FF_HAS_ITEM))
+                               else if (have_flag(f_ptr->flags, FF_DOOR) || have_flag(f_ptr->flags, FF_CAN_DIG))
                                {
                                        (void)set_food(p_ptr->food + 3000);
                                }
index 8862858..fa72314 100644 (file)
@@ -114,7 +114,25 @@ static bool do_cmd_archer(void)
                y = py + ddy[dir];
                x = px + ddx[dir];
                c_ptr = &cave[y][x];
-               if (c_ptr->feat == FEAT_RUBBLE)
+
+               if (!have_flag(f_info[get_feat_mimic(c_ptr)].flags, FF_CAN_DIG))
+               {
+#ifdef JP
+                       msg_print("¤½¤³¤Ë¤Ï´äÀФ¬¤Ê¤¤¡£");
+#else
+                       msg_print("You need pile of rubble.");
+#endif
+                       return FALSE;
+               }
+               else if (!have_flag(f_flags_grid(c_ptr), FF_CAN_DIG) || !have_flag(f_flags_grid(c_ptr), FF_HURT_ROCK))
+               {
+#ifdef JP
+                       msg_print("¹Å¤¹¤®¤ÆÊø¤»¤Ê¤«¤Ã¤¿¡£");
+#else
+                       msg_print("You failed to make ammo.");
+#endif
+               }
+               else
                {
                        /* Get local object */
                        q_ptr = &forge;
@@ -131,23 +149,17 @@ static bool do_cmd_archer(void)
 
                        object_desc(o_name, q_ptr, 0);
 #ifdef JP
-                       msg_format("´äÀФòºï¤Ã¤Æ%s¤òºî¤Ã¤¿¡£",o_name);
+                       msg_format("%s¤òºî¤Ã¤¿¡£", o_name);
 #else
                        msg_print("You make some ammo.");
 #endif
 
-                       (void)wall_to_mud(dir);
+                       /* Destroy the wall */
+                       cave_alter_feat(y, x, FF_HURT_ROCK);
+
                        p_ptr->update |= (PU_VIEW | PU_LITE | PU_FLOW | PU_MONSTERS | PU_MON_LITE);
                        p_ptr->window |= (PW_OVERHEAD);
                }
-               else
-               {
-#ifdef JP
-                       msg_print("¤½¤³¤Ë¤Ï´äÀФ¬¤Ê¤¤¡£");
-#else
-                       msg_print("You need pile of rubble.");
-#endif
-               }
        }
        /**********Create arrows*********/
        else if (ext == 2)