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"
15 * @brief アイテムの所持種類数が超えた場合にアイテムを床に落とす処理
17 void pack_overflow(PlayerType *player_ptr)
19 if (!player_ptr->inventory_list[INVEN_PACK].is_valid()) {
23 update_creature(player_ptr);
24 if (!player_ptr->inventory_list[INVEN_PACK].is_valid()) {
28 auto *o_ptr = &player_ptr->inventory_list[INVEN_PACK];
29 disturb(player_ptr, false, true);
30 msg_print(_("ザックからアイテムがあふれた!", "Your pack overflows!"));
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);
36 vary_item(player_ptr, INVEN_PACK, -255);
37 handle_stuff(player_ptr);