OSDN Git Service

[Refactor] #37353 マジックナンバー修正(A_MAX) / Fix magic number (A_MAX).
[hengband/hengband.git] / src / spells2.c
index 309c546..0b7a86e 100644 (file)
@@ -15,6 +15,8 @@
 #include "grid.h"
 #include "trap.h"
 #include "monsterrace-hook.h"
+#include "melee.h"
+#include "world.h"
 
 
 /*!
@@ -353,12 +355,10 @@ bool detect_monsters_normal(POSITION range)
 {
        MONSTER_IDX i;
        POSITION y, x;
-
        bool flag = FALSE;
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
-       /* Scan monsters */
        for (i = 1; i < m_max; i++)
        {
                monster_type *m_ptr = &m_list[i];
@@ -379,7 +379,6 @@ bool detect_monsters_normal(POSITION range)
                        /* Repair visibility later */
                        repair_monsters = TRUE;
 
-                       /* Hack -- Detect monster */
                        m_ptr->mflag2 |= (MFLAG2_MARK | MFLAG2_SHOW);
                        update_monster(i, FALSE);
                        flag = TRUE;
@@ -389,7 +388,6 @@ bool detect_monsters_normal(POSITION range)
        if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 3) flag = FALSE;
        if (flag)
        {
-               /* Describe result */
                msg_print(_("モンスターの存在を感じとった!", "You sense the presence of monsters!"));
        }
        return (flag);
@@ -409,7 +407,6 @@ bool detect_monsters_invis(POSITION range)
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
-       /* Scan monsters */
        for (i = 1; i < m_max; i++)
        {
                monster_type *m_ptr = &m_list[i];
@@ -436,7 +433,6 @@ bool detect_monsters_invis(POSITION range)
                        /* Repair visibility later */
                        repair_monsters = TRUE;
 
-                       /* Hack -- Detect monster */
                        m_ptr->mflag2 |= (MFLAG2_MARK | MFLAG2_SHOW);
                        update_monster(i, FALSE);
                        flag = TRUE;
@@ -446,7 +442,6 @@ bool detect_monsters_invis(POSITION range)
        if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 3) flag = FALSE;
        if (flag)
        {
-               /* Describe result */
                msg_print(_("透明な生物の存在を感じとった!", "You sense the presence of invisible creatures!"));
        }
        return (flag);
@@ -465,7 +460,6 @@ bool detect_monsters_evil(POSITION range)
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
-       /* Scan monsters */
        for (i = 1; i < m_max; i++)
        {
                monster_type *m_ptr = &m_list[i];
@@ -498,7 +492,6 @@ bool detect_monsters_evil(POSITION range)
                        /* Repair visibility later */
                        repair_monsters = TRUE;
 
-                       /* Hack -- Detect monster */
                        m_ptr->mflag2 |= (MFLAG2_MARK | MFLAG2_SHOW);
                        update_monster(i, FALSE);
                        flag = TRUE;
@@ -506,7 +499,6 @@ bool detect_monsters_evil(POSITION range)
        }
        if (flag)
        {
-               /* Describe result */
                msg_print(_("邪悪なる生物の存在を感じとった!", "You sense the presence of evil creatures!"));
        }
        return (flag);
@@ -525,7 +517,6 @@ bool detect_monsters_nonliving(POSITION range)
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
-       /* Scan monsters */
        for (i = 1; i < m_max; i++)
        {
                monster_type *m_ptr = &m_list[i];
@@ -551,7 +542,6 @@ bool detect_monsters_nonliving(POSITION range)
                        /* Repair visibility later */
                        repair_monsters = TRUE;
 
-                       /* Hack -- Detect monster */
                        m_ptr->mflag2 |= (MFLAG2_MARK | MFLAG2_SHOW);
                        update_monster(i, FALSE);
                        flag = TRUE;
@@ -559,7 +549,6 @@ bool detect_monsters_nonliving(POSITION range)
        }
        if (flag)
        {
-               /* Describe result */
                msg_print(_("自然でないモンスターの存在を感じた!", "You sense the presence of unnatural beings!"));
        }
        return (flag);
