OSDN Git Service

Merge pull request #3532 from sikabane-works/release/3.0.0.87-alpha
[hengbandforosx/hengbandosx.git] / src / inventory / pack-overflow.cpp
1 #include "inventory/pack-overflow.h"
2 #include "core/disturbance.h"
3 #include "core/stuff-handler.h"
4 #include "flavor/flavor-describer.h"
5 #include "floor/floor-object.h"
6 #include "inventory/inventory-object.h"
7 #include "inventory/inventory-slot-types.h"
8 #include "object/object-info.h"
9 #include "player/player-status.h"
10 #include "system/item-entity.h"
11 #include "system/player-type-definition.h"
12 #include "view/display-messages.h"
13
14 /*!
15  * @brief アイテムの所持種類数が超えた場合にアイテムを床に落とす処理
16  */
17 void pack_overflow(PlayerType *player_ptr)
18 {
19     if (!player_ptr->inventory_list[INVEN_PACK].is_valid()) {
20         return;
21     }
22
23     update_creature(player_ptr);
24     if (!player_ptr->inventory_list[INVEN_PACK].is_valid()) {
25         return;
26     }
27
28     auto *o_ptr = &player_ptr->inventory_list[INVEN_PACK];
29     disturb(player_ptr, false, true);
30     msg_print(_("ザックからアイテムがあふれた!", "Your pack overflows!"));
31
32     const auto item_name = describe_flavor(player_ptr, o_ptr, 0);
33     msg_format(_("%s(%c)を落とした。", "You drop %s (%c)."), item_name.data(), index_to_label(INVEN_PACK));
34     (void)drop_near(player_ptr, o_ptr, 0, player_ptr->y, player_ptr->x);
35
36     vary_item(player_ptr, INVEN_PACK, -255);
37     handle_stuff(player_ptr);
38 }