OSDN Git Service

[Refactor] #37353 コメント整理。 / Refactor comments.
[hengband/hengband.git] / src / melee1.c
index 71f1e13..fb192db 100644 (file)
@@ -16,6 +16,8 @@
 #include "player-damage.h"
 #include "monsterrace-hook.h"
 #include "melee.h"
+#include "projection.h"
+#include "monster-status.h"
 
 
 
@@ -183,7 +185,7 @@ static int check_hit(int power, DEPTH level, int stun)
 }
 
 /*! モンスターの侮辱行為メッセージテーブル / Hack -- possible "insult" messages */
-static cptr desc_insult[] =
+static concptr desc_insult[] =
 {
 #ifdef JP
        "があなたを侮辱した!",
@@ -212,7 +214,7 @@ static cptr desc_insult[] =
 };
 
 /*! マゴットのぼやきメッセージテーブル / Hack -- possible "insult" messages */
-static cptr desc_moan[] =
+static concptr desc_moan[] =
 {
 #ifdef JP
        "は何かを悲しんでいるようだ。",
@@ -240,13 +242,13 @@ static cptr desc_moan[] =
 * @return なし
 */
 static void touch_zap_player_aux(monster_type *m_ptr, bool immune, int flags_offset, int r_flags_offset, u32b aura_flag,
-       HIT_POINT(*dam_func)(HIT_POINT dam, cptr kb_str, int monspell, bool aura), cptr message)
+       HIT_POINT(*dam_func)(HIT_POINT dam, concptr kb_str, int monspell, bool aura), concptr message)
 {
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
        if ((atoffset(u32b, r_ptr, flags_offset) & aura_flag) && !immune)
        {
-               GAME_TEXT mon_name[80];
+               GAME_TEXT mon_name[MAX_NLEN];
                int aura_damage = damroll(1 + (r_ptr->level / 26), 1 + (r_ptr->level / 17));
 
                /* Hack -- Get the "died from" name */
@@ -295,11 +297,11 @@ static void natural_attack(s16b m_idx, int attack, bool *fear, bool *mdeath)
        int             n_weight = 0;
        monster_type    *m_ptr = &m_list[m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-       GAME_TEXT m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
 
        int             dice_num, dice_side;
 
-       cptr            atk_desc;
+       concptr            atk_desc;
 
        switch (attack)
        {
@@ -436,7 +438,7 @@ static void py_attack_aux(POSITION y, POSITION x, bool *fear, bool *mdeath, s16b
        /* Access the weapon */
        object_type     *o_ptr = &inventory[INVEN_RARM + hand];
 
-       GAME_TEXT m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
 
        bool            success_hit = FALSE;
        bool            backstab = FALSE;
@@ -1187,8 +1189,6 @@ static void py_attack_aux(POSITION y, POSITION x, bool *fear, bool *mdeath, s16b
 
                                msg_format(_("ミス! %sにかわされた。", "You miss %s."), m_name);
                                msg_print(_("振り回した大鎌が自分自身に返ってきた!", "Your scythe returns to you!"));
-
-                               /* Extract the flags */
                                object_flags(o_ptr, flgs_aux);
 
                                k = damroll(o_ptr->dd + p_ptr->to_dd[hand], o_ptr->ds + p_ptr->to_ds[hand]);
@@ -1323,7 +1323,7 @@ bool py_attack(POSITION y, POSITION x, BIT_FLAGS mode)
        cave_type       *c_ptr = &cave[y][x];
        monster_type    *m_ptr = &m_list[c_ptr->m_idx];
        monster_race    *r_ptr = &r_info[m_ptr->r_idx];
-       GAME_TEXT m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
 
        disturb(FALSE, TRUE);
 
@@ -1442,8 +1442,8 @@ bool py_attack(POSITION y, POSITION x, BIT_FLAGS mode)
 
                if (cur < max)
                {
-                       int ridinglevel = r_info[m_list[p_ptr->riding].r_idx].level;
-                       int targetlevel = r_ptr->level;
+                       DEPTH ridinglevel = r_info[m_list[p_ptr->riding].r_idx].level;
+                       DEPTH targetlevel = r_ptr->level;
                        int inc = 0;
 
                        if ((cur / 200 - 5) < targetlevel)
@@ -1459,7 +1459,6 @@ bool py_attack(POSITION y, POSITION x, BIT_FLAGS mode)
                        }
 
                        p_ptr->skill_exp[GINOU_RIDING] = MIN(max, cur + inc);
-
                        p_ptr->update |= (PU_BONUS);
                }
        }
@@ -1521,7 +1520,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
 
        GAME_TEXT o_name[MAX_NLEN];
 
-       GAME_TEXT m_name[80];
+       GAME_TEXT m_name[MAX_NLEN];
 
        char ddesc[80];
 
@@ -1572,7 +1571,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
                HIT_POINT power = 0;
                HIT_POINT damage = 0;
 
-               cptr act = NULL;
+               concptr act = NULL;
 
                /* Extract the attack infomation */
                int effect = r_ptr->blow[ap_cnt].effect;
@@ -1997,7 +1996,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
                                                if (apply_disenchant(0))
                                                {
                                                        /* Hack -- Update AC */
-                                                       handle_stuff();
+                                                       update_creature(p_ptr);
                                                        obvious = TRUE;
                                                }
                                        }
@@ -2056,7 +2055,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
                                                        o_ptr->pval = 0;
 
                                                        /* Combine / Reorder the pack */
-                                                       p_ptr->notice |= (PN_COMBINE | PN_REORDER);
+                                                       p_ptr->update |= (PU_COMBINE | PU_REORDER);
                                                        p_ptr->window |= (PW_INVEN);
 
                                                        break;
@@ -2152,7 +2151,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
                                        /* Find an item */
                                        for (k = 0; k < 10; k++)
                                        {
-                                               s16b o_idx;
+                                               OBJECT_IDX o_idx;
 
                                                /* Pick an item */
                                                i = (INVENTORY_IDX)randint0(INVEN_PACK);
@@ -2184,11 +2183,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
                                                if (o_idx)
                                                {
                                                        object_type *j_ptr;
-
-                                                       /* Get new object */
                                                        j_ptr = &o_list[o_idx];
-
-                                                       /* Copy object */
                                                        object_copy(j_ptr, o_ptr);
 
                                                        /* Modify number */
@@ -2305,7 +2300,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
                                        obvious = TRUE;
                                        msg_print(_("酸を浴びせられた!", "You are covered in acid!"));
                                        get_damage += acid_dam(damage, ddesc, -1, FALSE);
-                                       handle_stuff();
+                                       update_creature(p_ptr);
                                        update_smart_learn(m_idx, DRS_ACID);
                                        break;
                                }
@@ -2690,7 +2685,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
                                                        {
                                                                msg_print(_("あなたは以前ほど力強くなくなってしまった...。", "You're not as powerful as you used to be..."));
 
-                                                               for (k = 0; k < 6; k++)
+                                                               for (k = 0; k < A_MAX; k++)
                                                                {
                                                                        p_ptr->stat_cur[k] = (p_ptr->stat_cur[k] * 7) / 8;
                                                                        if (p_ptr->stat_cur[k] < 3) p_ptr->stat_cur[k] = 3;
@@ -3210,6 +3205,33 @@ bool make_attack_normal(MONSTER_IDX m_idx)
 #endif
 
                                }
+
+                               /* Gain shield experience */
+                               if (object_is_armour(&inventory[INVEN_RARM]) || object_is_armour(&inventory[INVEN_LARM]))
+                               {
+                                       int cur = p_ptr->skill_exp[GINOU_SHIELD];
+                                       int max = s_info[p_ptr->pclass].s_max[GINOU_SHIELD];
+
+                                       if (cur < max)
+                                       {
+                                               DEPTH targetlevel = r_ptr->level;
+                                               int inc = 0;
+
+
+                                               /* Extra experience */
+                                               if ((cur / 100) < targetlevel)
+                                               {
+                                                       if ((cur / 100 + 15) < targetlevel)
+                                                               inc += 1 + (targetlevel - (cur / 100 + 15));
+                                                       else
+                                                               inc += 1;
+                                               }
+
+                                               p_ptr->skill_exp[GINOU_SHIELD] = MIN(max, cur + inc);
+                                               p_ptr->update |= (PU_BONUS);
+                                       }
+                               }
+
                                damage = 0;
 
                                break;
@@ -3233,7 +3255,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
 
                if (p_ptr->riding && damage)
                {
-                       char m_steed_name[80];
+                       char m_steed_name[MAX_NLEN];
                        monster_desc(m_steed_name, &m_list[p_ptr->riding], 0);
                        if (rakuba((damage > 200) ? 200 : damage, FALSE))
                        {
@@ -3269,7 +3291,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
 
        if ((p_ptr->counter || (p_ptr->special_defense & KATA_MUSOU)) && alive && !p_ptr->is_dead && m_ptr->ml && (p_ptr->csp > 7))
        {
-               char m_target_name[80];
+               char m_target_name[MAX_NLEN];
                monster_desc(m_target_name, m_ptr, 0);
 
                p_ptr->csp -= 7;