@@ -578,7 +567,6 @@ bool detect_monsters_mind(POSITION range)
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
-       /* Scan monsters */
        for (i = 1; i < m_max; i++)
        {
                monster_type *m_ptr = &m_list[i];
@@ -605,7 +593,6 @@ bool detect_monsters_mind(POSITION range)
                        /* Repair visibility later */
                        repair_monsters = TRUE;
 
-                       /* Hack -- Detect monster */
                        m_ptr->mflag2 |= (MFLAG2_MARK | MFLAG2_SHOW);
                        update_monster(i, FALSE);
                        flag = TRUE;
@@ -613,7 +600,6 @@ bool detect_monsters_mind(POSITION range)
        }
        if (flag)
        {
-               /* Describe result */
                msg_print(_("殺気を感じとった!", "You sense the presence of someone's mind!"));
        }
        return (flag);
@@ -634,7 +620,6 @@ bool detect_monsters_string(POSITION range, cptr Match)
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
-       /* Scan monsters */
        for (i = 1; i < m_max; i++)
        {
                monster_type *m_ptr = &m_list[i];
@@ -661,7 +646,6 @@ bool detect_monsters_string(POSITION range, cptr Match)
                        /* Repair visibility later */
                        repair_monsters = TRUE;
 
-                       /* Hack -- Detect monster */
                        m_ptr->mflag2 |= (MFLAG2_MARK | MFLAG2_SHOW);
                        update_monster(i, FALSE);
                        flag = TRUE;
@@ -671,7 +655,6 @@ bool detect_monsters_string(POSITION range, cptr Match)
        if (music_singing(MUSIC_DETECT) && SINGING_COUNT(p_ptr) > 3) flag = FALSE;
        if (flag)
        {
-               /* Describe result */
                msg_print(_("モンスターの存在を感じとった!", "You sense the presence of monsters!"));
        }
        return (flag);
@@ -692,7 +675,6 @@ bool detect_monsters_xxx(POSITION range, u32b match_flag)
 
        if (d_info[dungeon_type].flags1 & DF1_DARKNESS) range /= 3;
 
-       /* Scan monsters */
        for (i = 1; i < m_max; i++)
        {
                monster_type *m_ptr = &m_list[i];
@@ -725,7 +707,6 @@ bool detect_monsters_xxx(POSITION range, u32b match_flag)
                        /* Repair visibility later */
                        repair_monsters = TRUE;
 
-                       /* Hack -- Detect monster */
                        m_ptr->mflag2 |= (MFLAG2_MARK | MFLAG2_SHOW);
                        update_monster(i, FALSE);
                        flag = TRUE;
@@ -743,7 +724,6 @@ bool detect_monsters_xxx(POSITION range, u32b match_flag)
                                break;
                }
 
-               /* Describe result */
                msg_format(_("%sの存在を感じとった!", "You sense the presence of %s!"), desc_monsters);
                msg_print(NULL);
        }
@@ -789,7 +769,7 @@ bool detect_all(POSITION range)
  * this is done in two passes. -- JDL
  * </pre>
  */
