OSDN Git Service

[Refactor] monster_name() で一部 cmd2.c の投擲対象処理を整理。
[hengband/hengband.git] / src / cmd-pet.c
index 4020418..a901365 100644 (file)
@@ -3,6 +3,7 @@
 #include "sort.h"
 #include "player-status.h"
 #include "object-hook.h"
+#include "monster.h"
 #include "monster-status.h"
 
 /*!
@@ -55,15 +56,13 @@ bool player_can_ride_aux(grid_type *g_ptr, bool now_riding)
 * @brief ペットの維持コスト計算
 * @return 維持コスト(%)
 */
-int calculate_upkeep(void)
+PERCENTAGE calculate_upkeep(void)
 {
-       s32b old_friend_align = friend_align;
        MONSTER_IDX m_idx;
        bool have_a_unique = FALSE;
-       s32b total_friend_levels = 0;
+       DEPTH total_friend_levels = 0;
 
        total_friends = 0;
-       friend_align = 0;
 
        for (m_idx = m_max - 1; m_idx >= 1; m_idx--)
        {
@@ -95,12 +94,9 @@ int calculate_upkeep(void)
                        else
                                total_friend_levels += r_ptr->level;
 
-                       /* Determine pet alignment */
-                       if (r_ptr->flags3 & RF3_GOOD) friend_align += r_ptr->level;
-                       if (r_ptr->flags3 & RF3_EVIL) friend_align -= r_ptr->level;
                }
        }
-       if (old_friend_align != friend_align) p_ptr->update |= (PU_BONUS);
+
        if (total_friends)
        {
                int upkeep_factor;
@@ -119,8 +115,8 @@ int calculate_upkeep(void)
 */
 void do_cmd_pet_dismiss(void)
 {
-       monster_type    *m_ptr;
-       bool            all_pets = FALSE;
+       monster_type *m_ptr;
+       bool all_pets = FALSE;
        MONSTER_IDX pet_ctr;
        int i;
        int Dismissed = 0;
@@ -220,14 +216,14 @@ void do_cmd_pet_dismiss(void)
 
                                p_ptr->riding = 0;
 
-                               p_ptr->update |= (PU_BONUS | PU_MONSTERS);
+                               p_ptr->update |= (PU_MONSTERS);
                                p_ptr->redraw |= (PR_EXTRA | PR_UHEALTH);
                        }
 
                        /* HACK : Add the line to message buffer */
                        msg_format(_("%s を放した。", "Dismissed %s."), friend_name);
+                       p_ptr->update |= (PU_BONUS);
                        p_ptr->window |= (PW_MESSAGE);
-                       handle_stuff();
 
                        delete_monster_idx(pet_ctr);
                        Dismissed++;
@@ -248,6 +244,8 @@ void do_cmd_pet_dismiss(void)
 #endif
        if (Dismissed == 0 && all_pets)
                msg_print(_("'U'nnamed は、乗馬以外の名前のないペットだけを全て解放します。", "'U'nnamed means all your pets except named pets and your mount."));
+
+       handle_stuff();
 }
 
 
@@ -953,35 +951,6 @@ void do_cmd_pet(void)
 
 
 /*!
-* @brief ペットの善悪属性に応じた維持コストの途中計算処理
-* @param m_ptr 計算基準となるモンスターの構造体参照ポインタ
-* @param inc m_ptrで指定したモンスターを維持コスト計算に加えるならTRUE、外すならFALSEを指定
-* @return なし
-*/
-void check_pets_num_and_align(monster_type *m_ptr, bool inc)
-{
-       s32b old_friend_align = friend_align;
-       monster_race *r_ptr = &r_info[m_ptr->r_idx];
-
-       if (inc)
-       {
-               total_friends++;
-               if (r_ptr->flags3 & RF3_GOOD) friend_align += r_ptr->level;
-               if (r_ptr->flags3 & RF3_EVIL) friend_align -= r_ptr->level;
-       }
-       else
-       {
-               total_friends--;
-               if (r_ptr->flags3 & RF3_GOOD) friend_align -= r_ptr->level;
-               if (r_ptr->flags3 & RF3_EVIL) friend_align += r_ptr->level;
-       }
-
-       if (old_friend_align != friend_align) p_ptr->update |= (PU_BONUS);
-}
-
-
-
-/*!
 * @brief プレイヤーの落馬判定処理
 * @param dam 落馬判定を発した際に受けたダメージ量
 * @param force TRUEならば強制的に落馬する
@@ -1039,7 +1008,6 @@ bool rakuba(HIT_POINT dam, bool force)
                {
                        grid_type *g_ptr;
 
-                       /* Access the location */
                        y = p_ptr->y + ddy_ddd[i];
                        x = p_ptr->x + ddx_ddd[i];