OSDN Git Service

[Refactor] #37353 癒し系の効果をtrue_healing()にまとめる。
[hengband/hengband.git] / src / cmd-usestaff.c
index 2903cdc..202e404 100644 (file)
@@ -116,7 +116,7 @@ int staff_effect(OBJECT_SUBTYPE_VALUE sval, bool *use_charge, bool powerful, boo
                        }\r
 \r
                        project(0, 0, y, x, damroll(6 + lev / 8, 10), GF_LITE_WEAK,\r
-                               (PROJECT_BEAM | PROJECT_THRU | PROJECT_GRID | PROJECT_KILL), -1);\r
+                               (PROJECT_BEAM | PROJECT_THRU | PROJECT_GRID | PROJECT_KILL | PROJECT_LOS), -1);\r
                }\r
                ident = TRUE;\r
                break;\r
@@ -175,51 +175,27 @@ int staff_effect(OBJECT_SUBTYPE_VALUE sval, bool *use_charge, bool powerful, boo
 \r
        case SV_STAFF_CURE_LIGHT:\r
        {\r
-               if (hp_player(damroll((powerful ? 4 : 2), 8))) ident = TRUE;\r
-               if (powerful) {\r
-                       if (set_blind(0)) ident = TRUE;\r
-                       if (set_poisoned(0)) ident = TRUE;\r
-                       if (set_cut(p_ptr->cut - 10)) ident = TRUE;\r
-               }\r
-               if (set_shero(0, TRUE)) ident = TRUE;\r
+               ident = cure_light_wounds((powerful ? 4 : 2), 8);\r
                break;\r
        }\r
 \r
        case SV_STAFF_CURING:\r
        {\r
-               if (set_blind(0)) ident = TRUE;\r
-               if (set_poisoned(0)) ident = TRUE;\r
-               if (set_confused(0)) ident = TRUE;\r
-               if (set_stun(0)) ident = TRUE;\r
-               if (set_cut(0)) ident = TRUE;\r
-               if (set_image(0)) ident = TRUE;\r
+               ident = true_healing(0);\r
                if (set_shero(0, TRUE)) ident = TRUE;\r
                break;\r
        }\r
 \r
        case SV_STAFF_HEALING:\r
        {\r
-               if (hp_player(powerful ? 500 : 300)) ident = TRUE;\r
-               if (set_stun(0)) ident = TRUE;\r
-               if (set_cut(0)) ident = TRUE;\r
-               if (set_shero(0, TRUE)) ident = TRUE;\r
+               if (cure_critical_wounds(powerful ? 500 : 300)) ident = TRUE;\r
                break;\r
        }\r
 \r
        case SV_STAFF_THE_MAGI:\r
        {\r
                if (do_res_stat(A_INT)) ident = TRUE;\r
-               if (p_ptr->csp < p_ptr->msp)\r
-               {\r
-                       p_ptr->csp = p_ptr->msp;\r
-                       p_ptr->csp_frac = 0;\r
-                       ident = TRUE;\r
-                       msg_print(_("頭がハッキリとした。", "You feel your head clear."));\r
-\r
-                       p_ptr->redraw |= (PR_MANA);\r
-                       p_ptr->window |= (PW_PLAYER);\r
-                       p_ptr->window |= (PW_SPELL);\r
-               }\r
+               ident |= restore_mana(FALSE);\r
                if (set_shero(0, TRUE)) ident = TRUE;\r
                break;\r
        }\r