-bool project_hack(EFFECT_ID typ, HIT_POINT dam)
+bool project_all_los(EFFECT_ID typ, HIT_POINT dam)
 {
        MONSTER_IDX i;
        POSITION x, y;
@@ -842,7 +822,7 @@ bool project_hack(EFFECT_ID typ, HIT_POINT dam)
  */
 bool speed_monsters(void)
 {
-       return (project_hack(GF_OLD_SPEED, p_ptr->lev));
+       return (project_all_los(GF_OLD_SPEED, p_ptr->lev));
 }
 
 /*!
@@ -851,7 +831,7 @@ bool speed_monsters(void)
  */
 bool slow_monsters(int power)
 {
-       return (project_hack(GF_OLD_SLOW, power));
+       return (project_all_los(GF_OLD_SLOW, power));
 }
 
 /*!
@@ -860,7 +840,7 @@ bool slow_monsters(int power)
  */
 bool sleep_monsters(int power)
 {
-       return (project_hack(GF_OLD_SLEEP, power));
+       return (project_all_los(GF_OLD_SLEEP, power));
 }
 
 /*!
@@ -869,7 +849,7 @@ bool sleep_monsters(int power)
  */
 bool banish_evil(int dist)
 {
-       return (project_hack(GF_AWAY_EVIL, dist));
+       return (project_all_los(GF_AWAY_EVIL, dist));
 }
 
 /*!
@@ -878,7 +858,7 @@ bool banish_evil(int dist)
  */
 bool turn_undead(void)
 {
-       bool tester = (project_hack(GF_TURN_UNDEAD, p_ptr->lev));
+       bool tester = (project_all_los(GF_TURN_UNDEAD, p_ptr->lev));
        if (tester)
                chg_virtue(V_UNLIFE, -1);
        return tester;
@@ -890,7 +870,7 @@ bool turn_undead(void)
  */
 bool dispel_undead(HIT_POINT dam)
 {
-       bool tester = (project_hack(GF_DISP_UNDEAD, dam));
+       bool tester = (project_all_los(GF_DISP_UNDEAD, dam));
        if (tester)
                chg_virtue(V_UNLIFE, -2);
        return tester;
@@ -902,7 +882,7 @@ bool dispel_undead(HIT_POINT dam)
  */
 bool dispel_evil(HIT_POINT dam)
 {
-       return (project_hack(GF_DISP_EVIL, dam));
+       return (project_all_los(GF_DISP_EVIL, dam));
 }
 
 /*!
@@ -911,7 +891,7 @@ bool dispel_evil(HIT_POINT dam)
  */
 bool dispel_good(HIT_POINT dam)
 {
-       return (project_hack(GF_DISP_GOOD, dam));
+       return (project_all_los(GF_DISP_GOOD, dam));
 }
 
 /*!
@@ -920,7 +900,7 @@ bool dispel_good(HIT_POINT dam)
  */
 bool dispel_monsters(HIT_POINT dam)
 {
-       return (project_hack(GF_DISP_ALL, dam));
+       return (project_all_los(GF_DISP_ALL, dam));
 }
 
 /*!
@@ -929,7 +909,7 @@ bool dispel_monsters(HIT_POINT dam)
  */
 bool dispel_living(HIT_POINT dam)
 {
-       return (project_hack(GF_DISP_LIVING, dam));
+       return (project_all_los(GF_DISP_LIVING, dam));
 }
 
 /*!
@@ -938,7 +918,7 @@ bool dispel_living(HIT_POINT dam)
  */
 bool dispel_demons(HIT_POINT dam)
 {
-       return (project_hack(GF_DISP_DEMON, dam));
+       return (project_all_los(GF_DISP_DEMON, dam));
 }
 
 /*!
@@ -947,7 +927,7 @@ bool dispel_demons(HIT_POINT dam)
  */
 bool crusade(void)
 {
-       return (project_hack(GF_CRUSADE, p_ptr->lev*4));
+       return (project_all_los(GF_CRUSADE, p_ptr->lev*4));
 }
 
 /*!
@@ -1032,7 +1012,7 @@ bool genocide_aux(MONSTER_IDX m_idx, int power, bool player_cast, int dam_side,
        {
                if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname)
                {
-                       char m_name[80];
+                       GAME_TEXT m_name[MAX_NLEN];
 
                        monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
                        do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name);
@@ -1044,7 +1024,7 @@ bool genocide_aux(MONSTER_IDX m_idx, int power, bool player_cast, int dam_side,
        if (resist && player_cast)
        {
                bool see_m = is_seen(m_ptr);
-               char m_name[80];
+               GAME_TEXT m_name[MAX_NLEN];
 
                monster_desc(m_name, m_ptr, 0);
                if (see_m)
@@ -1081,7 +1061,6 @@ bool genocide_aux(MONSTER_IDX m_idx, int power, bool player_cast, int dam_side,
        p_ptr->redraw |= (PR_HP);
        p_ptr->window |= (PW_PLAYER);
 
-       /* Handle */
        handle_stuff();
        Term_fresh();
 
@@ -1124,7 +1103,6 @@ bool symbol_genocide(int power, bool player_cast)
                /* Skip "wrong" monsters */
                if (r_ptr->d_char != typ) continue;
 
-               /* Take note */
                result |= genocide_aux(i, power, player_cast, 4, _("抹殺", "Genocide"));
        }
 
@@ -1232,7 +1210,7 @@ bool mass_genocide_undead(int power, bool player_cast)
 bool probing(void)
 {
        int i;
-       SPEED speed;
+       int speed; /* TODO */
        bool_hack cu, cv;
        bool probe = FALSE;
        char buf[256];
@@ -1258,7 +1236,7 @@ bool probing(void)
                /* Probe visible monsters */
                if (m_ptr->ml)
                {
-                       char m_name[80];
+                       GAME_TEXT m_name[MAX_NLEN];
 
                        /* Start the message */
                        if (!probe)
@@ -1316,8 +1294,9 @@ bool probing(void)
 
                        /* HACK : Add the line to message buffer */
                        message_add(buf);
+
                        p_ptr->window |= (PW_MESSAGE);
-                       window_stuff();
+                       handle_stuff();
 
                        if (m_ptr->ml) move_cursor_relative(m_ptr->fy, m_ptr->fx);
                        inkey();
@@ -1456,7 +1435,7 @@ bool destroy_area(POSITION y1, POSITION x1, POSITION r, bool in_generate)
                                {
                                        if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname)
                                        {
-                                               char m_name[80];
+                                               GAME_TEXT m_name[MAX_NLEN];
 
                                                monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
                                                do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_DESTROY, m_name);
@@ -1489,7 +1468,7 @@ bool destroy_area(POSITION y1, POSITION x1, POSITION r, bool in_generate)
 
                                                if (in_generate && cheat_peek)
                                                {
-                                                       char o_name[MAX_NLEN];
+                                                       GAME_TEXT o_name[MAX_NLEN];
                                                        object_desc(o_name, o_ptr, (OD_NAME_ONLY | OD_STORE));
                                                        msg_format(_("伝説のアイテム (%s) は生成中に*破壊*された。", "Artifact (%s) was *destroyed* during generation."), o_name);
                                                }
@@ -1829,7 +1808,7 @@ bool earthquake_aux(POSITION cy, POSITION cx, POSITION r, MONSTER_IDX m_idx)
 
                        if (m_idx)
                        {
-                               char m_name[80];
+                               GAME_TEXT m_name[MAX_NLEN];
                                monster_type *m_ptr = &m_list[m_idx];
 
                                /* Get the monster's real name */
@@ -1880,7 +1859,7 @@ bool earthquake_aux(POSITION cy, POSITION cx, POSITION r, MONSTER_IDX m_idx)
                                if (!(r_ptr->flags2 & (RF2_KILL_WALL)) &&
                                    !(r_ptr->flags2 & (RF2_PASS_WALL)))
                                {
-                                       char m_name[80];
+                                       GAME_TEXT m_name[MAX_NLEN];
 
                                        /* Assume not safe */
                                        sn = 0;
@@ -1946,14 +1925,13 @@ bool earthquake_aux(POSITION cy, POSITION cx, POSITION r, MONSTER_IDX m_idx)
                                                {
                                                        if (record_named_pet && is_pet(&m_list[c_ptr->m_idx]) && m_list[c_ptr->m_idx].nickname)
                                                        {
-                                                               char m2_name[80];
+                                                               char m2_name[MAX_NLEN];
 
                                                                monster_desc(m2_name, m_ptr, MD_INDEF_VISIBLE);
                                                                do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_EARTHQUAKE, m2_name);
                                                        }
                                                }
 
-
                                                delete_monster(yy, xx);
 
                                                /* No longer safe */
@@ -1975,13 +1953,8 @@ bool earthquake_aux(POSITION cy, POSITION cx, POSITION r, MONSTER_IDX m_idx)
                                                m_ptr->fy = sy;
                                                m_ptr->fx = sx;
 
-                                               /* Update the monster (new location) */
                                                update_monster(m_idx, TRUE);
-
-                                               /* Redraw the old grid */
                                                lite_spot(yy, xx);
-
-                                               /* Redraw the new grid */
                                                lite_spot(sy, sx);
                                        }
                                }
@@ -2156,7 +2129,7 @@ void discharge_minion(void)
                /* Uniques resist discharging */
                if (r_ptr->flags1 & RF1_UNIQUE)
                {
-                       char m_name[80];
+                       GAME_TEXT m_name[MAX_NLEN];
                        monster_desc(m_name, m_ptr, 0x00);
                        msg_format(_("%sは爆破されるのを嫌がり、勝手に自分の世界へと帰った。", "%^s resists to be blasted, and run away."), m_name);
                        delete_monster_idx(i);
@@ -2172,7 +2145,7 @@ void discharge_minion(void)
 
                if (record_named_pet && m_ptr->nickname)
                {
-                       char m_name[80];
+                       GAME_TEXT m_name[MAX_NLEN];
 
                        monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
                        do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_BLAST, m_name);
@@ -2224,9 +2197,7 @@ static void cave_temp_room_lite(void)
                if (c_ptr->m_idx)
                {
                        int chance = 25;
-
                        monster_type    *m_ptr = &m_list[c_ptr->m_idx];
-
                        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
                        update_monster(c_ptr->m_idx, FALSE);
 
@@ -2245,10 +2216,8 @@ static void cave_temp_room_lite(void)
                                /* Notice the "waking up" */
                                if (m_ptr->ml)
                                {
-                                       char m_name[80];
+                                       GAME_TEXT m_name[MAX_NLEN];
                                        monster_desc(m_name, m_ptr, 0);
-
-                                       /* Dump a message */
                                        msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name);
                                }
                        }
@@ -3487,7 +3456,7 @@ bool activate_ty_curse(bool stop_ty, int *count)
                        (*count) += activate_hi_summon(p_ptr->y, p_ptr->x, FALSE);
                        if (!one_in_(6)) break;
                case 7: case 8: case 9: case 18:
-                       (*count) += summon_specific(0, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
+                       (*count) += summon_specific(0, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
                        if (!one_in_(6)) break;
                case 10: case 11: case 12:
                        msg_print(_("経験値が体から吸い取られた気がする!", "You feel your experience draining away..."));
@@ -3527,7 +3496,7 @@ bool activate_ty_curse(bool stop_ty, int *count)
                        }
                        if (!one_in_(6)) break;
                default:
-                       while (i < 6)
+                       while (i < A_MAX)
                        {
                                do
                                {
@@ -3581,51 +3550,51 @@ int activate_hi_summon(POSITION y, POSITION x, bool can_pet)
                switch (randint1(25) + (dun_level / 20))
                {
                        case 1: case 2:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_ANT, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_ANT, mode, '\0');
                                break;
                        case 3: case 4:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_SPIDER, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_SPIDER, mode, '\0');
                                break;
                        case 5: case 6:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HOUND, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HOUND, mode, '\0');
                                break;
                        case 7: case 8:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HYDRA, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HYDRA, mode, '\0');
                                break;
                        case 9: case 10:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_ANGEL, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_ANGEL, mode, '\0');
                                break;
                        case 11: case 12:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_UNDEAD, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_UNDEAD, mode, '\0');
                                break;
                        case 13: case 14:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_DRAGON, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_DRAGON, mode, '\0');
                                break;
                        case 15: case 16:
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_DEMON, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_DEMON, mode, '\0');
                                break;
                        case 17:
                                if (can_pet) break;
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_AMBERITES, (mode | PM_ALLOW_UNIQUE));
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_AMBERITES, (mode | PM_ALLOW_UNIQUE), '\0');
                                break;
                        case 18: case 19:
                                if (can_pet) break;
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_UNIQUE, (mode | PM_ALLOW_UNIQUE));
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_UNIQUE, (mode | PM_ALLOW_UNIQUE), '\0');
                                break;
                        case 20: case 21:
                                if (!can_pet) mode |= PM_ALLOW_UNIQUE;
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HI_UNDEAD, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HI_UNDEAD, mode, '\0');
                                break;
                        case 22: case 23:
                                if (!can_pet) mode |= PM_ALLOW_UNIQUE;
