OSDN Git Service

[Refactor] #38997 monster_can_*()にplayer_type * 引数を追加 / Added player_type * argument...
[hengband/hengband.git] / src / cmd / cmd-activate.c
index 15c6667..4bf735f 100644 (file)
@@ -377,23 +377,23 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
        /* Confusion hurts skill */
        if (user_ptr->confused) chance = chance / 2;
 
-       fail = lev+5;
-       if (chance > fail) fail -= (chance - fail)*2;
-       else chance -= (fail - chance)*2;
+       fail = lev + 5;
+       if (chance > fail) fail -= (chance - fail) * 2;
+       else chance -= (fail - chance) * 2;
        if (fail < USE_DEVICE) fail = USE_DEVICE;
        if (chance < USE_DEVICE) chance = USE_DEVICE;
 
-       if(cmd_limit_time_walk(user_ptr)) return;
+       if (cmd_limit_time_walk(user_ptr)) return;
 
        if (user_ptr->pclass == CLASS_BERSERKER) success = FALSE;
        else if (chance > fail)
        {
-               if (randint0(chance*2) < fail) success = FALSE;
+               if (randint0(chance * 2) < fail) success = FALSE;
                else success = TRUE;
        }
        else
        {
-               if (randint0(fail*2) < chance) success = TRUE;
+               if (randint0(fail * 2) < chance) success = TRUE;
                else success = FALSE;
        }
 
@@ -457,7 +457,7 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
                        for (pet_ctr = user_ptr->current_floor_ptr->m_max - 1; pet_ctr >= 1; pet_ctr--)
                        {
                                if (is_pet(&user_ptr->current_floor_ptr->m_list[pet_ctr]) && (user_ptr->riding != pet_ctr))
-                                 who[max_pet++] = pet_ctr;
+                                       who[max_pet++] = pet_ctr;
                        }
 
                        ang_sort(who, &dummy_why, max_pet, ang_sort_comp_pet, ang_sort_swap_hook);
@@ -466,7 +466,7 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
                        for (i = 0; i < max_pet; i++)
                        {
                                pet_ctr = who[i];
-                               teleport_monster_to(pet_ctr, user_ptr->y, user_ptr->x, 100, TELEPORT_PASSIVE);
+                               teleport_monster_to(user_ptr, pet_ctr, user_ptr->y, user_ptr->x, 100, TELEPORT_PASSIVE);
                        }
 
                        /* Free the "who" array */
