OSDN Git Service

[Refactor] #37353 癒し系の効果をtrue_healing()にまとめる。
[hengband/hengband.git] / src / xtra2.c
index f17b5ea..68e4584 100644 (file)
@@ -12,6 +12,7 @@
 
 
 #include "angband.h"
+#include "cmd-pet.h"
 
 #define REWARD_CHANCE 10
 
@@ -27,7 +28,7 @@ void check_experience(void)
        bool level_mutation = FALSE;
        bool level_inc_stat = FALSE;
        bool android = (p_ptr->prace == RACE_ANDROID ? TRUE : FALSE);
-       int  old_lev = p_ptr->lev;
+       PLAYER_LEVEL old_lev = p_ptr->lev;
 
        /* Hack -- lower limit */
        if (p_ptr->exp < 0) p_ptr->exp = 0;
@@ -103,12 +104,7 @@ void check_experience(void)
                sound(SOUND_LEVEL);
 
                /* Message */
-#ifdef JP
-msg_format("レベル %d にようこそ。", p_ptr->lev);
-#else
-               msg_format("Welcome to level %d.", p_ptr->lev);
-
-#endif
+               msg_format(_("レベル %d にようこそ。", "Welcome to level %d."), p_ptr->lev);
 
                /* Update some stuff */
                p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
@@ -230,7 +226,7 @@ msg_format("レベル %d にようこそ。", p_ptr->lev);
  * Used to allocate proper treasure when "Creeping coins" die
  * XXX XXX XXX Note the use of actual "monster names"
  */
