OSDN Git Service

[Refactor] #37353 calculate_upkeep() を player-status.c/h へ移動. / Move calculate_upkeep...
authordeskull <deskull@users.sourceforge.jp>
Tue, 11 Feb 2020 05:59:37 +0000 (14:59 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Tue, 11 Feb 2020 05:59:37 +0000 (14:59 +0900)
src/cmd/cmd-pet.c
src/cmd/cmd-pet.h
src/player-status.c
src/player-status.h

index 924200d..127d83a 100644 (file)
@@ -69,64 +69,6 @@ bool player_can_ride_aux(player_type *creature_ptr, grid_type *g_ptr, bool now_r
        return p_can_enter;
 }
 
-
-/*!
-* @brief ペットの維持コスト計算
-* @return 維持コスト(%)
-*/
-PERCENTAGE calculate_upkeep(player_type *creature_ptr)
-{
-       MONSTER_IDX m_idx;
-       bool have_a_unique = FALSE;
-       DEPTH total_friend_levels = 0;
-
-       total_friends = 0;
-
-       for (m_idx = creature_ptr->current_floor_ptr->m_max - 1; m_idx >= 1; m_idx--)
-       {
-               monster_type *m_ptr;
-               monster_race *r_ptr;
-
-               m_ptr = &creature_ptr->current_floor_ptr->m_list[m_idx];
-               if (!monster_is_valid(m_ptr)) continue;
-               r_ptr = &r_info[m_ptr->r_idx];
-
-               if (is_pet(m_ptr))
-               {
-                       total_friends++;
-                       if (r_ptr->flags1 & RF1_UNIQUE)
-                       {
-                               if (creature_ptr->pclass == CLASS_CAVALRY)
-                               {
-                                       if (creature_ptr->riding == m_idx)
-                                               total_friend_levels += (r_ptr->level + 5) * 2;
-                                       else if (!have_a_unique && (r_info[m_ptr->r_idx].flags7 & RF7_RIDING))
-                                               total_friend_levels += (r_ptr->level + 5) * 7 / 2;
-                                       else
-                                               total_friend_levels += (r_ptr->level + 5) * 10;
-                                       have_a_unique = TRUE;
-                               }
-                               else
-                                       total_friend_levels += (r_ptr->level + 5) * 10;
-                       }
-                       else
-                               total_friend_levels += r_ptr->level;
-
-               }
-       }
-
-       if (total_friends)
-       {
-               int upkeep_factor;
-               upkeep_factor = (total_friend_levels - (creature_ptr->lev * 80 / (cp_ptr->pet_upkeep_div)));
-               if (upkeep_factor < 0) upkeep_factor = 0;
-               if (upkeep_factor > 1000) upkeep_factor = 1000;
-               return upkeep_factor;
-       }
-       else
-               return 0;
-}
-
 /*!
 * @brief ペットを開放するコマンドのメインルーチン
 * @return なし
index 6065f61..7543711 100644 (file)
@@ -1,7 +1,6 @@
 #pragma once
 
 extern bool do_cmd_riding(player_type *creature_ptr, bool force);
-extern PERCENTAGE calculate_upkeep(player_type *creature_ptr);
 extern void do_cmd_pet_dismiss(player_type *creature_pt);
 extern void do_cmd_pet(player_type *creature_ptr);
 extern bool player_can_ride_aux(player_type *creature_ptr, grid_type *g_ptr, bool now_riding);
index 1988b8b..0848bad 100644 (file)
@@ -5416,3 +5416,61 @@ void stop_mouth(player_type *caster_ptr)
        if (music_singing_any(caster_ptr)) stop_singing(caster_ptr);
        if (hex_spelling_any(caster_ptr)) stop_hex_spell_all(caster_ptr);
 }
+
+
+/*!
+* @brief ペットの維持コスト計算
+* @return 維持コスト(%)
+*/
+PERCENTAGE calculate_upkeep(player_type *creature_ptr)
+{
+       MONSTER_IDX m_idx;
+       bool have_a_unique = FALSE;
+       DEPTH total_friend_levels = 0;
+
+       total_friends = 0;
+
+       for (m_idx = creature_ptr->current_floor_ptr->m_max - 1; m_idx >= 1; m_idx--)
+       {
+               monster_type *m_ptr;
+               monster_race *r_ptr;
+
+               m_ptr = &creature_ptr->current_floor_ptr->m_list[m_idx];
+               if (!monster_is_valid(m_ptr)) continue;
+               r_ptr = &r_info[m_ptr->r_idx];
+
+               if (is_pet(m_ptr))
+               {
+                       total_friends++;
+                       if (r_ptr->flags1 & RF1_UNIQUE)
+                       {
+                               if (creature_ptr->pclass == CLASS_CAVALRY)
+                               {
+                                       if (creature_ptr->riding == m_idx)
+                                               total_friend_levels += (r_ptr->level + 5) * 2;
+                                       else if (!have_a_unique && (r_info[m_ptr->r_idx].flags7 & RF7_RIDING))
+                                               total_friend_levels += (r_ptr->level + 5) * 7 / 2;
+                                       else
+                                               total_friend_levels += (r_ptr->level + 5) * 10;
+                                       have_a_unique = TRUE;
+                               }
+                               else
+                                       total_friend_levels += (r_ptr->level + 5) * 10;
+                       }
+                       else
+                               total_friend_levels += r_ptr->level;
+
+               }
+       }
+
+       if (total_friends)
+       {
+               int upkeep_factor;
+               upkeep_factor = (total_friend_levels - (creature_ptr->lev * 80 / (cp_ptr->pet_upkeep_div)));
+               if (upkeep_factor < 0) upkeep_factor = 0;
+               if (upkeep_factor > 1000) upkeep_factor = 1000;
+               return upkeep_factor;
+       }
+       else
+               return 0;
+}
index 25120d0..672d9e9 100644 (file)
@@ -839,3 +839,4 @@ extern void cheat_death(player_type *creature_ptr);
 
 extern void stop_singing(player_type *creature_ptr);
 extern void stop_mouth(player_type *caster_ptr);
+extern PERCENTAGE calculate_upkeep(player_type *creature_ptr);