1 #include "action/weapon-shield.h"
2 #include "flavor/flavor-describer.h"
3 #include "game-option/birth-options.h"
4 #include "inventory/inventory-object.h"
5 #include "inventory/inventory-slot-types.h"
6 #include "object-hook/hook-checker.h"
7 #include "object-hook/hook-weapon.h"
8 #include "object/object-generator.h"
9 #include "system/object-type-definition.h"
10 #include "view/display-messages.h"
14 * @param owner_ptr プレーヤーへの参照ポインタ
15 * @param item 持ち替えを行いたい装備部位ID
18 void verify_equip_slot(player_type *owner_ptr, INVENTORY_IDX item)
20 object_type *o_ptr, *new_o_ptr;
21 GAME_TEXT o_name[MAX_NLEN];
23 if (item == INVEN_RARM) {
24 if (!has_melee_weapon(owner_ptr, INVEN_LARM))
27 o_ptr = &owner_ptr->inventory_list[INVEN_LARM];
28 describe_flavor(owner_ptr, o_name, o_ptr, 0);
30 if (object_is_cursed(o_ptr)) {
31 if (object_allow_two_hands_wielding(o_ptr) && can_two_hands_wielding(owner_ptr))
32 msg_format(_("%sを両手で構えた。", "You are wielding %s with both hands."), o_name);
36 new_o_ptr = &owner_ptr->inventory_list[INVEN_RARM];
37 object_copy(new_o_ptr, o_ptr);
38 owner_ptr->total_weight += o_ptr->weight;
39 inven_item_increase(owner_ptr, INVEN_LARM, -((int)o_ptr->number));
40 inven_item_optimize(owner_ptr, INVEN_LARM);
41 if (object_allow_two_hands_wielding(o_ptr) && can_two_hands_wielding(owner_ptr))
42 msg_format(_("%sを両手で構えた。", "You are wielding %s with both hands."), o_name);
44 msg_format(_("%sを%sで構えた。", "You are wielding %s in your %s hand."), o_name, (left_hander ? _("左手", "left") : _("右手", "right")));
48 if (item != INVEN_LARM)
51 o_ptr = &owner_ptr->inventory_list[INVEN_RARM];
53 describe_flavor(owner_ptr, o_name, o_ptr, 0);
55 if (has_melee_weapon(owner_ptr, INVEN_RARM)) {
56 if (object_allow_two_hands_wielding(o_ptr) && can_two_hands_wielding(owner_ptr))
57 msg_format(_("%sを両手で構えた。", "You are wielding %s with both hands."), o_name);
62 if ((empty_hands(owner_ptr, FALSE) & EMPTY_HAND_RARM) || object_is_cursed(o_ptr))
65 new_o_ptr = &owner_ptr->inventory_list[INVEN_LARM];
66 object_copy(new_o_ptr, o_ptr);
67 owner_ptr->total_weight += o_ptr->weight;
68 inven_item_increase(owner_ptr, INVEN_RARM, -((int)o_ptr->number));
69 inven_item_optimize(owner_ptr, INVEN_RARM);
70 msg_format(_("%sを持ち替えた。", "You switched hand of %s."), o_name);