-static int get_coin_type(IDX r_idx)
+static int get_coin_type(MONRACE_IDX r_idx)
 {
        /* Analyze monsters */
        switch (r_idx)
@@ -254,7 +250,7 @@ static int get_coin_type(IDX r_idx)
  * @param k_idx 判定したいオブジェクトのベースアイテムID
  * @return オブジェクトがクロークならばTRUEを返す
  */
-static bool kind_is_cloak(int k_idx)
+static bool kind_is_cloak(KIND_OBJECT_IDX k_idx)
 {
        object_kind *k_ptr = &k_info[k_idx];
 
@@ -275,7 +271,7 @@ static bool kind_is_cloak(int k_idx)
  * @param k_idx 判定したいオブジェクトのベースアイテムID
  * @return オブジェクトが竿状武器ならばTRUEを返す
  */
-static bool kind_is_polearm(int k_idx)
+static bool kind_is_polearm(KIND_OBJECT_IDX k_idx)
 {
        object_kind *k_ptr = &k_info[k_idx];
 
@@ -296,7 +292,7 @@ static bool kind_is_polearm(int k_idx)
  * @param k_idx 判定したいオブジェクトのベースアイテムID
  * @return オブジェクトが剣ならばTRUEを返す
  */
-static bool kind_is_sword(int k_idx)
+static bool kind_is_sword(KIND_OBJECT_IDX k_idx)
 {
        object_kind *k_ptr = &k_info[k_idx];
 
@@ -317,7 +313,7 @@ static bool kind_is_sword(int k_idx)
  * @param k_idx 判定したいオブジェクトのベースアイテムID
  * @return オブジェクトが魔法書ならばTRUEを返す
  */
-static bool kind_is_book(int k_idx)
+static bool kind_is_book(KIND_OBJECT_IDX k_idx)
 {
        object_kind *k_ptr = &k_info[k_idx];
 
@@ -338,7 +334,7 @@ static bool kind_is_book(int k_idx)
  * @param k_idx 判定したいオブジェクトのベースアイテムID
  * @return オブジェクトがベースアイテム時点でGOODなアイテムならばTRUEを返す
  */
-static bool kind_is_good_book(int k_idx)
+static bool kind_is_good_book(KIND_OBJECT_IDX k_idx)
 {
        object_kind *k_ptr = &k_info[k_idx];
 
@@ -359,7 +355,7 @@ static bool kind_is_good_book(int k_idx)
  * @param k_idx 判定したいオブジェクトのベースアイテムID
  * @return オブジェクトが鎧ならばTRUEを返す
  */
-static bool kind_is_armor(int k_idx)
+static bool kind_is_armor(KIND_OBJECT_IDX k_idx)
 {
        object_kind *k_ptr = &k_info[k_idx];
 
@@ -380,7 +376,7 @@ static bool kind_is_armor(int k_idx)
  * @param k_idx 判定したいオブジェクトのベースアイテムID
  * @return オブジェクトが打撃武器ならばTRUEを返す
  */
-static bool kind_is_hafted(int k_idx)
+static bool kind_is_hafted(KIND_OBJECT_IDX k_idx)
 {
        object_kind *k_ptr = &k_info[k_idx];
 
@@ -439,7 +435,7 @@ static int count_all_hostile_monsters(void)
        {
                for (y = 0; y < cur_hgt; ++ y)
                {
-                       IDX m_idx = cave[y][x].m_idx;
+                       MONSTER_IDX m_idx = cave[y][x].m_idx;
 
                        if (m_idx > 0 && is_hostile(&m_list[m_idx]))
                        {
@@ -481,7 +477,7 @@ void check_quest_completion(monster_type *m_ptr)
        {
                int i;
 
-               for (i = max_quests - 1; i > 0; i--)
+               for (i = max_q_idx - 1; i > 0; i--)
                {
                        quest_type* const q_ptr = &quest[i];
                        
@@ -680,7 +676,7 @@ void check_find_art_quest_completion(object_type *o_ptr)
 {
        int i;
        /* Check if completed a quest */
-       for (i = 0; i < max_quests; i++)
+       for (i = 0; i < max_q_idx; i++)
        {
                if ((quest[i].type == QUEST_TYPE_FIND_ARTIFACT) &&
                    (quest[i].status == QUEST_STATUS_TAKEN) &&
@@ -737,7 +733,7 @@ cptr extract_note_dies(monster_race *r_ptr)
  * it drops all of its objects, which may disappear in crowded rooms.
  * </pre>
  */
-void monster_death(IDX m_idx, bool drop_item)
+void monster_death(MONSTER_IDX m_idx, bool drop_item)
 {
        int i, j, y, x;
 
@@ -792,7 +788,7 @@ void monster_death(IDX m_idx, bool drop_item)
        {
                if (r_ptr->blow[i].method == RBM_EXPLODE)
                {
-                       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+                       BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
                        int typ = mbe_info[r_ptr->blow[i].effect].explode_type;
                        DICE_NUMBER d_dice = r_ptr->blow[i].d_dice;
                        DICE_SID d_side = r_ptr->blow[i].d_side;
@@ -924,7 +920,7 @@ void monster_death(IDX m_idx, bool drop_item)
                        {
                                int wy = y, wx = x;
                                bool pet = is_pet(m_ptr);
-                               u32b mode = 0L;
+                               BIT_FLAGS mode = 0L;
 
                                if (pet) mode |= PM_FORCE_PET;
 
@@ -1001,7 +997,7 @@ void monster_death(IDX m_idx, bool drop_item)
 
                                if (attempts > 0)
                                {
-                                       u32b mode = 0L;
+                                       BIT_FLAGS mode = 0L;
                                        if (pet) mode |= PM_FORCE_PET;
 
                                        if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_DAWN, mode))
@@ -1017,7 +1013,7 @@ void monster_death(IDX m_idx, bool drop_item)
        case MON_UNMAKER:
                /* One more ultra-hack: An Unmaker goes out with a big bang! */
                {
-                       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+                       BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
                        (void)project(m_idx, 6, y, x, 100, GF_CHAOS, flg, -1);
                }
                break;
@@ -1132,7 +1128,7 @@ void monster_death(IDX m_idx, bool drop_item)
 
        case MON_ROLENTO:
                {
-                       int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
+                       BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
                        (void)project(m_idx, 3, y, x, damroll(20, 10), GF_FIRE, flg, -1);
                }
                break;
@@ -1478,7 +1474,7 @@ HIT_POINT mon_damage_mod(monster_type *m_ptr, HIT_POINT dam, bool is_psy_spear)
  * experience point of a monster later.
  * </pre>
  */
-static void get_exp_from_mon(int dam, monster_type *m_ptr)
+static void get_exp_from_mon(HIT_POINT dam, monster_type *m_ptr)
 {
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
@@ -1577,7 +1573,7 @@ static void get_exp_from_mon(int dam, monster_type *m_ptr)
  * to induce changes in the monster recall code.
  * </pre>
  */
-bool mon_take_hit(IDX m_idx, int dam, bool *fear, cptr note)
+bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, cptr note)
 {
        monster_type    *m_ptr = &m_list[m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
@@ -1588,7 +1584,6 @@ bool mon_take_hit(IDX m_idx, int dam, bool *fear, cptr note)
        bool        innocent = TRUE, thief = FALSE;
        int         i;
        int         expdam;
-       int                     dealt_damage;
 
        (void)COPY(&exp_mon, m_ptr, monster_type);
        
@@ -1615,9 +1610,6 @@ bool mon_take_hit(IDX m_idx, int dam, bool *fear, cptr note)
        /* Genocided by chaos patron */
        if (!m_idx) return TRUE;
        
-       /* Remember dealt_damage before this attack*/
-       dealt_damage = m_ptr->dealt_damage;
-
        /* Hurt it */
        m_ptr->hp -= dam;
        
@@ -1940,7 +1932,7 @@ msg_format("%sを葬り去った。", m_name);
                {
                        int dummy_y = m_ptr->fy;
                        int dummy_x = m_ptr->fx;
-                       u32b mode = 0L;
+                       BIT_FLAGS mode = 0L;
 
                        if (is_pet(m_ptr)) mode |= PM_FORCE_PET;
 
@@ -2338,7 +2330,7 @@ void verify_panel(void)
 /*
  * Monster health description
  */
-cptr look_mon_desc(monster_type *m_ptr, u32b mode)
+cptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode)
 {
        monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx];
        bool         living;
@@ -2530,7 +2522,7 @@ void ang_sort(vptr u, vptr v, int n)
  * Future versions may restrict the ability to target "trappers"
  * and "mimics", but the semantics is a little bit weird.
  */
-bool target_able(IDX m_idx)
+bool target_able(MONSTER_IDX m_idx)
 {
        monster_type *m_ptr = &m_list[m_idx];
 
@@ -2598,10 +2590,10 @@ bool target_okay(void)
  */
 static bool ang_sort_comp_distance(vptr u, vptr v, int a, int b)
 {
-       byte *x = (byte*)(u);
-       byte *y = (byte*)(v);
+       POSITION *x = (POSITION*)(u);
+       POSITION *y = (POSITION*)(v);
 
-       int da, db, kx, ky;
+       POSITION da, db, kx, ky;
 
        /* Absolute distance components */
        kx = x[a]; kx -= p_ptr->x; kx = ABS(kx);
@@ -2630,8 +2622,8 @@ static bool ang_sort_comp_distance(vptr u, vptr v, int a, int b)
  */
 static bool ang_sort_comp_importance(vptr u, vptr v, int a, int b)
 {
-       byte *x = (byte*)(u);
-       byte *y = (byte*)(v);
+       POSITION *x = (POSITION*)(u);
+       POSITION *y = (POSITION*)(v);
        cave_type *ca_ptr = &cave[y[a]][x[a]];
        cave_type *cb_ptr = &cave[y[b]][x[b]];
        monster_type *ma_ptr = &m_list[ca_ptr->m_idx];
@@ -2699,10 +2691,10 @@ static bool ang_sort_comp_importance(vptr u, vptr v, int a, int b)
  */
 static void ang_sort_swap_distance(vptr u, vptr v, int a, int b)
 {
-       byte *x = (byte*)(u);
-       byte *y = (byte*)(v);
+       POSITION *x = (POSITION*)(u);
+       POSITION *y = (POSITION*)(v);
 
-       byte temp;
+       POSITION temp;
 
        /* Swap "x" */
        temp = x[a];
@@ -2720,13 +2712,11 @@ static void ang_sort_swap_distance(vptr u, vptr v, int a, int b)
 /*
  * Hack -- help "select" a location (see below)
  */
-static s16b target_pick(POSITION y1, POSITION x1, POSITION dy, POSITION dx)
+static POSITION_IDX target_pick(POSITION y1, POSITION x1, POSITION dy, POSITION dx)
 {
-       int i, v;
-
-       int x2, y2, x3, y3, x4, y4;
-
-       int b_i = -1, b_v = 9999;
+       POSITION_IDX i, v;
+       POSITION x2, y2, x3, y3, x4, y4;
+       POSITION_IDX b_i = -1, b_v = 9999;
 
 
        /* Scan the locations */
@@ -2836,7 +2826,7 @@ static bool target_set_accept(int y, int x)
  *
  * Return the number of target_able monsters in the set.
  */
-static void target_set_prepare(int mode)
+static void target_set_prepare(BIT_FLAGS mode)
 {
        int y, x;
        int min_hgt, max_hgt, min_wid, max_wid;
@@ -2998,7 +2988,7 @@ bool show_gold_on_floor = FALSE;
  *
  * This function must handle blindness/hallucination.
  */
-static int target_set_aux(int y, int x, int mode, cptr info)
+static char target_set_aux(POSITION y, POSITION x, BIT_FLAGS mode, cptr info)
 {
        cave_type *c_ptr = &cave[y][x];
        s16b this_o_idx, next_o_idx = 0;
@@ -3006,11 +2996,12 @@ static int target_set_aux(int y, int x, int mode, cptr info)
        bool boring = TRUE;
        s16b feat;
        feature_type *f_ptr;
-       int query = '\001';
+       char query = '\001';
        char out_val[MAX_NLEN+80];
 
 #ifdef ALLOW_EASY_FLOOR
-       int floor_list[23], floor_num = 0;
+       OBJECT_IDX floor_list[23];
+       ITEM_NUMBER floor_num = 0;
 
        /* Scan all objects in the grid */
        if (easy_floor)
@@ -3264,10 +3255,10 @@ static int target_set_aux(int y, int x, int mode, cptr info)
                                /* Display rough information about items */
 #ifdef JP
                                sprintf(out_val, "%s %d個のアイテム%s%s ['x'で一覧, %s]",
-                                       s1, floor_num, s2, s3, info);
+                                       s1, (int)floor_num, s2, s3, info);
 #else
                                sprintf(out_val, "%s%s%sa pile of %d items [x,%s]",
-                                       s1, s2, s3, floor_num, info);
+                                       s1, s2, s3, (int)floor_num, info);
 #endif
 
                                prt(out_val, 0, 0);
@@ -3300,10 +3291,10 @@ static int target_set_aux(int y, int x, int mode, cptr info)
                                /* Prompt */
 #ifdef JP
                                sprintf(out_val, "%s %d個のアイテム%s%s [Enterで次へ, %s]",
-                                       s1, floor_num, s2, s3, info);
+                                       s1, (int)floor_num, s2, s3, info);
 #else
                                sprintf(out_val, "%s%s%sa pile of %d items [Enter,%s]",
-                                       s1, s2, s3, floor_num, info);
+                                       s1, s2, s3, (int)floor_num, info);
 #endif
                                prt(out_val, 0, 0);
 
@@ -3511,9 +3502,9 @@ static int target_set_aux(int y, int x, int mode, cptr info)
                        if (c_ptr->mimic) sprintf(f_idx_str, "%d/%d", c_ptr->feat, c_ptr->mimic);
                        else sprintf(f_idx_str, "%d", c_ptr->feat);
 #ifdef JP
-                       sprintf(out_val, "%s%s%s%s[%s] %x %s %d %d %d (%d,%d) %d", s1, name, s2, s3, info, c_ptr->info, f_idx_str, c_ptr->dist, c_ptr->cost, c_ptr->when, y, x, travel.cost[y][x]);
+                       sprintf(out_val, "%s%s%s%s[%s] %x %s %d %d %d (%d,%d) %d", s1, name, s2, s3, info, (unsigned int)c_ptr->info, f_idx_str, c_ptr->dist, c_ptr->cost, c_ptr->when, (int)y, (int)x, travel.cost[y][x]);
 #else
-                       sprintf(out_val, "%s%s%s%s [%s] %x %s %d %d %d (%d,%d)", s1, s2, s3, name, info, c_ptr->info, f_idx_str, c_ptr->dist, c_ptr->cost, c_ptr->when, y, x);
+                       sprintf(out_val, "%s%s%s%s [%s] %x %s %d %d %d (%d,%d)", s1, s2, s3, name, info, c_ptr->info, f_idx_str, c_ptr->dist, c_ptr->cost, c_ptr->when, (int)y, (int)x);
 #endif
                }
                else
@@ -3580,20 +3571,16 @@ static int target_set_aux(int y, int x, int mode, cptr info)
  * This command will cancel any old target, even if used from
  * inside the "look" command.
  */
-bool target_set(int mode)
+bool target_set(BIT_FLAGS mode)
 {
        int             i, d, m, t, bd;
        POSITION y = p_ptr->y;
        POSITION x = p_ptr->x;
 
        bool    done = FALSE;
-
        bool    flag = TRUE;
-
        char    query;
-
        char    info[80];
-
        char    same_key;
 
        cave_type               *c_ptr;
@@ -3653,6 +3640,15 @@ bool target_set(int mode)
                        {
                                strcpy(info, _("q止 p自 o現 +次 -前", "q,p,o,+,-,<dir>"));
                        }
+
+                       if (cheat_sight)
+                       {
+                               char cheatinfo[30];
+                               sprintf(cheatinfo, " LOS:%d, PROJECTABLE:%d",
+                                       los(p_ptr->y, p_ptr->x, y, x),
+                                       projectable(p_ptr->y, p_ptr->x, y, x));
+                               strcat(info, cheatinfo);
+                       }
                        
                        /* Describe and Prompt */
                        while (TRUE){
@@ -3892,8 +3888,17 @@ bool target_set(int mode)
                        /* Default prompt */
                        strcpy(info, _("q止 t決 p自 m近 +次 -前", "q,t,p,m,+,-,<dir>"));
 
+                       if (cheat_sight)
+                       {
+                               char cheatinfo[30];
+                               sprintf(cheatinfo, " LOS:%d, PROJECTABLE:%d",
+                                       los(p_ptr->y, p_ptr->x, y, x),
+                                       projectable(p_ptr->y, p_ptr->x, y, x));
+                               strcat(info, cheatinfo);
+                       }
+
                        /* Describe and Prompt (enable "TARGET_LOOK") */
-                       while (!(query = target_set_aux(y, x, mode | TARGET_LOOK, info)));
+                       while ((query = target_set_aux(y, x, mode | TARGET_LOOK, info)) == 0);
 
                        /* Cancel tracking */
                        /* health_track(0); */
@@ -4091,13 +4096,12 @@ bool target_set(int mode)
  *
  * Note that confusion over-rides any (explicit?) user choice.
  */
-bool get_aim_dir(int *dp)
+bool get_aim_dir(DIRECTION *dp)
 {
-       int             dir;
-
+       DIRECTION dir;
        char    command;
-
        cptr    p;
+       COMMAND_CODE code;
 
        /* Initialize */
        (*dp) = 0;
@@ -4110,17 +4114,18 @@ bool get_aim_dir(int *dp)
 
 #ifdef ALLOW_REPEAT /* TNB */
 
-       if (repeat_pull(dp))
+       if (repeat_pull(&code))
        {
                /* Confusion? */
 
                /* Verify */
-               if (!(*dp == 5 && !target_okay()))
+               if (!(code == 5 && !target_okay()))
                {
 /*                     return (TRUE); */
-                       dir = *dp;
+                       dir = (DIRECTION)code;
                }
        }
+       *dp = (DIRECTION)code;
 
 #endif /* ALLOW_REPEAT -- TNB */
 
@@ -4215,7 +4220,7 @@ bool get_aim_dir(int *dp)
 #ifdef ALLOW_REPEAT /* TNB */
 
 /*     repeat_push(dir); */
-       repeat_push(command_dir);
+       repeat_push((COMMAND_CODE)command_dir);
 
 #endif /* ALLOW_REPEAT -- TNB */
 
@@ -4241,10 +4246,11 @@ bool get_aim_dir(int *dp)
  * This function tracks and uses the "global direction", and uses
  * that as the "desired direction", to which "confusion" is applied.
  */
-bool get_rep_dir(int *dp, bool under)
+bool get_rep_dir(DIRECTION *dp, bool under)
 {
-       int dir;
+       DIRECTION dir;
        cptr prompt;
+       COMMAND_CODE code;
 
        /* Initialize */
        (*dp) = 0;
@@ -4254,11 +4260,12 @@ bool get_rep_dir(int *dp, bool under)
 
 #ifdef ALLOW_REPEAT /* TNB */
 
-       if (repeat_pull(dp))
+       if (repeat_pull(&code))
        {
-               dir = *dp;
+               dir = (DIRECTION)code;
 /*             return (TRUE); */
        }
+       *dp = (DIRECTION)code;
 
 #endif /* ALLOW_REPEAT -- TNB */
 
@@ -4370,7 +4377,7 @@ bool get_rep_dir(int *dp, bool under)
 #ifdef ALLOW_REPEAT /* TNB */
 
 /*     repeat_push(dir); */
-       repeat_push(command_dir);
+       repeat_push((COMMAND_CODE)command_dir);
 
 #endif /* ALLOW_REPEAT -- TNB */
 
@@ -4379,9 +4386,10 @@ bool get_rep_dir(int *dp, bool under)
 }
 
 
-bool get_rep_dir2(int *dp)
+bool get_rep_dir2(DIRECTION *dp)
 {
-       int dir;
+       DIRECTION dir;
+       COMMAND_CODE code;
 
        /* Initialize */
        (*dp) = 0;
@@ -4391,11 +4399,12 @@ bool get_rep_dir2(int *dp)
 
 #ifdef ALLOW_REPEAT /* TNB */
 
-       if (repeat_pull(dp))
+       if (repeat_pull(&code))
        {
-               dir = *dp;
+               dir = (DIRECTION)code;
 /*             return (TRUE); */
        }
+       *dp = (DIRECTION)code;
 
 #endif /* ALLOW_REPEAT -- TNB */
 
@@ -4447,7 +4456,7 @@ bool get_rep_dir2(int *dp)
 #ifdef ALLOW_REPEAT /* TNB */
 
 /*     repeat_push(dir); */
-       repeat_push(command_dir);
+       repeat_push((COMMAND_CODE)command_dir);
 
 #endif /* ALLOW_REPEAT -- TNB */
 
@@ -4490,27 +4499,13 @@ void gain_level_reward(int chosen_reward)
        type--;
 
 
-#ifdef JP
-sprintf(wrath_reason, "%sの怒り",
-               chaos_patrons[p_ptr->chaos_patron]);
-#else
-       sprintf(wrath_reason, "the Wrath of %s",
-               chaos_patrons[p_ptr->chaos_patron]);
-#endif
-
+       sprintf(wrath_reason, _("%sの怒り", "the Wrath of %s"), chaos_patrons[p_ptr->chaos_patron]);
 
        effect = chaos_rewards[p_ptr->chaos_patron][type];
 
        if (one_in_(6) && !chosen_reward)
        {
-#ifdef JP
-msg_format("%^sは褒美としてあなたを突然変異させた。",
-                       chaos_patrons[p_ptr->chaos_patron]);
-#else
-               msg_format("%^s rewards you with a mutation!",
-                       chaos_patrons[p_ptr->chaos_patron]);
-#endif
-
+               msg_format(_("%^sは褒美としてあなたを突然変異させた。", "%^s rewards you with a mutation!"), chaos_patrons[p_ptr->chaos_patron]);
                (void)gain_random_mutation(0);
                reward = _("変異した。", "mutation");
        }
@@ -4518,29 +4513,19 @@ msg_format("%^sは褒美としてあなたを突然変異させた。",
        {
        switch (chosen_reward ? chosen_reward : effect)
        {
+
                case REW_POLY_SLF:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「汝、新たなる姿を必要とせり!」", "'Thou needst a new form, mortal!'"));
 
                        do_poly_self();
                        reward = _("変異した。", "polymorphing");
                        break;
+
                case REW_GAIN_EXP:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「汝は良く行いたり!続けよ!」", "'Well done, mortal! Lead on!'"));
 
                        if (p_ptr->prace == RACE_ANDROID)
@@ -4557,15 +4542,10 @@ msg_format("%sの声が響き渡った:",
                                reward = _("経験値を得た", "experience");
                        }
                        break;
+
                case REW_LOSE_EXP:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「下僕よ、汝それに値せず。」", "'Thou didst not deserve that, slave.'"));
 
                        if (p_ptr->prace == RACE_ANDROID)
@@ -4578,9 +4558,10 @@ msg_format("%sの声が響き渡った:",
                                reward = _("経験値を失った。", "losing experience");
                        }
                        break;
+
                case REW_GOOD_OBJ:
 #ifdef JP
-msg_format("%sの声がささやいた:",
+                       msg_format("%sの声がささやいた:",
                                chaos_patrons[p_ptr->chaos_patron]);
 #else
                        msg_format("The voice of %s whispers:",
@@ -4592,29 +4573,19 @@ msg_format("%sの声がささやいた:",
                        acquirement(p_ptr->y, p_ptr->x, 1, FALSE, FALSE, FALSE);
                        reward = _("上質なアイテムを手に入れた。", "a good item");
                        break;
+
                case REW_GREA_OBJ:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「我が与えし物を賢明に使うべし。」", "'Use my gift wisely.'"));
 
                        acquirement(p_ptr->y, p_ptr->x, 1, TRUE, FALSE, FALSE);
                        reward = _("高級品のアイテムを手に入れた。", "an excellent item");
                        break;
+
                case REW_CHAOS_WP:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「汝の行いは貴き剣に値せり。」", "'Thy deed hath earned thee a worthy blade.'"));
 
                        /* Get local object */
@@ -4717,41 +4688,30 @@ msg_format("%sの声が響き渡った:",
                        (void)drop_near(q_ptr, -1, p_ptr->y, p_ptr->x);
                        reward = _("(混沌)の武器を手に入れた。", "chaos weapon");
                        break;
+
                case REW_GOOD_OBS:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「汝の行いは貴き報いに値せり。」", "'Thy deed hath earned thee a worthy reward.'"));
 
                        acquirement(p_ptr->y, p_ptr->x, randint1(2) + 1, FALSE, FALSE, FALSE);
                        reward = _("上質なアイテムを手に入れた。", "good items");
                        break;
+
                case REW_GREA_OBS:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「下僕よ、汝の献身への我が惜しみ無き報いを見るがよい。」", "'Behold, mortal, how generously I reward thy loyalty.'"));
 
                        acquirement(p_ptr->y, p_ptr->x, randint1(2) + 1, TRUE, FALSE, FALSE);
                        reward = _("高級品のアイテムを手に入れた。", "excellent items");
                        break;
+
                case REW_TY_CURSE:
 #ifdef JP
-msg_format("%sの声が轟き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
+                       msg_format("%sの声が轟き渡った:", chaos_patrons[p_ptr->chaos_patron]);
 #else
-                       msg_format("The voice of %s thunders:",
-                               chaos_patrons[p_ptr->chaos_patron]);
+                       msg_format("The voice of %s thunders:", chaos_patrons[p_ptr->chaos_patron]);
 #endif
 
                        msg_print(_("「下僕よ、汝傲慢なり。」", "'Thou art growing arrogant, mortal.'"));
@@ -4759,15 +4719,10 @@ msg_format("%sの声が轟き渡った:",
                        (void)activate_ty_curse(FALSE, &count);
                        reward = _("禍々しい呪いをかけられた。", "cursing");
                        break;
+
                case REW_SUMMON_M:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「我が下僕たちよ、かの傲慢なる者を倒すべし!」", "'My pets, destroy the arrogant mortal!'"));
 
                        for (dummy = 0; dummy < randint1(5) + 1; dummy++)
@@ -4776,23 +4731,21 @@ msg_format("%sの声が響き渡った:",
                        }
                        reward = _("モンスターを召喚された。", "summoning hostile monsters");
                        break;
+
+
                case REW_H_SUMMON:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「汝、より強き敵を必要とせり!」", "'Thou needst worthier opponents!'"));
 
                        activate_hi_summon(p_ptr->y, p_ptr->x, FALSE);
                        reward = _("モンスターを召喚された。", "summoning many hostile monsters");
                        break;
+
+
                case REW_DO_HAVOC:
 #ifdef JP
-msg_format("%sの声が響き渡った:",
+                       msg_format("%sの声が響き渡った:",
                                chaos_patrons[p_ptr->chaos_patron]);
 #else
                        msg_format("The voice of %s booms out:",
@@ -4804,9 +4757,11 @@ msg_format("%sの声が響き渡った:",
                        call_chaos();
                        reward = _("カオスの力が渦巻いた。", "calling chaos");
                        break;
+
+
                case REW_GAIN_ABL:
 #ifdef JP
-msg_format("%sの声が鳴り響いた:",
+                       msg_format("%sの声が鳴り響いた:",
                                chaos_patrons[p_ptr->chaos_patron]);
 #else
                        msg_format("The voice of %s rings out:",
@@ -4821,9 +4776,11 @@ msg_format("%sの声が鳴り響いた:",
                                do_inc_stat(randint0(6));
                        reward = _("能力値が上がった。", "increasing a stat");
                        break;
+
+
                case REW_LOSE_ABL:
 #ifdef JP
-msg_format("%sの声が響き渡った:",
+                       msg_format("%sの声が響き渡った:",
                                chaos_patrons[p_ptr->chaos_patron]);
 #else
                        msg_format("The voice of %s booms out:",
@@ -4838,9 +4795,12 @@ msg_format("%sの声が響き渡った:",
                                (void)do_dec_stat(randint0(6));
                        reward = _("能力値が下がった。", "decreasing a stat");
                        break;
+
+
                case REW_RUIN_ABL:
+
 #ifdef JP
-msg_format("%sの声が轟き渡った:",
+                       msg_format("%sの声が轟き渡った:",
                                chaos_patrons[p_ptr->chaos_patron]);
 #else
                        msg_format("The voice of %s thunders:",
@@ -4856,21 +4816,18 @@ msg_format("%sの声が轟き渡った:",
                        }
                        reward = _("全能力値が下がった。", "decreasing all stats");
                        break;
+
                case REW_POLY_WND:
-                       msg_format(_("%sの力が触れるのを感じた。", "You feel the power of %s touch you."),
 
+                       msg_format(_("%sの力が触れるのを感じた。", "You feel the power of %s touch you."),
                                chaos_patrons[p_ptr->chaos_patron]);
                        do_poly_wounds();
                        reward = _("傷が変化した。", "polymorphing wounds");
                        break;
+
                case REW_AUGM_ABL:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
+
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
 
                        msg_print(_("「我がささやかなる賜物を受けとるがよい!」", "'Receive this modest gift from me!'"));
 
@@ -4880,56 +4837,30 @@ msg_format("%sの声が響き渡った:",
                        }
                        reward = _("全能力値が上がった。", "increasing all stats");
                        break;
+
                case REW_HURT_LOT:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「苦しむがよい、無能な愚か者よ!」", "'Suffer, pathetic fool!'"));
 
                        fire_ball(GF_DISINTEGRATE, 0, p_ptr->lev * 4, 4);
                        take_hit(DAMAGE_NOESCAPE, p_ptr->lev * 4, wrath_reason, -1);
                        reward = _("分解の球が発生した。", "generating disintegration ball");
                        break;
-          case REW_HEAL_FUL:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
-                       msg_print(_("「甦るがよい、我が下僕よ!」", "'Rise, my servant!'"));
+               case REW_HEAL_FUL:
 
-                       restore_level();
-                       (void)set_poisoned(0);
-                       (void)set_blind(0);
-                       (void)set_confused(0);
-                       (void)set_image(0);
-                       (void)set_stun(0);
-                       (void)set_cut(0);
-                       hp_player(5000);
-                       for (dummy = 0; dummy < 6; dummy++)
-                       {
-                               (void)do_res_stat(dummy);
-                       }
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
+                       (void)restore_level();
+                       (void)restore_all_status();
+                       (void)true_healing(5000);
                        reward = _("体力が回復した。", "healing");
                        break;
+
                case REW_CURSE_WP:
-                       if (!buki_motteruka(INVEN_RARM) && !buki_motteruka(INVEN_LARM)) break;
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       if (!buki_motteruka(INVEN_RARM) && !buki_motteruka(INVEN_LARM)) break;
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「汝、武器に頼ることなかれ。」", "'Thou reliest too much on thy weapon.'"));
 
                        dummy = INVEN_RARM;
@@ -4942,16 +4873,11 @@ msg_format("%sの声が響き渡った:",
                        (void)curse_weapon(FALSE, dummy);
                        reward = format(_("%sが破壊された。", "destroying %s"), o_name);
                        break;
+
                case REW_CURSE_AR:
-                       if (!inventory[INVEN_BODY].k_idx) break;
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       if (!inventory[INVEN_BODY].k_idx) break;
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「汝、防具に頼ることなかれ。」", "'Thou reliest too much on thine equipment.'"));
 
                        object_desc(o_name, &inventory[INVEN_BODY], OD_NAME_ONLY);
@@ -4959,14 +4885,8 @@ msg_format("%sの声が響き渡った:",
                        reward = format(_("%sが破壊された。", "destroying %s"), o_name);
                        break;
                case REW_PISS_OFF:
-#ifdef JP
-msg_format("%sの声がささやいた:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s whispers:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声がささやいた:", "The voice of %s whispers:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「我を怒りしめた罪を償うべし。」", "'Now thou shalt pay for annoying me.'"));
 
                        switch (randint1(4))
@@ -5010,10 +4930,10 @@ msg_format("%sの声がささやいた:",
                                        break;
                        }
                        break;
+
                case REW_WRATH:
-                       msg_format(_("%sの声が轟き渡った:", "The voice of %s thunders:"),
 
-                               chaos_patrons[p_ptr->chaos_patron]);
+                       msg_format(_("%sの声が轟き渡った:", "The voice of %s thunders:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「死ぬがよい、下僕よ!」", "'Die, mortal!'"));
 
                        take_hit(DAMAGE_LOSELIFE, p_ptr->lev * 4, wrath_reason, -1);
@@ -5038,70 +4958,46 @@ msg_format("%sの声がささやいた:",
                        }
                        if (one_in_(2)) (void)curse_armor();
                        break;
+
                case REW_DESTRUCT:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「死と破壊こそ我が喜びなり!」", "'Death and destruction! This pleaseth me!'"));
 
                        (void)destroy_area(p_ptr->y, p_ptr->x, 25, FALSE);
                        reward = _("ダンジョンが*破壊*された。", "*destruct*ing dungeon");
                        break;
+
                case REW_GENOCIDE:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「我、汝の敵を抹殺せん!」", "'Let me relieve thee of thine oppressors!'"));
-
                        (void)symbol_genocide(0, FALSE);
                        reward = _("モンスターが抹殺された。", "genociding monsters");
                        break;
+
                case REW_MASS_GEN:
-#ifdef JP
-msg_format("%sの声が響き渡った:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("The voice of %s booms out:",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
                        msg_print(_("「我、汝の敵を抹殺せん!」", "'Let me relieve thee of thine oppressors!'"));
 
                        (void)mass_genocide(0, FALSE);
                        reward = _("モンスターが抹殺された。", "genociding nearby monsters");
                        break;
+
                case REW_DISPEL_C:
-#ifdef JP
-msg_format("%sの力が敵を攻撃するのを感じた!",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("You can feel the power of %s assault your enemies!",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sの力が敵を攻撃するのを感じた!", "You can feel the power of %s assault your enemies!"), chaos_patrons[p_ptr->chaos_patron]);
                        (void)dispel_monsters(p_ptr->lev * 4);
                        break;
+
                case REW_IGNORE:
-#ifdef JP
-msg_format("%sはあなたを無視した。",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#else
-                       msg_format("%s ignores you.",
-                               chaos_patrons[p_ptr->chaos_patron]);
-#endif
 
+                       msg_format(_("%sはあなたを無視した。", "%s ignores you."), chaos_patrons[p_ptr->chaos_patron]);
                        break;
+
                case REW_SER_DEMO:
+
                        msg_format(_("%sは褒美として悪魔の使いをよこした!", "%s rewards you with a demonic servant!"),chaos_patrons[p_ptr->chaos_patron]);
 
                        if (!summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, PM_FORCE_PET))
@@ -5110,6 +5006,7 @@ msg_format("%sはあなたを無視した。",
                                reward = _("悪魔がペットになった。", "a demonic servant");
 
                        break;
+
                case REW_SER_MONS:
                        msg_format(_("%sは褒美として使いをよこした!", "%s rewards you with a servant!"),chaos_patrons[p_ptr->chaos_patron]);
 
@@ -5119,6 +5016,7 @@ msg_format("%sはあなたを無視した。",
                                reward = _("モンスターがペットになった。", "a servant");
 
                        break;
+
                case REW_SER_UNDE:
                        msg_format(_("%sは褒美としてアンデッドの使いをよこした。", "%s rewards you with an undead servant!"),chaos_patrons[p_ptr->chaos_patron]);
 
@@ -5128,6 +5026,7 @@ msg_format("%sはあなたを無視した。",
                                reward = _("アンデッドがペットになった。", "an undead servant");
 
                        break;
+
                default:
                        msg_format(_("%sの声がどもった:", "The voice of %s stammers:"),
 
@@ -5405,13 +5304,12 @@ bool tgt_pt(POSITION *x_ptr, POSITION *y_ptr)
 }
 
 
-bool get_hack_dir(int *dp)
+bool get_hack_dir(DIRECTION *dp)
 {
-       int             dir;
+       DIRECTION dir;
        cptr    p;
        char    command;
 
-
        /* Initialize */
        (*dp) = 0;
 
@@ -5532,12 +5430,14 @@ s16b gain_energy(void)
 }
 
 
-/*
- * Return bow energy 
+/*!
+ * @brief 射撃武器の攻撃に必要な基本消費エネルギーを返す/Return bow energy
+ * @param sval 射撃武器のアイテム副分類ID 
+ * @return 消費する基本エネルギー
  */
-s16b bow_energy(OBJECT_SUBTYPE_VALUE sval)
+ENERGY bow_energy(OBJECT_SUBTYPE_VALUE sval)
 {
-       int energy = 100;
+       ENERGY energy = 10000;
 
        /* Analyze the launcher */
        switch (sval)
@@ -5739,7 +5639,7 @@ cptr rumor_bind_name(char *base, cptr fullname)
 
 void display_rumor(bool ex)
 {
-       bool err;
+       errr err;
        int section = 0;
        char Rumor[1024];
 
@@ -5786,7 +5686,7 @@ void display_rumor(bool ex)
                        }
                        else if  (strcmp(zz[0], "MONSTER") == 0)
                        {
-                               IDX r_idx;
+                               MONRACE_IDX r_idx;
                                monster_race *r_ptr;
 
                                while(1)