OSDN Git Service

[Refactor] #38993 m_list と max_m_idx を floor_type に取り込む。 / Move m_list and max_m_idx...
[hengband/hengband.git] / src / mspells4.c
index 666a17e..72dfccc 100644 (file)
@@ -9,6 +9,9 @@
 #include "angband.h"
 #include "projection.h"
 #include "spells-summon.h"
+#include "artifact.h"
+#include "player-status.h"
+#include "realm-hex.h"
 
 /*!
 * @brief モンスターIDを取り、モンスター名をm_nameに代入する /
@@ -17,7 +20,7 @@
 */
 void monster_name(MONSTER_IDX m_idx, char* m_name)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        monster_desc(m_name, m_ptr, 0x00);
 }
 
@@ -29,8 +32,8 @@ void monster_name(MONSTER_IDX m_idx, char* m_name)
 */
 bool monster_near_player(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        return (m_ptr->cdis <= MAX_SIGHT) || (t_ptr->cdis <= MAX_SIGHT);
 }
 
@@ -41,7 +44,7 @@ bool monster_near_player(MONSTER_IDX m_idx, MONSTER_IDX t_idx)
 */
 bool see_monster(MONSTER_IDX m_idx)
 {
-       monster_type *m_ptr = &m_list[m_idx];
+       monster_type *m_ptr = &current_floor_ptr->m_list[m_idx];
        return is_seen(m_ptr);
 }
 