@@ -477,18 +477,18 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
        }
        else if (o_ptr->tval == TV_CAPTURE)
        {
-               if(!o_ptr->pval)
+               if (!o_ptr->pval)
                {
                        bool old_target_pet = target_pet;
                        target_pet = TRUE;
-                       if (!get_aim_dir(&dir))
+                       if (!get_aim_dir(user_ptr, &dir))
                        {
                                target_pet = old_target_pet;
                                return;
                        }
                        target_pet = old_target_pet;
 
-                       if(fire_ball(GF_CAPTURE, dir, 0, 0))
+                       if (fire_ball(user_ptr, GF_CAPTURE, dir, 0, 0))
                        {
                                o_ptr->pval = (PARAMETER_VALUE)cap_mon;
                                o_ptr->xtra3 = (XTRA8)cap_mspeed;
@@ -503,7 +503,7 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
                                        if (o_ptr->inscription)
                                                strcpy(buf, quark_str(o_ptr->inscription));
                                        s = buf;
-                                       for (s = buf;*s && (*s != '#'); s++)
+                                       for (s = buf; *s && (*s != '#'); s++)
                                        {
 #ifdef JP
                                                if (iskanji(*s)) s++;
@@ -512,7 +512,7 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
                                        *s = '#';
                                        s++;
 #ifdef JP
- /*nothing*/
                                      /*nothing*/
 #else
                                        *s++ = '\'';
 #endif
@@ -524,7 +524,7 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
                                                t++;
                                        }
 #ifdef JP
- /*nothing*/
                                      /*nothing*/
 #else
                                        *s++ = '\'';
 #endif
@@ -536,10 +536,10 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
                else
                {
                        success = FALSE;
-                       if (!get_direction(&dir, FALSE, FALSE)) return;
-                       if (monster_can_enter(user_ptr->y + ddy[dir], user_ptr->x + ddx[dir], &r_info[o_ptr->pval], 0))
+                       if (!get_direction(user_ptr, &dir, FALSE, FALSE)) return;
+                       if (monster_can_enter(user_ptr, user_ptr->y + ddy[dir], user_ptr->x + ddx[dir], &r_info[o_ptr->pval], 0))
                        {
-                               if (place_monster_aux(0, user_ptr->y + ddy[dir], user_ptr->x + ddx[dir], o_ptr->pval, (PM_FORCE_PET | PM_NO_KAGE)))
+                               if (place_monster_aux(user_ptr, 0, user_ptr->y + ddy[dir], user_ptr->x + ddx[dir], o_ptr->pval, (PM_FORCE_PET | PM_NO_KAGE)))
                                {
                                        if (o_ptr->xtra3) user_ptr->current_floor_ptr->m_list[hack_m_idx_ii].mspeed = o_ptr->xtra3;
                                        if (o_ptr->xtra5) user_ptr->current_floor_ptr->m_list[hack_m_idx_ii].max_maxhp = o_ptr->xtra5;
@@ -549,12 +549,13 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
                                        {
                                                char buf[80];
                                                concptr t;
-#ifndef JP
+#ifdef JP
+#else
                                                bool quote = FALSE;
 #endif
 
                                                t = quark_str(o_ptr->inscription);
-                                               for (t = quark_str(o_ptr->inscription);*t && (*t != '#'); t++)
+                                               for (t = quark_str(o_ptr->inscription); *t && (*t != '#'); t++)
                                                {
 #ifdef JP
                                                        if (iskanji(*t)) t++;
@@ -567,13 +568,13 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
 #ifdef JP
                                                        /* nothing */
 #else
-                                                       if (*t =='\'')
+                                                       if (*t == '\'')
                                                        {
                                                                t++;
                                                                quote = TRUE;
                                                        }
 #endif
-                                                       while(*t)
+                                                       while (*t)
                                                        {
                                                                *s = *t;
                                                                t++;
@@ -582,14 +583,14 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
 #ifdef JP
                                                        /* nothing */
 #else
-                                                       if (quote && *(s-1) =='\'')
+                                                       if (quote && *(s - 1) == '\'')
                                                                s--;
 #endif
                                                        *s = '\0';
                                                        user_ptr->current_floor_ptr->m_list[hack_m_idx_ii].nickname = quark_add(buf);
                                                        t = quark_str(o_ptr->inscription);
                                                        s = buf;
-                                                       while(*t && (*t != '#'))
+                                                       while (*t && (*t != '#'))
                                                        {
                                                                *s = *t;
                                                                t++;
@@ -619,6 +620,7 @@ void exe_activate(player_type *user_ptr, INVENTORY_IDX item)
 
 /*!
  * @brief 装備を発動するコマンドのメインルーチン /
+ * @param user_ptr プレーヤーへの参照ポインタ
  * @return なし
  */
 void do_cmd_activate(player_type *user_ptr)
@@ -648,6 +650,7 @@ void do_cmd_activate(player_type *user_ptr)
 /*!
 * @brief 発動によるブレスの属性をアイテムの耐性から選択し、実行を処理する。/ Dragon breath activation
 * @details 対象となる耐性は dragonbreath_info テーブルを参照のこと。
+* @param user_ptr プレーヤーへの参照ポインタ
 * @param o_ptr 対象のオブジェクト構造体ポインタ
 * @return 発動実行の是非を返す。
 */
@@ -659,7 +662,7 @@ static bool activate_dragon_breath(player_type *user_ptr, object_type *o_ptr)
        int i, t, n = 0;
        DIRECTION dir;
 
-       if (!get_aim_dir(&dir)) return FALSE;
+       if (!get_aim_dir(user_ptr, &dir)) return FALSE;
 
        object_flags(o_ptr, flgs);
 
@@ -680,7 +683,7 @@ static bool activate_dragon_breath(player_type *user_ptr, object_type *o_ptr)
 
        t = randint0(n);
        msg_format(_("あなたは%sのブレスを吐いた。", "You breathe %s."), name[t]);
-       fire_breath(type[t], dir, 250, 4);
+       fire_breath(user_ptr, type[t], dir, 250, 4);
 
        return TRUE;
 }
@@ -688,6 +691,7 @@ static bool activate_dragon_breath(player_type *user_ptr, object_type *o_ptr)
 
 /*!
  * @brief アイテムの発動効果を処理する。
+ * @param user_ptr プレーヤーへの参照ポインタ
  * @param o_ptr 対象のオブジェクト構造体ポインタ
  * @return 発動実行の是非を返す。
  */
@@ -709,170 +713,170 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        {
        case ACT_SUNLIGHT:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
                msg_print(_("太陽光線が放たれた。", "A line of sunlight appears."));
-               (void)lite_line(dir, damroll(6, 8));
+               (void)lite_line(user_ptr, dir, damroll(6, 8));
                break;
        }
 
        case ACT_BO_MISS_1:
        {
                msg_print(_("それは眩しいくらいに明るく輝いている...", "It glows extremely brightly..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_bolt(GF_MISSILE, dir, damroll(2, 6));
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_bolt(user_ptr, GF_MISSILE, dir, damroll(2, 6));
                break;
        }
 
        case ACT_BA_POIS_1:
        {
                msg_print(_("それは濃緑色に脈動している...", "It throbs deep green..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_POIS, dir, 12, 3);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_POIS, dir, 12, 3);
                break;
        }
 
        case ACT_BO_ELEC_1:
        {
                msg_print(_("それは火花に覆われた...", "It is covered in sparks..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_bolt(GF_ELEC, dir, damroll(4, 8));
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_bolt(user_ptr, GF_ELEC, dir, damroll(4, 8));
                break;
        }
 
        case ACT_BO_ACID_1:
        {
                msg_print(_("それは酸に覆われた...", "It is covered in acid..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_bolt(GF_ACID, dir, damroll(5, 8));
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_bolt(user_ptr, GF_ACID, dir, damroll(5, 8));
                break;
        }
 
        case ACT_BO_COLD_1:
        {
                msg_print(_("それは霜に覆われた...", "It is covered in frost..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_bolt(GF_COLD, dir, damroll(6, 8));
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_bolt(user_ptr, GF_COLD, dir, damroll(6, 8));
                break;
        }
 
        case ACT_BO_FIRE_1:
        {
                msg_print(_("それは炎に覆われた...", "It is covered in fire..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_bolt(GF_FIRE, dir, damroll(9, 8));
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_bolt(user_ptr, GF_FIRE, dir, damroll(9, 8));
                break;
        }
 
        case ACT_BA_COLD_1:
        {
                msg_print(_("それは霜に覆われた...", "It is covered in frost..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_COLD, dir, 48, 2);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_COLD, dir, 48, 2);
                break;
        }
 
        case ACT_BA_COLD_2:
        {
                msg_print(_("それは青く激しく輝いた...", "It glows an intense blue..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_COLD, dir, 100, 2);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_COLD, dir, 100, 2);
                break;
        }
 
        case ACT_BA_COLD_3:
        {
                msg_print(_("明るく白色に輝いている...", "It glows bright white..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_COLD, dir, 400, 3);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_COLD, dir, 400, 3);
                break;
        }
 
        case ACT_BA_FIRE_1:
        {
                msg_print(_("それは赤く激しく輝いた...", "It glows an intense red..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_FIRE, dir, 72, 2);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_FIRE, dir, 72, 2);
                break;
        }
 
        case ACT_BA_FIRE_2:
        {
                msg_format(_("%sから炎が吹き出した...", "The %s rages in fire..."), name);
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_FIRE, dir, 120, 3);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_FIRE, dir, 120, 3);
                break;
        }
 
        case ACT_BA_FIRE_3:
        {
                msg_print(_("深赤色に輝いている...", "It glows deep red..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_FIRE, dir, 300, 3);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_FIRE, dir, 300, 3);
                break;
        }
 
        case ACT_BA_FIRE_4:
        {
                msg_print(_("それは赤く激しく輝いた...", "It glows an intense red..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_FIRE, dir, 100, 2);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_FIRE, dir, 100, 2);
                break;
        }
 
        case ACT_BA_ELEC_2:
        {
                msg_print(_("電気がパチパチ音を立てた...", "It crackles with electricity..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_ELEC, dir, 100, 3);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_ELEC, dir, 100, 3);
                break;
        }
 
        case ACT_BA_ELEC_3:
        {
                msg_print(_("深青色に輝いている...", "It glows deep blue..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_ELEC, dir, 500, 3);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_ELEC, dir, 500, 3);
                break;
        }
 
        case ACT_BA_ACID_1:
        {
                msg_print(_("それは黒く激しく輝いた...", "It glows an intense black..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_ACID, dir, 100, 2);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_ACID, dir, 100, 2);
                break;
        }
 
        case ACT_BA_NUKE_1:
        {
                msg_print(_("それは緑に激しく輝いた...", "It glows an intense green..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_NUKE, dir, 100, 2);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_NUKE, dir, 100, 2);
                break;
        }
 
        case ACT_HYPODYNAMIA_1:
        {
                msg_format(_("あなたは%sに敵を締め殺すよう命じた。", "You order the %s to strangle your opponent."), name);
-               if (!get_aim_dir(&dir)) return FALSE;
-               if (hypodynamic_bolt(dir, 100))
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               if (hypodynamic_bolt(user_ptr, dir, 100))
                        break;
        }
 
        case ACT_HYPODYNAMIA_2:
        {
                msg_print(_("黒く輝いている...", "It glows black..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               hypodynamic_bolt(dir, 120);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               hypodynamic_bolt(user_ptr, dir, 120);
                break;
        }
 
        case ACT_DRAIN_1:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
                for (dummy = 0; dummy < 3; dummy++)
                {
-                       if (hypodynamic_bolt(dir, 50))
+                       if (hypodynamic_bolt(user_ptr, dir, 50))
                                hp_player(user_ptr, 50);
                }
                break;
@@ -881,8 +885,8 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_BO_MISS_2:
        {
                msg_print(_("魔法のトゲが現れた...", "It grows magical spikes..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_bolt(GF_ARROW, dir, 150);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_bolt(user_ptr, GF_ARROW, dir, 150);
                break;
        }
 
@@ -894,10 +898,10 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 
        case ACT_DRAIN_2:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
                for (dummy = 0; dummy < 3; dummy++)
                {
-                       if (hypodynamic_bolt(dir, 100))
+                       if (hypodynamic_bolt(user_ptr, dir, 100))
                                hp_player(user_ptr, 100);
                }
                break;
@@ -907,91 +911,91 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_CALL_CHAOS:
        {
                msg_print(_("様々な色の火花を発している...", "It glows in scintillating colours..."));
-               call_chaos();
+               call_chaos(user_ptr);
                break;
        }
 
        case ACT_ROCKET:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
                msg_print(_("ロケットを発射した!", "You launch a rocket!"));
-               fire_ball(GF_ROCKET, dir, 250 + plev * 3, 2);
+               fire_ball(user_ptr, GF_ROCKET, dir, 250 + plev * 3, 2);
                break;
        }
 
        case ACT_DISP_EVIL:
        {
                msg_print(_("神聖な雰囲気が充満した...", "It floods the area with goodness..."));
-               dispel_evil(user_ptr->lev * 5);
+               dispel_evil(user_ptr, user_ptr->lev * 5);
                break;
        }
 
        case ACT_BA_MISS_3:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
                msg_print(_("あなたはエレメントのブレスを吐いた。", "You breathe the elements."));
-               fire_breath(GF_MISSILE, dir, 300, 4);
+               fire_breath(user_ptr, GF_MISSILE, dir, 300, 4);
                break;
        }
 
        case ACT_DISP_GOOD:
        {
                msg_print(_("邪悪な雰囲気が充満した...", "It floods the area with evil..."));
-               dispel_good(user_ptr->lev * 5);
+               dispel_good(user_ptr, user_ptr->lev * 5);
                break;
        }
 
        case ACT_BO_MANA:
        {
                msg_format(_("%sに魔法のトゲが現れた...", "The %s grows magical spikes..."), name);
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_bolt(GF_ARROW, dir, 150);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_bolt(user_ptr, GF_ARROW, dir, 150);
                break;
        }
 
        case ACT_BA_WATER:
        {
                msg_format(_("%sが深い青色に鼓動している...", "The %s throbs deep blue..."), name);
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_WATER, dir, 200, 3);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_WATER, dir, 200, 3);
                break;
        }
 
        case ACT_BA_DARK:
        {
                msg_format(_("%sが深い闇に覆われた...", "The %s is coverd in pitch-darkness..."), name);
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_DARK, dir, 250, 4);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_DARK, dir, 250, 4);
                break;
        }
 
        case ACT_BA_MANA:
        {
                msg_format(_("%sが青白く光った...", "The %s glows pale..."), name);
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_ball(GF_MANA, dir, 250, 4);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_ball(user_ptr, GF_MANA, dir, 250, 4);
                break;
        }
 
        case ACT_PESTICIDE:
        {
                msg_print(_("あなたは害虫を一掃した。", "You exterminate small life."));
-               (void)dispel_monsters(4);
+               (void)dispel_monsters(user_ptr, 4);
                break;
        }
 
        case ACT_BLINDING_LIGHT:
        {
                msg_format(_("%sが眩しい光で輝いた...", "The %s gleams with blinding light..."), name);
-               fire_ball(GF_LITE, 0, 300, 6);
-               confuse_monsters(3 * user_ptr->lev / 2);
+               fire_ball(user_ptr, GF_LITE, 0, 300, 6);
+               confuse_monsters(user_ptr, 3 * user_ptr->lev / 2);
                break;
        }
 
        case ACT_BIZARRE:
        {
                msg_format(_("%sは漆黒に輝いた...", "The %s glows intensely black..."), name);
-               if (!get_aim_dir(&dir)) return FALSE;
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
                ring_of_power(user_ptr, dir);
                break;
        }
@@ -1008,12 +1012,12 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 
                        while (attempts--)
                        {
-                               scatter(&y, &x, user_ptr->y, user_ptr->x, 4, 0);
-                               if (!cave_have_flag_bold(y, x, FF_PROJECT)) continue;
+                               scatter(user_ptr, &y, &x, user_ptr->y, user_ptr->x, 4, 0);
+                               if (!cave_have_flag_bold(user_ptr->current_floor_ptr, y, x, FF_PROJECT)) continue;
                                if (!player_bold(user_ptr, y, x)) break;
                        }
 
-                       project(0, 3, y, x, 150, GF_ELEC,
+                       project(user_ptr, 0, 3, y, x, 150, GF_ELEC,
                                (PROJECT_THRU | PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL), -1);
                }
 
@@ -1022,9 +1026,9 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 
        case ACT_BLADETURNER:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
                msg_print(_("あなたはエレメントのブレスを吐いた。", "You breathe the elements."));
-               fire_breath(GF_MISSILE, dir, 300, 4);
+               fire_breath(user_ptr, GF_MISSILE, dir, 300, 4);
                msg_print(_("鎧が様々な色に輝いた...", "Your armor glows many colours..."));
                (void)set_afraid(user_ptr, 0);
                (void)set_hero(user_ptr, randint1(50) + 50, FALSE);
@@ -1040,8 +1044,8 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 
        case ACT_BR_FIRE:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_breath(GF_FIRE, dir, 200, 2);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_breath(user_ptr, GF_FIRE, dir, 200, 2);
                if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES))
                {
                        (void)set_oppose_fire(user_ptr, randint1(20) + 20, FALSE);
@@ -1051,8 +1055,8 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 
        case ACT_BR_COLD:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
-               fire_breath(GF_COLD, dir, 200, 2);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               fire_breath(user_ptr, GF_COLD, dir, 200, 2);
                if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE))
                {
                        (void)set_oppose_cold(user_ptr, randint1(20) + 20, FALSE);
@@ -1070,15 +1074,15 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_CONFUSE:
        {
                msg_print(_("様々な色の火花を発している...", "It glows in scintillating colours..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               confuse_monster(dir, 20);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               confuse_monster(user_ptr, dir, 20);
                break;
        }
 
        case ACT_SLEEP:
        {
                msg_print(_("深青色に輝いている...", "It glows deep blue..."));
-               sleep_monsters_touch();
+               sleep_monsters_touch(user_ptr);
                break;
        }
 
@@ -1090,20 +1094,20 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 
        case ACT_TERROR:
        {
-               turn_monsters(40 + user_ptr->lev);
+               turn_monsters(user_ptr, 40 + user_ptr->lev);
                break;
        }
 
        case ACT_TELE_AWAY:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
-               (void)fire_beam(GF_AWAY_ALL, dir, plev);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               (void)fire_beam(user_ptr, GF_AWAY_ALL, dir, plev);
                break;
        }
 
        case ACT_BANISH_EVIL:
        {
-               if (banish_evil(100))
+               if (banish_evil(user_ptr, 100))
                {
                        msg_print(_("アーティファクトの力が邪悪を打ち払った!", "The power of the artifact banishes evil!"));
                }
@@ -1113,14 +1117,14 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_GENOCIDE:
        {
                msg_print(_("深青色に輝いている...", "It glows deep blue..."));
-               (void)symbol_genocide(200, TRUE);
+               (void)symbol_genocide(user_ptr, 200, TRUE);
                break;
        }
 
        case ACT_MASS_GENO:
        {
                msg_print(_("ひどく鋭い音が流れ出た...", "It lets out a long, shrill note..."));
-               (void)mass_genocide(200, TRUE);
+               (void)mass_genocide(user_ptr, 200, TRUE);
                break;
        }
 
@@ -1130,7 +1134,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
                if (hex_spelling_any(user_ptr)) stop_hex_spell_all(user_ptr);
                msg_print(_("あなたは力強い突風を吹き鳴らした。周囲の敵が震え上っている!",
                        "You wind a mighty blast; your enemies tremble!"));
-               (void)turn_monsters((3 * user_ptr->lev / 2) + 10);
+               (void)turn_monsters(user_ptr, (3 * user_ptr->lev / 2) + 10);
                break;
        }
 
@@ -1144,7 +1148,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
                {
                        msg_format(_("%sは不快な物音を立てた。", "The %s sounds an unpleasant noise."), name);
                }
-               aggravate_monsters(0);
+               aggravate_monsters(user_ptr, 0);
                break;
        }
 
@@ -1152,47 +1156,47 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 
        case ACT_CHARM_ANIMAL:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
-               (void)charm_animal(dir, plev);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               (void)charm_animal(user_ptr, dir, plev);
                break;
        }
 
        case ACT_CHARM_UNDEAD:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
-               (void)control_one_undead(dir, plev);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               (void)control_one_undead(user_ptr, dir, plev);
                break;
        }
 
        case ACT_CHARM_OTHER:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
-               (void)charm_monster(dir, plev * 2);
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               (void)charm_monster(user_ptr, dir, plev * 2);
                break;
        }
 
        case ACT_CHARM_ANIMALS:
        {
-               (void)charm_animals(plev * 2);
+               (void)charm_animals(user_ptr, plev * 2);
                break;
        }
 
        case ACT_CHARM_OTHERS:
        {
-               charm_monsters(plev * 2);
+               charm_monsters(user_ptr, plev * 2);
                break;
        }
 
        case ACT_SUMMON_ANIMAL:
        {
-               (void)summon_specific(-1, user_ptr->y, user_ptr->x, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET));
+               (void)summon_specific(user_ptr, -1, user_ptr->y, user_ptr->x, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET));
                break;
        }
 
        case ACT_SUMMON_PHANTOM:
        {
                msg_print(_("幻霊を召喚した。", "You summon a phantasmal servant."));
-               (void)summon_specific(-1, user_ptr->y, user_ptr->x, user_ptr->current_floor_ptr->dun_level, SUMMON_PHANTOM, (PM_ALLOW_GROUP | PM_FORCE_PET));
+               (void)summon_specific(user_ptr, -1, user_ptr->y, user_ptr->x, user_ptr->current_floor_ptr->dun_level, SUMMON_PHANTOM, (PM_ALLOW_GROUP | PM_FORCE_PET));
                break;
        }
 
@@ -1217,7 +1221,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_SUMMON_DAWN:
        {
                msg_print(_("暁の師団を召喚した。", "You summon the Legion of the Dawn."));
-               (void)summon_specific(-1, user_ptr->y, user_ptr->x, user_ptr->current_floor_ptr->dun_level, SUMMON_DAWN, (PM_ALLOW_GROUP | PM_FORCE_PET));
+               (void)summon_specific(user_ptr, -1, user_ptr->y, user_ptr->x, user_ptr->current_floor_ptr->dun_level, SUMMON_DAWN, (PM_ALLOW_GROUP | PM_FORCE_PET));
                break;
        }
 
@@ -1379,8 +1383,8 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
                msg_format(_("%sが黒く輝いた...", "The %s grows black."), name);
                if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ACID))
                {
-                       if (!get_aim_dir(&dir)) return FALSE;
-                       fire_ball(GF_ACID, dir, 100, 2);
+                       if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+                       fire_ball(user_ptr, GF_ACID, dir, 100, 2);
                }
                (void)set_oppose_acid(user_ptr, randint1(20) + 20, FALSE);
                break;
@@ -1391,8 +1395,8 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
                msg_format(_("%sが赤く輝いた...", "The %s grows red."), name);
                if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES))
                {
-                       if (!get_aim_dir(&dir)) return FALSE;
-                       fire_ball(GF_FIRE, dir, 100, 2);
+                       if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+                       fire_ball(user_ptr, GF_FIRE, dir, 100, 2);
                }
                (void)set_oppose_fire(user_ptr, randint1(20) + 20, FALSE);
                break;
@@ -1403,8 +1407,8 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
                msg_format(_("%sが白く輝いた...", "The %s grows white."), name);
                if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE))
                {
-                       if (!get_aim_dir(&dir)) return FALSE;
-                       fire_ball(GF_COLD, dir, 100, 2);
+                       if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+                       fire_ball(user_ptr, GF_COLD, dir, 100, 2);
                }
                (void)set_oppose_cold(user_ptr, randint1(20) + 20, FALSE);
                break;
@@ -1415,8 +1419,8 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
                msg_format(_("%sが青く輝いた...", "The %s grows blue."), name);
                if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ELEC))
                {
-                       if (!get_aim_dir(&dir)) return FALSE;
-                       fire_ball(GF_ELEC, dir, 100, 2);
+                       if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+                       fire_ball(user_ptr, GF_ELEC, dir, 100, 2);
                }
                (void)set_oppose_elec(user_ptr, randint1(20) + 20, FALSE);
                break;
@@ -1434,7 +1438,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_LIGHT:
        {
                msg_format(_("%sから澄んだ光があふれ出た...", "The %s wells with clear light..."), name);
-               lite_area(damroll(2, 15), 3);
+               lite_area(user_ptr, damroll(2, 15), 3);
                break;
        }
 
@@ -1442,7 +1446,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        {
                msg_print(_("眩しく輝いた...", "It shines brightly..."));
                map_area(user_ptr, DETECT_RAD_MAP);
-               lite_area(damroll(2, 15), 3);
+               lite_area(user_ptr, damroll(2, 15), 3);
                break;
        }
 
@@ -1450,23 +1454,23 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        {
                msg_print(_("白く明るく輝いている...", "It glows bright white..."));
                msg_print(_("心にイメージが浮かんできた...", "An image forms in your mind..."));
-               detect_all(DETECT_RAD_DEFAULT);
+               detect_all(user_ptr, DETECT_RAD_DEFAULT);
                break;
        }
 
        case ACT_DETECT_XTRA:
        {
                msg_print(_("明るく輝いている...", "It glows brightly..."));
-               detect_all(DETECT_RAD_DEFAULT);
-               probing();
-               identify_fully(FALSE);
+               detect_all(user_ptr, DETECT_RAD_DEFAULT);
+               probing(user_ptr);
+               identify_fully(user_ptr, FALSE);
                break;
        }
 
        case ACT_ID_FULL:
        {
                msg_print(_("黄色く輝いている...", "It glows yellow..."));
-               identify_fully(FALSE);
+               identify_fully(user_ptr, FALSE);
                break;
        }
 
@@ -1479,7 +1483,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_RUNE_EXPLO:
        {
                msg_print(_("明るい赤色に輝いている...", "It glows bright red..."));
-               explosive_rune(user_ptr->current_floor_ptr, user_ptr->y, user_ptr->x);
+               explosive_rune(user_ptr, user_ptr->y, user_ptr->x);
                break;
        }
 
@@ -1499,35 +1503,35 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_DEST_DOOR:
        {
                msg_print(_("明るい赤色に輝いている...", "It glows bright red..."));
-               destroy_doors_touch();
+               destroy_doors_touch(user_ptr);
                break;
        }
 
        case ACT_STONE_MUD:
        {
                msg_print(_("鼓動している...", "It pulsates..."));
-               if (!get_aim_dir(&dir)) return FALSE;
-               wall_to_mud(dir, 20 + randint1(30));
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
+               wall_to_mud(user_ptr, dir, 20 + randint1(30));
                break;
        }
 
        case ACT_RECHARGE:
        {
-               recharge(130);
+               recharge(user_ptr, 130);
                break;
        }
 
        case ACT_ALCHEMY:
        {
                msg_print(_("明るい黄色に輝いている...", "It glows bright yellow..."));
-               (void)alchemy();
+               (void)alchemy(user_ptr);
                break;
        }
 
        case ACT_DIM_DOOR:
        {
                msg_print(_("次元の扉が開いた。目的地を選んで下さい。", "You open a dimensional gate. Choose a destination."));
-               if (!dimension_door()) return FALSE;
+               if (!dimension_door(user_ptr)) return FALSE;
                break;
        }
 
@@ -1556,9 +1560,9 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
                msg_format(_("%sはあなたの体力を奪った...", "The %s drains your vitality..."), name);
                take_hit(user_ptr, DAMAGE_LOSELIFE, damroll(3, 8), _("審判の宝石", "the Jewel of Judgement"), -1);
 
-               (void)detect_traps(DETECT_RAD_DEFAULT, TRUE);
-               (void)detect_doors(DETECT_RAD_DEFAULT);
-               (void)detect_stairs(DETECT_RAD_DEFAULT);
+               (void)detect_traps(user_ptr, DETECT_RAD_DEFAULT, TRUE);
+               (void)detect_doors(user_ptr, DETECT_RAD_DEFAULT);
+               (void)detect_stairs(user_ptr, DETECT_RAD_DEFAULT);
 
                if (get_check(_("帰還の力を使いますか?", "Activate recall? ")))
                {
@@ -1570,7 +1574,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 
        case ACT_TELEKINESIS:
        {
-               if (!get_aim_dir(&dir)) return FALSE;
+               if (!get_aim_dir(user_ptr, &dir)) return FALSE;
                msg_format(_("%sを伸ばした。", "You stretched your %s."), name);
                fetch(user_ptr, dir, 500, TRUE);
                break;
@@ -1616,7 +1620,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
                default:
                        if (get_check(_("この階を去りますか?", "Leave this level? ")))
                        {
-                               if (autosave_l) do_cmd_save_game(TRUE);
+                               if (autosave_l) do_cmd_save_game(user_ptr, TRUE);
                                user_ptr->leaving = TRUE;
                        }
                }
@@ -1627,21 +1631,21 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        {
                msg_format(_("%sが真実を照らし出す...", "The %s exhibits the truth..."), name);
                (void)remove_all_curse(user_ptr);
-               (void)probing();
+               (void)probing(user_ptr);
                break;
        }
 
        case ACT_BRAND_FIRE_BOLTS:
        {
                msg_format(_("%sが深紅に輝いた...", "Your %s glows deep red..."), name);
-               (void)brand_bolts();
+               brand_bolts(user_ptr);
                break;
        }
 
        case ACT_RECHARGE_XTRA:
        {
                msg_format(_("%sが白く輝いた...", "The %s gleams with blinding light..."), name);
-               if (!recharge(1000)) return FALSE;
+               if (!recharge(user_ptr, 1000)) return FALSE;
                break;
        }
 
@@ -1655,7 +1659,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
                msg_print(_("力強く四股を踏んだ。", "You stamp. (as if you are in a ring.)"));
                (void)set_afraid(user_ptr, 0);
                (void)set_hero(user_ptr, randint1(20) + 20, FALSE);
-               dispel_evil(user_ptr->lev * 3);
+               dispel_evil(user_ptr, user_ptr->lev * 3);
                break;
        }
 
@@ -1667,8 +1671,8 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 
        case ACT_DETECT_ALL_MONS:
        {
-               (void)detect_monsters_invis(255);
-               (void)detect_monsters_normal(255);
+               (void)detect_monsters_invis(user_ptr, 255);
+               (void)detect_monsters_normal(user_ptr, 255);
                break;
        }
 
@@ -1703,7 +1707,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_GRAND_CROSS:
        {
                msg_print(_("「闇に還れ!」", "You say, 'Return to darkness!'"));
-               project(0, 8, user_ptr->y, user_ptr->x, (randint1(100) + 200) * 2, GF_HOLY_FIRE, PROJECT_KILL | PROJECT_ITEM | PROJECT_GRID, -1);
+               project(user_ptr, 0, 8, user_ptr->y, user_ptr->x, (randint1(100) + 200) * 2, GF_HOLY_FIRE, PROJECT_KILL | PROJECT_ITEM | PROJECT_GRID, -1);
                break;
        }
 
@@ -1803,5 +1807,3 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
 
        return TRUE;
 }
-
-