OSDN Git Service

アイテムの種類判定のコードを整理。
[hengband/hengband.git] / src / cmd6.c
index 84cf8ac..b7af32b 100644 (file)
@@ -81,7 +81,7 @@ static void do_cmd_eat_food_aux(int item)
        ident = FALSE;
 
        /* Object level */
-       lev = get_object_level(o_ptr);
+       lev = k_info[o_ptr->k_idx].level;
 
        if (o_ptr->tval == TV_FOOD)
        {
@@ -378,7 +378,7 @@ static void do_cmd_eat_food_aux(int item)
        /* Combine / Reorder the pack (later) */
        p_ptr->notice |= (PN_COMBINE | PN_REORDER);
 
-       if (!(object_aware_p(o_ptr)))
+       if (!(object_is_aware(o_ptr)))
        {
                chg_virtue(V_KNOWLEDGE, -1);
                chg_virtue(V_PATIENCE, -1);
@@ -389,7 +389,7 @@ static void do_cmd_eat_food_aux(int item)
        if (o_ptr->tval == TV_FOOD) object_tried(o_ptr);
 
        /* The player is now aware of the object */
-       if (ident && !object_aware_p(o_ptr))
+       if (ident && !object_is_aware(o_ptr))
        {
                object_aware(o_ptr);
                gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
@@ -776,7 +776,7 @@ static void do_cmd_quaff_potion_aux(int item)
        ident = FALSE;
 
        /* Object level */
-       lev = get_object_level(q_ptr);
+       lev = k_info[q_ptr->k_idx].level;
 
        /* Analyze the potion */
        if (q_ptr->tval == TV_POTION)
@@ -884,7 +884,7 @@ static void do_cmd_quaff_potion_aux(int item)
                                        ident = TRUE;
                                        if (one_in_(3)) lose_all_info();
                                        else wiz_dark();
-                                       teleport_player(100);
+                                       teleport_player(100, TRUE);
                                        wiz_dark();
 #ifdef JP
 msg_print("ÃΤé¤Ê¤¤¾ì½ê¤ÇÌܤ¬Àä᤿¡£Æ¬Äˤ¬¤¹¤ë¡£");
@@ -1433,7 +1433,7 @@ msg_print("
        /* Combine / Reorder the pack (later) */
        p_ptr->notice |= (PN_COMBINE | PN_REORDER);
 
-       if (!(object_aware_p(o_ptr)))
+       if (!(object_is_aware(o_ptr)))
        {
                chg_virtue(V_PATIENCE, -1);
                chg_virtue(V_CHANCE, 1);
@@ -1444,7 +1444,7 @@ msg_print("
        object_tried(q_ptr);
 
        /* An identification was made */
-       if (ident && !object_aware_p(q_ptr))
+       if (ident && !object_is_aware(q_ptr))
        {
                object_aware(q_ptr);
                gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
@@ -1624,7 +1624,7 @@ static void do_cmd_read_scroll_aux(int item, bool known)
        ident = FALSE;
 
        /* Object level */
-       lev = get_object_level(o_ptr);
+       lev = k_info[o_ptr->k_idx].level;
 
        /* Assume the scroll will get used up */
        used_up = TRUE;
@@ -1719,14 +1719,14 @@ static void do_cmd_read_scroll_aux(int item, bool known)
 
                case SV_SCROLL_PHASE_DOOR:
                {
-                       teleport_player(10);
+                       teleport_player(10, FALSE);
                        ident = TRUE;
                        break;
                }
 
                case SV_SCROLL_TELEPORT:
                {
-                       teleport_player(100);
+                       teleport_player(100, FALSE);
                        ident = TRUE;
                        break;
                }
@@ -2192,7 +2192,7 @@ msg_print("
        /* Combine / Reorder the pack (later) */
        p_ptr->notice |= (PN_COMBINE | PN_REORDER);
 
-       if (!(object_aware_p(o_ptr)))
+       if (!(object_is_aware(o_ptr)))
        {
                chg_virtue(V_PATIENCE, -1);
                chg_virtue(V_CHANCE, 1);
@@ -2203,7 +2203,7 @@ msg_print("
        object_tried(o_ptr);
 
        /* An identification was made */
-       if (ident && !object_aware_p(o_ptr))
+       if (ident && !object_is_aware(o_ptr))
        {
                object_aware(o_ptr);
                gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
@@ -2322,7 +2322,7 @@ void do_cmd_read_scroll(void)
        }
 
        /* Read the scroll */
-       do_cmd_read_scroll_aux(item, object_aware_p(o_ptr));
+       do_cmd_read_scroll_aux(item, object_is_aware(o_ptr));
 }
 
 
@@ -2370,7 +2370,7 @@ static int staff_effect(int sval, bool *use_charge, bool magic, bool known)
 
                case SV_STAFF_TELEPORTATION:
                {
-                       teleport_player(100);
+                       teleport_player(100, FALSE);
                        ident = TRUE;
                        break;
                }
@@ -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;
                                }
@@ -2721,7 +2721,7 @@ static void do_cmd_use_staff_aux(int item)
        energy_use = 100;
 
        /* Extract the item level */
-       lev = get_object_level(o_ptr);
+       lev = k_info[o_ptr->k_idx].level;
        if (lev > 50) lev = 50 + (lev - 50)/2;
 
        /* Base chance of success */
@@ -2789,9 +2789,9 @@ static void do_cmd_use_staff_aux(int item)
        /* Sound */
        sound(SOUND_ZAP);
 
-       ident = staff_effect(o_ptr->sval, &use_charge, FALSE, object_aware_p(o_ptr));
+       ident = staff_effect(o_ptr->sval, &use_charge, FALSE, object_is_aware(o_ptr));
 
-       if (!(object_aware_p(o_ptr)))
+       if (!(object_is_aware(o_ptr)))
        {
                chg_virtue(V_PATIENCE, -1);
                chg_virtue(V_CHANCE, 1);
@@ -2805,7 +2805,7 @@ static void do_cmd_use_staff_aux(int item)
        object_tried(o_ptr);
 
        /* An identification was made */
-       if (ident && !object_aware_p(o_ptr))
+       if (ident && !object_is_aware(o_ptr))
        {
                object_aware(o_ptr);
                gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
@@ -3241,7 +3241,7 @@ static void do_cmd_aim_wand_aux(int item)
 
 
        /* Allow direction to be cancelled for free */
-       if (object_aware_p(o_ptr) && (o_ptr->sval == SV_WAND_HEAL_MONSTER
+       if (object_is_aware(o_ptr) && (o_ptr->sval == SV_WAND_HEAL_MONSTER
                                      || o_ptr->sval == SV_WAND_HASTE_MONSTER))
                        target_pet = TRUE;
        if (!get_aim_dir(&dir))
@@ -3255,7 +3255,7 @@ static void do_cmd_aim_wand_aux(int item)
        energy_use = 100;
 
        /* Get the level */
-       lev = get_object_level(o_ptr);
+       lev = k_info[o_ptr->k_idx].level;
        if (lev > 50) lev = 50 + (lev - 50)/2;
 
        /* Base chance of success */
@@ -3327,7 +3327,7 @@ static void do_cmd_aim_wand_aux(int item)
        /* Combine / Reorder the pack (later) */
        p_ptr->notice |= (PN_COMBINE | PN_REORDER);
 
-       if (!(object_aware_p(o_ptr)))
+       if (!(object_is_aware(o_ptr)))
        {
                chg_virtue(V_PATIENCE, -1);
                chg_virtue(V_CHANCE, 1);
@@ -3338,7 +3338,7 @@ static void do_cmd_aim_wand_aux(int item)
        object_tried(o_ptr);
 
        /* Apply identification */
-       if (ident && !object_aware_p(o_ptr))
+       if (ident && !object_is_aware(o_ptr))
        {
                object_aware(o_ptr);
                gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
@@ -3681,7 +3681,7 @@ static void do_cmd_zap_rod_aux(int item)
 
        /* Get a direction (unless KNOWN not to need it) */
        if (((o_ptr->sval >= SV_ROD_MIN_DIRECTION) && (o_ptr->sval != SV_ROD_HAVOC) && (o_ptr->sval != SV_ROD_AGGRAVATE) && (o_ptr->sval != SV_ROD_PESTICIDE)) ||
-            !object_aware_p(o_ptr))
+            !object_is_aware(o_ptr))
        {
                /* Get a direction, allow cancel */
                if (!get_aim_dir(&dir)) return;
@@ -3692,7 +3692,7 @@ static void do_cmd_zap_rod_aux(int item)
        energy_use = 100;
 
        /* Extract the item level */
-       lev = get_object_level(o_ptr);
+       lev = k_info[o_ptr->k_idx].level;
 
        /* Base chance of success */
        chance = p_ptr->skill_dev;
@@ -3783,7 +3783,7 @@ msg_print("
        /* Combine / Reorder the pack (later) */
        p_ptr->notice |= (PN_COMBINE | PN_REORDER);
 
-       if (!(object_aware_p(o_ptr)))
+       if (!(object_is_aware(o_ptr)))
        {
                chg_virtue(V_PATIENCE, -1);
                chg_virtue(V_CHANCE, 1);
@@ -3794,7 +3794,7 @@ msg_print("
        object_tried(o_ptr);
 
        /* Successfully determined the object function */
-       if (ident && !object_aware_p(o_ptr))
+       if (ident && !object_is_aware(o_ptr))
        {
                object_aware(o_ptr);
                gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
@@ -3842,7 +3842,7 @@ static bool item_tester_hook_activate(object_type *o_ptr)
        u32b flgs[TR_FLAG_SIZE];
 
        /* Not known */
-       if (!object_known_p(o_ptr)) return (FALSE);
+       if (!object_is_known(o_ptr)) return (FALSE);
 
        /* Extract the flags */
        object_flags(o_ptr, flgs);
@@ -3994,10 +3994,10 @@ static void do_cmd_activate_aux(int item)
        energy_use = 100;
 
        /* Extract the item level */
-       lev = get_object_level(o_ptr);
+       lev = k_info[o_ptr->k_idx].level;
 
        /* Hack -- use artifact level instead */
-       if (artifact_p(o_ptr)) lev = a_info[o_ptr->name1].level;
+       if (object_is_fixed_artifact(o_ptr)) lev = a_info[o_ptr->name1].level;
        else if (o_ptr->art_name)
        {
                switch (o_ptr->xtra2)
@@ -4186,7 +4186,7 @@ static void do_cmd_activate_aux(int item)
        }
 
        /* Artifacts */
-       else if (o_ptr->name1)
+       else if (object_is_fixed_artifact(o_ptr))
        {
                /* Choose effect */
                switch (o_ptr->name1)
@@ -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;
                                        }
@@ -4597,7 +4597,7 @@ msg_print("ŷ
                                msg_print("Your cloak twists space around you...");
 #endif
 
-                               teleport_player(100);
+                               teleport_player(100, FALSE);
                                o_ptr->timeout = 45;
                                break;
                        }
@@ -4816,10 +4816,10 @@ msg_print("ŷ
                                switch (randint1(13))
                                {
                                case 1: case 2: case 3: case 4: case 5:
-                                       teleport_player(10);
+                                       teleport_player(10, FALSE);
                                        break;
                                case 6: case 7: case 8: case 9: case 10:
-                                       teleport_player(222);
+                                       teleport_player(222, FALSE);
                                        break;
                                case 11: case 12:
                                        (void)stair_creation();
@@ -4844,7 +4844,7 @@ if (get_check("
 
                        case ART_KAMUI:
                        {
-                               teleport_player(222);
+                               teleport_player(222, FALSE);
                                o_ptr->timeout = 25;
                                break;
                        }
@@ -5525,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;
                                        }
@@ -5817,7 +5818,7 @@ msg_print("
                return;
        }
 
-       if (item_tester_hook_smith(o_ptr))
+       if (object_is_smith(o_ptr))
        {
                switch (o_ptr->xtra3-1)
                {
@@ -5856,7 +5857,7 @@ msg_print("
 
        if (o_ptr->name2 == EGO_TRUMP)
        {
-               teleport_player(100);
+               teleport_player(100, FALSE);
                o_ptr->timeout = 50 + randint1(50);
 
                /* Window stuff */
@@ -5904,7 +5905,7 @@ msg_print("
 
        if (o_ptr->name2 == EGO_JUMP)
        {
-               teleport_player(10);
+               teleport_player(10, FALSE);
                o_ptr->timeout = 10 + randint1(10);
 
                /* Window stuff */
@@ -6137,7 +6138,7 @@ msg_print("
 
        else if (o_ptr->tval == TV_RING)
        {
-               if (o_ptr->name2)
+               if (object_is_ego(o_ptr))
                {
                        bool success = TRUE;
 
@@ -6312,7 +6313,7 @@ msg_print("
 
        else if (o_ptr->tval == TV_AMULET)
        {
-               if (o_ptr->name2)
+               if (object_is_ego(o_ptr))
                {
                        switch (o_ptr->name2)
                        {
@@ -6326,15 +6327,15 @@ msg_print("
                                o_ptr->timeout = 200;
                                break;
                        case EGO_AMU_JUMP:
-                               teleport_player(10);
+                               teleport_player(10, FALSE);
                                o_ptr->timeout = randint0(10) + 10;
                                break;
                        case EGO_AMU_TELEPORT:
-                               teleport_player(100);
+                               teleport_player(100, FALSE);
                                o_ptr->timeout = randint0(50) + 50;
                                break;
                        case EGO_AMU_D_DOOR:
-                               (void)dimension_door(FALSE);
+                               (void)dimension_door();
                                o_ptr->timeout = 200;
                                break;
                        case EGO_AMU_RES_FIRE_:
@@ -6365,7 +6366,7 @@ msg_print("
        else if (o_ptr->tval == TV_WHISTLE)
        {
 #if 0
-               if (cursed_p(o_ptr))
+               if (object_is_cursed(o_ptr))
                {
 #ifdef JP
                        msg_print("¥«¥ó¹â¤¤²»¤¬¶Á¤­ÅϤä¿¡£");
@@ -6473,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)))
                                {
@@ -6623,7 +6624,7 @@ static bool item_tester_hook_use(object_type *o_ptr)
                        int i;
 
                        /* Not known */
-                       if (!object_known_p(o_ptr)) return (FALSE);
+                       if (!object_is_known(o_ptr)) return (FALSE);
 
                        /* HACK - only items from the equipment can be activated */
                        for (i = INVEN_RARM; i < INVEN_TOTAL; i++)