-                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HI_DRAGON, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, summon_lev, SUMMON_HI_DRAGON, mode, '\0');
                                break;
                        case 24:
-                               count += summon_specific((pet ? -1 : 0), y, x, 100, SUMMON_CYBER, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x, 100, SUMMON_CYBER, mode, '\0');
                                break;
                        default:
                                if (!can_pet) mode |= PM_ALLOW_UNIQUE;
-                               count += summon_specific((pet ? -1 : 0), y, x,pet ? summon_lev : (((summon_lev * 3) / 2) + 5), 0, mode);
+                               count += summon_specific((pet ? -1 : 0), y, x,pet ? summon_lev : (((summon_lev * 3) / 2) + 5), 0, mode, '\0');
                }
        }
 
@@ -3658,7 +3627,7 @@ int summon_cyber(MONSTER_IDX who, POSITION y, POSITION x)
 
        for (i = 0; i < max_cyber; i++)
        {
-               count += summon_specific(who, y, x, 100, SUMMON_CYBER, mode);
+               count += summon_specific(who, y, x, 100, SUMMON_CYBER, mode, '\0');
        }
 
        return count;
@@ -3719,7 +3688,7 @@ void wall_breaker(void)
  */
 bool confuse_monsters(HIT_POINT dam)
 {
-       return (project_hack(GF_OLD_CONF, dam));
+       return (project_all_los(GF_OLD_CONF, dam));
 }
 
 
