OSDN Git Service

[Refactor] #37353 癒し系の効果をtrue_healing()にまとめる。
[hengband/hengband.git] / src / cmd-activate.c
index eeb9399..f6b8476 100644 (file)
@@ -1122,12 +1122,7 @@ bool activate_artifact(object_type *o_ptr)
        case ACT_REST_ALL:
        {
                msg_print(_("濃緑色に輝いている...", "It glows a deep green..."));
-               (void)do_res_stat(A_STR);
-               (void)do_res_stat(A_INT);
-               (void)do_res_stat(A_WIS);
-               (void)do_res_stat(A_DEX);
-               (void)do_res_stat(A_CON);
-               (void)do_res_stat(A_CHR);
+               (void)restore_all_status();
                (void)restore_level();
                break;
        }
@@ -1151,45 +1146,14 @@ bool activate_artifact(object_type *o_ptr)
        case ACT_CURING:
        {
                msg_format(_("%sの優しさに癒される...", "the %s cures you affectionately ..."), name);
-               (void)set_poisoned(0);
-               (void)set_confused(0);
-               (void)set_blind(0);
-               (void)set_stun(0);
-               (void)set_cut(0);
-               (void)set_image(0);
-
+               true_healing(0);
                break;
        }
 
        case ACT_CURE_MANA_FULL:
        {
                msg_format(_("%sが青白く光った...", "The %s glows pale..."), name);
-               if (p_ptr->pclass == CLASS_MAGIC_EATER)
-               {
-                       int i;
-                       for (i = 0; i < EATER_EXT * 2; i++)
-                       {
-                               p_ptr->magic_num1[i] += (p_ptr->magic_num2[i] < 10) ? EATER_CHARGE * 3 : p_ptr->magic_num2[i] * EATER_CHARGE / 3;
-                               if (p_ptr->magic_num1[i] > p_ptr->magic_num2[i] * EATER_CHARGE) p_ptr->magic_num1[i] = p_ptr->magic_num2[i] * EATER_CHARGE;
-                       }
-                       for (; i < EATER_EXT * 3; i++)
-                       {
-                               KIND_OBJECT_IDX k_idx = lookup_kind(TV_ROD, i - EATER_EXT * 2);
-                               p_ptr->magic_num1[i] -= ((p_ptr->magic_num2[i] < 10) ? EATER_ROD_CHARGE * 3 : p_ptr->magic_num2[i] * EATER_ROD_CHARGE / 3)*k_info[k_idx].pval;
-                               if (p_ptr->magic_num1[i] < 0) p_ptr->magic_num1[i] = 0;
-                       }
-                       msg_print(_("頭がハッキリとした。", "You feel your head clear."));
-                       p_ptr->window |= (PW_PLAYER);
-               }
-               else if (p_ptr->csp < p_ptr->msp)
-               {
-                       p_ptr->csp = p_ptr->msp;
-                       p_ptr->csp_frac = 0;
-                       msg_print(_("頭がハッキリとした。", "You feel your head clear."));
-                       p_ptr->redraw |= (PR_MANA);
-                       p_ptr->window |= (PW_PLAYER);
-                       p_ptr->window |= (PW_SPELL);
-               }
+               restore_mana(TRUE);
                break;
        }