@@ -52,7 +55,7 @@ bool see_monster(MONSTER_IDX m_idx)
 */
 bool spell_learnable(MONSTER_IDX m_idx)
 {
-       monster_type *m_ptr = &m_list[m_idx];
+       monster_type *m_ptr = &current_floor_ptr->m_list[m_idx];
        /* Extract the "see-able-ness" */
        bool seen = (!p_ptr->blind && m_ptr->ml);
 
@@ -67,7 +70,7 @@ bool spell_learnable(MONSTER_IDX m_idx)
 */
 int monster_level_idx(MONSTER_IDX m_idx)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
        int rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
        return rlev;
@@ -80,7 +83,7 @@ int monster_level_idx(MONSTER_IDX m_idx)
 */
 bool monster_is_powerful(MONSTER_IDX m_idx)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
        bool powerful = r_ptr->flags2 & RF2_POWERFUL ? TRUE : FALSE;
        return powerful;
@@ -94,7 +97,7 @@ bool monster_is_powerful(MONSTER_IDX m_idx)
 u32b monster_u_mode(MONSTER_IDX m_idx)
 {
        u32b u_mode = 0L;
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        bool pet = is_pet(m_ptr);
        if (!pet) u_mode |= PM_ALLOW_UNIQUE;
        return u_mode;
@@ -313,7 +316,7 @@ HIT_POINT spell_RF4_BREATH(int GF_TYPE, POSITION y, POSITION x, MONSTER_IDX m_id
        HIT_POINT dam, ms_type, drs_type = 0;
        concptr type_s;
        bool smart_learn_aux = TRUE;
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        bool known = monster_near_player(m_idx, t_idx);
        bool see_either = see_monster(m_idx) || see_monster(t_idx);
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
@@ -629,7 +632,7 @@ HIT_POINT spell_RF5_BA_ELEC(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_I
 HIT_POINT spell_RF5_BA_FIRE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam, rad;
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
 
        if (m_ptr->r_idx == MON_ROLENTO)
        {
@@ -877,7 +880,7 @@ HIT_POINT spell_RF5_DRAIN_MANA(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTE
 */
 HIT_POINT spell_RF5_MIND_BLAST(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        bool seen = (!p_ptr->blind && m_ptr->ml);
        HIT_POINT dam;
        GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
@@ -914,7 +917,7 @@ HIT_POINT spell_RF5_MIND_BLAST(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTE
 */
 HIT_POINT spell_RF5_BRAIN_SMASH(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type *m_ptr = &m_list[m_idx];
+       monster_type *m_ptr = &current_floor_ptr->m_list[m_idx];
        bool seen = (!p_ptr->blind && m_ptr->ml);
        HIT_POINT dam;
        GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
@@ -1464,7 +1467,7 @@ void spell_badstatus_message(MONSTER_IDX m_idx, MONSTER_IDX t_idx, concptr msg1,
  */
 void spell_RF5_SCARE(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
        int rlev = monster_level_idx(m_idx);
        bool resist, saving_throw;
@@ -1514,7 +1517,7 @@ void spell_RF5_SCARE(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
  */
 void spell_RF5_BLIND(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
        int rlev = monster_level_idx(m_idx);
        bool resist, saving_throw;
@@ -1577,7 +1580,7 @@ void spell_RF5_BLIND(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
  */
 void spell_RF5_CONF(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
        int rlev = monster_level_idx(m_idx);
        bool resist, saving_throw;
@@ -1627,7 +1630,7 @@ void spell_RF5_CONF(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
  */
 void spell_RF5_SLOW(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
        int rlev = monster_level_idx(m_idx);
        bool resist, saving_throw;
@@ -1690,7 +1693,7 @@ void spell_RF5_SLOW(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
  */
 void spell_RF5_HOLD(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
        int rlev = monster_level_idx(m_idx);
        bool resist, saving_throw;
@@ -1741,7 +1744,7 @@ void spell_RF5_HOLD(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 void spell_RF6_HASTE(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        bool see_m = see_monster(m_idx);
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
 
@@ -1800,7 +1803,7 @@ HIT_POINT spell_RF6_HAND_DOOM(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER
 */
 void spell_RF6_HEAL(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        int rlev = monster_level_idx(m_idx);
        bool seen = (!p_ptr->blind && m_ptr->ml);
        GAME_TEXT m_name[MAX_NLEN];
@@ -1866,7 +1869,7 @@ void spell_RF6_HEAL(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 */
 void spell_RF6_INVULNER(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        bool seen = (!p_ptr->blind && m_ptr->ml);
 
        monspell_message_base(m_idx, t_idx,
@@ -1943,7 +1946,7 @@ void spell_RF6_TPORT(MONSTER_IDX m_idx, int TARGET_TYPE)
 */
 HIT_POINT spell_RF6_WORLD(MONSTER_IDX m_idx)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        MONSTER_IDX who = 0;
        GAME_TEXT m_name[MAX_NLEN];
        monster_name(m_idx, m_name);
@@ -1961,7 +1964,7 @@ HIT_POINT spell_RF6_WORLD(MONSTER_IDX m_idx)
 */
 HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx)
 {
-       monster_type *m_ptr = &m_list[m_idx];
+       monster_type *m_ptr = &current_floor_ptr->m_list[m_idx];
        HIT_POINT dummy_hp, dummy_maxhp;
        MONSTER_IDX k;
        POSITION dummy_y = m_ptr->fy;
@@ -1977,13 +1980,13 @@ HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx)
                        if (p_ptr->inside_arena || p_ptr->inside_battle || !summon_possible(m_ptr->fy, m_ptr->fx)) 
                                return -1;
 
-                       delete_monster_idx(cave[m_ptr->fy][m_ptr->fx].m_idx);
+                       delete_monster_idx(current_floor_ptr->grid_array[m_ptr->fy][m_ptr->fx].m_idx);
                        summon_named_creature(0, dummy_y, dummy_x, MON_BANOR, mode);
-                       m_list[hack_m_idx_ii].hp = dummy_hp;
-                       m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
+                       current_floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp;
+                       current_floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
                        summon_named_creature(0, dummy_y, dummy_x, MON_LUPART, mode);
-                       m_list[hack_m_idx_ii].hp = dummy_hp;
-                       m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
+                       current_floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp;
+                       current_floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
 
                        msg_print(_("『バーノール・ルパート』が分裂した!","Banor=Rupart splits in two person!"));
                        break;
@@ -1998,21 +2001,21 @@ HIT_POINT spell_RF6_SPECIAL_BANORLUPART(MONSTER_IDX m_idx)
 
                        for (k = 1; k < m_max; k++)
                        {
-                               if (m_list[k].r_idx == MON_BANOR || m_list[k].r_idx == MON_LUPART)
+                               if (current_floor_ptr->m_list[k].r_idx == MON_BANOR || current_floor_ptr->m_list[k].r_idx == MON_LUPART)
                                {
-                                       dummy_hp += m_list[k].hp;
-                                       dummy_maxhp += m_list[k].maxhp;
-                                       if (m_list[k].r_idx != m_ptr->r_idx)
+                                       dummy_hp += current_floor_ptr->m_list[k].hp;
+                                       dummy_maxhp += current_floor_ptr->m_list[k].maxhp;
+                                       if (current_floor_ptr->m_list[k].r_idx != m_ptr->r_idx)
                                        {
-                                               dummy_y = m_list[k].fy;
-                                               dummy_x = m_list[k].fx;
+                                               dummy_y = current_floor_ptr->m_list[k].fy;
+                                               dummy_x = current_floor_ptr->m_list[k].fx;
                                        }
                                        delete_monster_idx(k);
                                }
                        }
                        summon_named_creature(0, dummy_y, dummy_x, MON_BANORLUPART, mode);
-                       m_list[hack_m_idx_ii].hp = dummy_hp;
-                       m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
+                       current_floor_ptr->m_list[hack_m_idx_ii].hp = dummy_hp;
+                       current_floor_ptr->m_list[hack_m_idx_ii].maxhp = dummy_maxhp;
 
                        msg_print(_("『バーノール』と『ルパート』が合体した!", "Banor and Rupart combine into one!"));
                        break;
@@ -2064,8 +2067,8 @@ HIT_POINT spell_RF6_SPECIAL_ROLENTO(POSITION y, POSITION x, MONSTER_IDX m_idx, M
 HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        HIT_POINT dam = -1;
-       monster_type    *m_ptr = &m_list[m_idx];
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
        bool monster_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
        bool monster_to_monster = (TARGET_TYPE == MONSTER_TO_MONSTER);
@@ -2141,7 +2144,7 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER
                }
 
                if(monster_to_player && p_ptr->riding)
-                       mon_take_hit_mon(p_ptr->riding, dam, &dead, &fear, extract_note_dies(real_r_idx(&m_list[p_ptr->riding])), m_idx);
+                       mon_take_hit_mon(p_ptr->riding, dam, &dead, &fear, extract_note_dies(real_r_idx(&current_floor_ptr->m_list[p_ptr->riding])), m_idx);
 
                if(monster_to_monster)
                        mon_take_hit_mon(t_idx, dam, &dead, &fear, extract_note_dies(real_r_idx(t_ptr)), m_idx);
@@ -2160,7 +2163,7 @@ HIT_POINT spell_RF6_SPECIAL_B(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER
 */
 HIT_POINT spell_RF6_SPECIAL(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
 
        disturb(TRUE, TRUE);
@@ -2200,8 +2203,8 @@ HIT_POINT spell_RF6_SPECIAL(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_I
 */
 void spell_RF6_TELE_TO(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
 
        simple_monspell_message(m_idx, t_idx,
@@ -2262,7 +2265,7 @@ void spell_RF6_TELE_TO(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 */
 void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
 
        simple_monspell_message(m_idx, t_idx,
@@ -2331,7 +2334,7 @@ void spell_RF6_TELE_AWAY(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 */
 void spell_RF6_TELE_LEVEL(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        monster_race    *tr_ptr = &r_info[t_ptr->r_idx];
        int rlev = monster_level_idx(m_idx);
        bool resist, saving_throw;
@@ -2408,8 +2411,8 @@ HIT_POINT spell_RF6_PSY_SPEAR(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER
 */
 void spell_RF6_DARKNESS(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
-       monster_type    *t_ptr = &m_list[t_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
+       monster_type    *t_ptr = &current_floor_ptr->m_list[t_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
        bool can_use_lite_area = FALSE;
        bool monster_to_monster = TARGET_TYPE == MONSTER_TO_MONSTER;
@@ -2538,7 +2541,7 @@ void spell_RF6_FORGET(MONSTER_IDX m_idx)
 */
 void spell_RF6_RAISE_DEAD(MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
-       monster_type *m_ptr = &m_list[m_idx];
+       monster_type *m_ptr = &current_floor_ptr->m_list[m_idx];
 
        monspell_message(m_idx, t_idx,
                _("%^sが何かをつぶやいた。", "%^s mumbles."),
@@ -2677,7 +2680,7 @@ MONSTER_NUMBER summon_LOUSE(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
 MONSTER_NUMBER summon_Kin(POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
 {
        int k, count = 0;
-       monster_type *m_ptr = &m_list[m_idx];
+       monster_type *m_ptr = &current_floor_ptr->m_list[m_idx];
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
        for (k = 0; k < 4; k++)
@@ -2702,7 +2705,7 @@ void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_id
        bool see_either = see_monster(m_idx) || see_monster(t_idx);
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
        bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
        int rlev = monster_level_idx(m_idx);
        int count = 0;
@@ -2792,7 +2795,7 @@ void spell_RF6_S_KIN(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_id
 void spell_RF6_S_CYBER(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0;
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        int rlev = monster_level_idx(m_idx);
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
        bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
@@ -3044,7 +3047,7 @@ void spell_RF6_S_ANGEL(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_
 {
        int count = 0, k;
        int num = 1;
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
        int rlev = monster_level_idx(m_idx);
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
@@ -3250,7 +3253,7 @@ void spell_RF6_S_HI_UNDEAD(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_ID
 {
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
        bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        int rlev = monster_level_idx(m_idx);
        int k, count = 0;
        GAME_TEXT m_name[MAX_NLEN];
@@ -3378,7 +3381,7 @@ void spell_RF6_S_AMBERITES(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_ID
 void spell_RF6_S_UNIQUE(POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int TARGET_TYPE)
 {
        int count = 0, k;
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        int rlev = monster_level_idx(m_idx);
        bool mon_to_mon = (TARGET_TYPE == MONSTER_TO_MONSTER);
        bool mon_to_player = (TARGET_TYPE == MONSTER_TO_PLAYER);
@@ -4103,7 +4106,7 @@ HIT_POINT monspell_damage_base(int SPELL_NUM, int hp, int rlev, bool powerful, i
 */
 HIT_POINT monspell_damage(int SPELL_NUM, MONSTER_IDX m_idx, int TYPE)
 {
-       monster_type    *m_ptr = &m_list[m_idx];
+       monster_type    *m_ptr = &current_floor_ptr->m_list[m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
        int hp;
        int rlev = monster_level_idx(m_idx);
@@ -4153,8 +4156,8 @@ HIT_POINT monspell_bluemage_damage(int SPELL_NUM, PLAYER_LEVEL plev, int TYPE)
        int shoot_dd = 1, shoot_ds = 1, shoot_base = 0;
        object_type *o_ptr = NULL;
 
-       if (buki_motteruka(INVEN_RARM)) o_ptr = &inventory[INVEN_RARM];
-       else if (buki_motteruka(INVEN_LARM)) o_ptr = &inventory[INVEN_LARM];
+       if (has_melee_weapon(INVEN_RARM)) o_ptr = &inventory[INVEN_RARM];
+       else if (has_melee_weapon(INVEN_LARM)) o_ptr = &inventory[INVEN_LARM];
 
        if (o_ptr)
        {