@@ -3730,7 +3699,7 @@ bool confuse_monsters(HIT_POINT dam)
  */
 bool charm_monsters(HIT_POINT dam)
 {
-       return (project_hack(GF_CHARM, dam));
+       return (project_all_los(GF_CHARM, dam));
 }
 
 
@@ -3741,7 +3710,7 @@ bool charm_monsters(HIT_POINT dam)
  */
 bool charm_animals(HIT_POINT dam)
 {
-       return (project_hack(GF_CONTROL_ANIMAL, dam));
+       return (project_all_los(GF_CONTROL_ANIMAL, dam));
 }
 
 
@@ -3752,7 +3721,7 @@ bool charm_animals(HIT_POINT dam)
  */
 bool stun_monsters(HIT_POINT dam)
 {
-       return (project_hack(GF_STUN, dam));
+       return (project_all_los(GF_STUN, dam));
 }
 
 
@@ -3763,7 +3732,7 @@ bool stun_monsters(HIT_POINT dam)
  */
 bool stasis_monsters(HIT_POINT dam)
 {
-       return (project_hack(GF_STASIS, dam));
+       return (project_all_los(GF_STASIS, dam));
 }
 
 
@@ -3774,7 +3743,7 @@ bool stasis_monsters(HIT_POINT dam)
  */
 bool mindblast_monsters(HIT_POINT dam)
 {
-       return (project_hack(GF_PSI, dam));
+       return (project_all_los(GF_PSI, dam));
 }
 
 
