From: Hourier Date: Thu, 11 Jun 2020 11:41:49 +0000 (+0900) Subject: [Refactor] #40014 Moved monster_drop_carried_objects() from monster2.c/h to monster... X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=427995dcb16d6b8c19abb7498b1aae4daa78dd82;p=hengband%2Fhengband.git [Refactor] #40014 Moved monster_drop_carried_objects() from monster2.c/h to monster-object.c/h --- diff --git a/src/cmd-action/cmd-pet.c b/src/cmd-action/cmd-pet.c index cb7c680a7..69ee278a7 100644 --- a/src/cmd-action/cmd-pet.c +++ b/src/cmd-action/cmd-pet.c @@ -14,9 +14,9 @@ #include "monster/monster-describer.h" #include "monster/monster-description-types.h" #include "monster/monster-info.h" +#include "monster/monster-object.h" #include "monster/monster-remover.h" #include "monster/monster-status.h" -#include "monster/monster2.h" #include "monster/smart-learn-types.h" #include "object/object-hook.h" #include "pet/pet-util.h" diff --git a/src/monster/monster-death.c b/src/monster/monster-death.c index e93601fef..110e0adb7 100644 --- a/src/monster/monster-death.c +++ b/src/monster/monster-death.c @@ -24,6 +24,7 @@ #include "monster/monster-flag-types.h" #include "monster/monster-generator.h" #include "monster/monster-info.h" +#include "monster/monster-object.h" #include "monster/monster2.h" #include "monster/place-monster-types.h" #include "monster/smart-learn-types.h" diff --git a/src/monster/monster-object.c b/src/monster/monster-object.c index ac98eab79..36b62ca0a 100644 --- a/src/monster/monster-object.c +++ b/src/monster/monster-object.c @@ -1,5 +1,5 @@ /*! - * @brief モンスターが移動した結果、床のアイテムに重なった時の処理 + * @brief モンスターが移動した結果、床のアイテムに重なった時の処理と、モンスターがアイテムを落とす処理 * @date 2020/03/07 * @author Hourier */ @@ -16,6 +16,7 @@ #include "object-enchant/tr-types.h" #include "object/object-flags.h" #include "object/object-flavor.h" +#include "object/object-generator.h" #include "object/object-hook.h" #include "object/object-mark-types.h" @@ -156,3 +157,28 @@ void update_object_by_monster_movement(player_type *target_ptr, turn_flags *turn monster_pickup_object(target_ptr, turn_flags_ptr, m_idx, o_ptr, is_special_object, ny, nx, m_name, o_name, this_o_idx); } } + +/*! + * @brief モンスターが盗みや拾いで確保していたアイテムを全てドロップさせる / Drop all items carried by a monster + * @param player_ptr プレーヤーへの参照ポインタ + * @param m_ptr モンスター参照ポインタ + * @return なし + */ +void monster_drop_carried_objects(player_type *player_ptr, monster_type *m_ptr) +{ + OBJECT_IDX next_o_idx = 0; + for (OBJECT_IDX this_o_idx = m_ptr->hold_o_idx; this_o_idx; this_o_idx = next_o_idx) { + object_type forge; + object_type *o_ptr; + object_type *q_ptr; + o_ptr = &player_ptr->current_floor_ptr->o_list[this_o_idx]; + next_o_idx = o_ptr->next_o_idx; + q_ptr = &forge; + object_copy(q_ptr, o_ptr); + q_ptr->held_m_idx = 0; + delete_object_idx(player_ptr, this_o_idx); + (void)drop_near(player_ptr, q_ptr, -1, m_ptr->fy, m_ptr->fx); + } + + m_ptr->hold_o_idx = 0; +} diff --git a/src/monster/monster-object.h b/src/monster/monster-object.h index 2314bfc3d..78050d7a4 100644 --- a/src/monster/monster-object.h +++ b/src/monster/monster-object.h @@ -1,12 +1,7 @@ -/*! - * @brief monster-processのための構造体群 - * @date 2020/03/07 - * @author Hourier - */ - -#pragma once +#pragma once #include "system/angband.h" #include "monster/monster-processor-util.h" void update_object_by_monster_movement(player_type *target_ptr, turn_flags *turn_flags_ptr, MONSTER_IDX m_idx, POSITION ny, POSITION nx); +void monster_drop_carried_objects(player_type *player_ptr, monster_type *m_ptr); diff --git a/src/monster/monster2.c b/src/monster/monster2.c index 1c07645e5..b3884e843 100644 --- a/src/monster/monster2.c +++ b/src/monster/monster2.c @@ -403,33 +403,6 @@ SPEED get_mspeed(player_type *player_ptr, monster_race *r_ptr) } /*! - * @brief モンスターが盗みや拾いで確保していたアイテムを全てドロップさせる / Drop all items carried by a monster - * @param player_ptr プレーヤーへの参照ポインタ - * @param m_ptr モンスター参照ポインタ - * @return なし - */ -void monster_drop_carried_objects(player_type *player_ptr, monster_type *m_ptr) -{ - floor_type *floor_ptr = player_ptr->current_floor_ptr; - OBJECT_IDX next_o_idx = 0; - for (OBJECT_IDX this_o_idx = m_ptr->hold_o_idx; this_o_idx; this_o_idx = next_o_idx) { - object_type forge; - object_type *o_ptr; - object_type *q_ptr; - o_ptr = &floor_ptr->o_list[this_o_idx]; - next_o_idx = o_ptr->next_o_idx; - q_ptr = &forge; - - object_copy(q_ptr, o_ptr); - q_ptr->held_m_idx = 0; - delete_object_idx(player_ptr, this_o_idx); - (void)drop_near(player_ptr, q_ptr, -1, m_ptr->fy, m_ptr->fx); - } - - m_ptr->hold_o_idx = 0; -} - -/*! * @brief 指定したモンスターに隣接しているモンスターの数を返す。 * / Count number of adjacent monsters * @param player_ptr プレーヤーへの参照ポインタ diff --git a/src/monster/monster2.h b/src/monster/monster2.h index c6501277f..24b2ff91e 100644 --- a/src/monster/monster2.h +++ b/src/monster/monster2.h @@ -10,6 +10,4 @@ MONSTER_IDX m_pop(floor_type *floor_ptr); MONRACE_IDX get_mon_num(player_type *player_ptr, DEPTH level, BIT_FLAGS option); void choose_new_monster(player_type *player_ptr, MONSTER_IDX m_idx, bool born, MONRACE_IDX r_idx); SPEED get_mspeed(player_type *player_ptr, monster_race *r_ptr); -void monster_drop_carried_objects(player_type *player_ptr, monster_type *m_ptr); - int get_monster_crowd_number(floor_type *floor_ptr, MONSTER_IDX m_idx);