@@ -3785,7 +3754,7 @@ bool mindblast_monsters(HIT_POINT dam)
  */
 bool banish_monsters(int dist)
 {
-       return (project_hack(GF_AWAY_ALL, dist));
+       return (project_all_los(GF_AWAY_ALL, dist));
 }
 
 
@@ -3796,7 +3765,7 @@ bool banish_monsters(int dist)
  */
 bool turn_evil(HIT_POINT dam)
 {
-       return (project_hack(GF_TURN_EVIL, dam));
+       return (project_all_los(GF_TURN_EVIL, dam));
 }
 
 
@@ -3807,7 +3776,7 @@ bool turn_evil(HIT_POINT dam)
  */
 bool turn_monsters(HIT_POINT dam)
 {
-       return (project_hack(GF_TURN_ALL, dam));
+       return (project_all_los(GF_TURN_ALL, dam));
 }
 
 
@@ -3817,7 +3786,7 @@ bool turn_monsters(HIT_POINT dam)
  */
 bool deathray_monsters(void)
 {
-       return (project_hack(GF_DEATH_RAY, p_ptr->lev * 200));
+       return (project_all_los(GF_DEATH_RAY, p_ptr->lev * 200));
 }
 
 /*!
@@ -3896,23 +3865,14 @@ bool kawarimi(bool success)
        x = p_ptr->x;
 
        teleport_player(10 + randint1(90), 0L);
-
        object_wipe(q_ptr);
-
        object_prep(q_ptr, lookup_kind(TV_STATUE, SV_WOODEN_STATUE));
 
        q_ptr->pval = MON_NINJA;
-
-       /* Drop it in the dungeon */
        (void)drop_near(q_ptr, -1, y, x);
 
-#ifdef JP
-       if (success) msg_print("攻撃を受ける前に素早く身をひるがえした。");
-       else msg_print("失敗!攻撃を受けてしまった。");
-#else
-       if (success) msg_print("You have turned around just before the attack hit you.");
-       else msg_print("Failed! You are hit by the attack.");
-#endif
+       if (success) msg_print(_("攻撃を受ける前に素早く身をひるがえした。", "You have turned around just before the attack hit you."));
+       else msg_print(_("失敗!攻撃を受けてしまった。", "Failed! You are hit by the attack."));
 
        p_ptr->special_defense &= ~(NINJA_KAWARIMI);
        p_ptr->redraw |= (PR_STATUS);
@@ -4007,8 +3967,7 @@ bool rush_attack(bool *mdeath)
                if (tm_idx != cave[ny][nx].m_idx)
                {
 #ifdef JP
-                       msg_format("%s%sが立ちふさがっている!", tm_idx ? "別の" : "",
-                                  m_ptr->ml ? "モンスター" : "何か");
+                       msg_format("%s%sが立ちふさがっている!", tm_idx ? "別の" : "", m_ptr->ml ? "モンスター" : "何か");
 #else
                        msg_format("There is %s in the way!", m_ptr->ml ? (tm_idx ? "another monster" : "a monster") : "someone");
 #endif
@@ -4016,7 +3975,7 @@ bool rush_attack(bool *mdeath)
                else if (!player_bold(ty, tx))
                {
                        /* Hold the monster name */
-                       char m_name[80];
+                       GAME_TEXT m_name[MAX_NLEN];
 
                        /* Get the monster name (BEFORE polymorphing) */
                        monster_desc(m_name, m_ptr, 0);
@@ -4211,7 +4170,7 @@ void wild_magic(int spell)
        case 35:
                while (counter++ < 8)
                {
-                       (void)summon_specific(0, p_ptr->y, p_ptr->x, (dun_level * 3) / 2, type, (PM_ALLOW_GROUP | PM_NO_PET));
+                       (void)summon_specific(0, p_ptr->y, p_ptr->x, (dun_level * 3) / 2, type, (PM_ALLOW_GROUP | PM_NO_PET), '\0');
                }
                break;
        case 36:
@@ -4492,7 +4451,7 @@ void cast_invoke_spirits(DIRECTION dir)
                msg_print(_("なんてこった!あなたの周りの地面から朽ちた人影が立ち上がってきた!",
                        "Oh no! Mouldering forms rise from the earth around you!"));
 
-               (void)summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
+               (void)summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
                chg_virtue(V_UNLIFE, 1);
        }
        else if (die < 14)
@@ -4652,7 +4611,7 @@ void cast_shuffle(void)
        else if (die < 14)
        {
                msg_print(_("なんてこった!《悪魔》だ!", "Oh no! It's the Devil!"));
-               summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
+               summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
        }
        else if (die < 18)
        {
@@ -4800,7 +4759,7 @@ bool_hack life_stream(bool_hack message, bool_hack virtue)
        (void)set_cut(0);
        (void)restore_all_status();
        (void)set_shero(0, TRUE);
-       update_stuff();
+       handle_stuff();
        hp_player(5000);
 
        return TRUE;
@@ -5024,16 +4983,15 @@ bool psychometry(void)
 {
        OBJECT_IDX      item;
        object_type     *o_ptr;
-       char            o_name[MAX_NLEN];
+       GAME_TEXT o_name[MAX_NLEN];
        byte            feel;
        cptr            q, s;
        bool okay = FALSE;
 
-       item_tester_no_ryoute = TRUE;
        q = _("どのアイテムを調べますか?", "Meditate on which item? ");
        s = _("調べるアイテムがありません。", "You have nothing appropriate.");
 
-       if (!get_item(&item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR))) return (FALSE);
+       if (!get_item(&item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT))) return (FALSE);
 
        /* Get the item (in the pack) */
        if (item >= 0)
@@ -5087,7 +5045,7 @@ bool psychometry(void)
        o_ptr->marked |= OM_TOUCHED;
 
        /* Combine / Reorder the pack (later) */
-       p_ptr->notice |= (PN_COMBINE | PN_REORDER);
+       p_ptr->update |= (PU_COMBINE | PU_REORDER);
 
        p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);