constexpr auto q = _("どの書から学びますか? ", "Study which book? ");
constexpr auto s = _("読める書がない。", "You have no books that you can read.");
constexpr auto options = USE_INVEN | USE_FLOOR;
- short item;
- const auto *o_ptr = choose_object(player_ptr, &item, q, s, options, TvalItemTester(ItemKindType::HISSATSU_BOOK));
+ short i_idx;
+ const auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, options, TvalItemTester(ItemKindType::HISSATSU_BOOK));
if (o_ptr == nullptr) {
return;
}
PlayerClass(player_ptr).break_samurai_stance({ SamuraiStanceType::MUSOU });
constexpr auto q = _("どれを撃ちますか? ", "Fire which item? ");
constexpr auto s = _("発射されるアイテムがありません。", "You have nothing to fire.");
- short item;
- const auto *ammo_ptr = choose_object(player_ptr, &item, q, s, USE_INVEN | USE_FLOOR, TvalItemTester(player_ptr->tval_ammo));
+ short i_idx;
+ const auto *ammo_ptr = choose_object(player_ptr, &i_idx, q, s, USE_INVEN | USE_FLOOR, TvalItemTester(player_ptr->tval_ammo));
if (!ammo_ptr) {
flush();
return;
}
- exe_fire(player_ptr, item, item_ptr, snipe_type);
+ exe_fire(player_ptr, i_idx, item_ptr, snipe_type);
if (!player_ptr->is_fired || !PlayerClass(player_ptr).equals(PlayerClassType::SNIPER)) {
return;
}
*/
void do_cmd_browse(PlayerType *player_ptr)
{
- OBJECT_IDX item;
SPELL_IDX spell = -1;
int num = 0;
constexpr auto q = _("どの本を読みますか? ", "Browse which book? ");
constexpr auto s = _("読める本がない。", "You have no books that you can read.");
constexpr auto options = USE_INVEN | USE_FLOOR;
- const auto *o_ptr = choose_object(player_ptr, &item, q, s, options | (pc.equals(PlayerClassType::FORCETRAINER) ? USE_FORCE : 0), item_tester);
+ short i_idx;
+ const auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, options | (pc.equals(PlayerClassType::FORCETRAINER) ? USE_FORCE : 0), item_tester);
if (o_ptr == nullptr) {
- if (item == INVEN_FORCE) /* the_force */
+ if (i_idx == INVEN_FORCE) /* the_force */
{
do_cmd_mind_browse(player_ptr);
return;
constexpr auto q = _("どの本から学びますか? ", "Study which book? ");
constexpr auto s = _("読める本がない。", "You have no books that you can read.");
- short item;
- const auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), item_tester);
+ short i_idx;
+ const auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), item_tester);
if (o_ptr == nullptr) {
return;
}
constexpr auto s = _("呪文書がない!", "You have no spell books!");
auto item_tester = get_castable_spellbook_tester(player_ptr);
const auto options = USE_INVEN | USE_FLOOR | (pc.equals(PlayerClassType::FORCETRAINER) ? USE_FORCE : 0);
- short item;
- const auto *o_ptr = choose_object(player_ptr, &item, q, s, options, item_tester);
+ short i_idx;
+ const auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, options, item_tester);
if (o_ptr == nullptr) {
- if (item == INVEN_FORCE) {
+ if (i_idx == INVEN_FORCE) {
do_cmd_mind(player_ptr);
return true; //!< 錬気キャンセル時の処理がない
}
#include "view/display-messages.h"
struct destroy_type {
- OBJECT_IDX item = 0;
+ short i_idx = 0;
QUANTITY amt = 0;
QUANTITY old_number = 0;
bool force = false;
}
if (autopick_autoregister(player_ptr, destroy_ptr->o_ptr)) {
- autopick_alter_item(player_ptr, destroy_ptr->item, true);
+ autopick_alter_item(player_ptr, destroy_ptr->i_idx, true);
}
return false;
{
constexpr auto q = _("どのアイテムを壊しますか? ", "Destroy which item? ");
constexpr auto s = _("壊せるアイテムを持っていない。", "You have nothing to destroy.");
- destroy_ptr->o_ptr = choose_object(player_ptr, &destroy_ptr->item, q, s, USE_INVEN | USE_FLOOR);
+ destroy_ptr->o_ptr = choose_object(player_ptr, &destroy_ptr->i_idx, q, s, USE_INVEN | USE_FLOOR);
if (destroy_ptr->o_ptr == nullptr) {
return false;
}
msg_format(_("%sを壊した。", "You destroy %s."), destroy_ptr->item_name.data());
sound(SOUND_DESTITEM);
reduce_charges(destroy_ptr->o_ptr, destroy_ptr->amt);
- vary_item(player_ptr, destroy_ptr->item, -destroy_ptr->amt);
+ vary_item(player_ptr, destroy_ptr->i_idx, -destroy_ptr->amt);
process_destroy_magic_book(player_ptr, destroy_ptr);
if ((destroy_ptr->q_ptr->to_a != 0) || (destroy_ptr->q_ptr->to_d != 0) || (destroy_ptr->q_ptr->to_h != 0)) {
chg_virtue(player_ptr, Virtue::HARMONY, 1);
}
- if (destroy_ptr->item >= INVEN_MAIN_HAND) {
+ if (destroy_ptr->i_idx >= INVEN_MAIN_HAND) {
calc_android_exp(player_ptr);
}
}
*/
void do_cmd_eat_food(PlayerType *player_ptr)
{
- OBJECT_IDX item;
- concptr q, s;
-
PlayerClass(player_ptr).break_samurai_stance({ SamuraiStanceType::MUSOU, SamuraiStanceType::KOUKIJIN });
-
- q = _("どれを食べますか? ", "Eat which item? ");
- s = _("食べ物がない。", "You have nothing to eat.");
-
- if (!choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(item_tester_hook_eatable, player_ptr))) {
+ constexpr auto q = _("どれを食べますか? ", "Eat which item? ");
+ constexpr auto s = _("食べ物がない。", "You have nothing to eat.");
+ short i_idx;
+ if (!choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(item_tester_hook_eatable, player_ptr))) {
return;
}
- exe_eat_food(player_ptr, item);
+ exe_eat_food(player_ptr, i_idx);
}
*/
void do_cmd_wield(PlayerType *player_ptr)
{
- OBJECT_IDX item, slot;
ItemEntity forge;
ItemEntity *q_ptr;
- ItemEntity *o_ptr;
concptr act;
OBJECT_IDX need_switch_wielding = 0;
PlayerClass(player_ptr).break_samurai_stance({ SamuraiStanceType::MUSOU });
constexpr auto selection_q = _("どれを装備しますか? ", "Wear/Wield which item? ");
constexpr auto selection_s = _("装備可能なアイテムがない。", "You have nothing you can wear or wield.");
- o_ptr = choose_object(player_ptr, &item, selection_q, selection_s, (USE_INVEN | USE_FLOOR), FuncItemTester(item_tester_hook_wear, player_ptr));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, selection_q, selection_s, (USE_INVEN | USE_FLOOR), FuncItemTester(item_tester_hook_wear, player_ptr));
if (!o_ptr) {
return;
}
- slot = wield_slot(player_ptr, o_ptr);
-
+ auto slot = wield_slot(player_ptr, o_ptr);
const auto o_ptr_mh = &player_ptr->inventory_list[INVEN_MAIN_HAND];
const auto o_ptr_sh = &player_ptr->inventory_list[INVEN_SUB_HAND];
const auto tval = o_ptr->bi_key.tval();
check_find_art_quest_completion(player_ptr, o_ptr);
if (player_ptr->ppersonality == PERSONALITY_MUNCHKIN) {
identify_item(player_ptr, o_ptr);
- autopick_alter_item(player_ptr, item, false);
+ autopick_alter_item(player_ptr, i_idx, false);
}
PlayerEnergy(player_ptr).set_player_turn_energy(100);
q_ptr = &forge;
q_ptr->copy_from(o_ptr);
q_ptr->number = 1;
- if (item >= 0) {
- inven_item_increase(player_ptr, item, -1);
- inven_item_optimize(player_ptr, item);
+ if (i_idx >= 0) {
+ inven_item_increase(player_ptr, i_idx, -1);
+ inven_item_optimize(player_ptr, i_idx);
} else {
- floor_item_increase(player_ptr, 0 - item, -1);
- floor_item_optimize(player_ptr, 0 - item);
+ floor_item_increase(player_ptr, 0 - i_idx, -1);
+ floor_item_optimize(player_ptr, 0 - i_idx);
}
o_ptr = &player_ptr->inventory_list[slot];
*/
void do_cmd_takeoff(PlayerType *player_ptr)
{
- OBJECT_IDX item;
- ItemEntity *o_ptr;
PlayerClass pc(player_ptr);
pc.break_samurai_stance({ SamuraiStanceType::MUSOU });
constexpr auto q = _("どれを装備からはずしますか? ", "Take off which item? ");
constexpr auto s = _("はずせる装備がない。", "You are not wearing anything to take off.");
- o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | IGNORE_BOTHHAND_SLOT));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | IGNORE_BOTHHAND_SLOT));
if (!o_ptr) {
return;
}
sound(SOUND_TAKE_OFF);
energy.set_player_turn_energy(50);
- (void)inven_takeoff(player_ptr, item, 255);
- verify_equip_slot(player_ptr, item);
+ (void)inven_takeoff(player_ptr, i_idx, 255);
+ verify_equip_slot(player_ptr, i_idx);
calc_android_exp(player_ptr);
static constexpr auto flags_srf = {
StatusRecalculatingFlag::BONUS,
*/
void do_cmd_drop(PlayerType *player_ptr)
{
- OBJECT_IDX item;
int amt = 1;
- ItemEntity *o_ptr;
PlayerClass(player_ptr).break_samurai_stance({ SamuraiStanceType::MUSOU });
constexpr auto q = _("どのアイテムを落としますか? ", "Drop which item? ");
constexpr auto s = _("落とせるアイテムを持っていない。", "You have nothing to drop.");
- o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT));
if (!o_ptr) {
return;
}
- if ((item >= INVEN_MAIN_HAND) && o_ptr->is_cursed()) {
+ if ((i_idx >= INVEN_MAIN_HAND) && o_ptr->is_cursed()) {
msg_print(_("ふーむ、どうやら呪われているようだ。", "Hmmm, it seems to be cursed."));
return;
}
}
PlayerEnergy(player_ptr).set_player_turn_energy(50);
- drop_from_inventory(player_ptr, item, amt);
- if (item >= INVEN_MAIN_HAND) {
- verify_equip_slot(player_ptr, item);
+ drop_from_inventory(player_ptr, i_idx, amt);
+ if (i_idx >= INVEN_MAIN_HAND) {
+ verify_equip_slot(player_ptr, i_idx);
calc_android_exp(player_ptr);
}
*/
void do_cmd_observe(PlayerType *player_ptr)
{
- OBJECT_IDX item;
constexpr auto q = _("どのアイテムを調べますか? ", "Examine which item? ");
constexpr auto s = _("調べられるアイテムがない。", "You have nothing to examine.");
- auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT));
if (!o_ptr) {
return;
}
*/
void do_cmd_uninscribe(PlayerType *player_ptr)
{
- OBJECT_IDX item;
- ItemEntity *o_ptr;
constexpr auto q = _("どのアイテムの銘を消しますか? ", "Un-inscribe which item? ");
constexpr auto s = _("銘を消せるアイテムがない。", "You have nothing to un-inscribe.");
- o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT));
if (!o_ptr) {
return;
}
*/
void do_cmd_inscribe(PlayerType *player_ptr)
{
- OBJECT_IDX item;
constexpr auto q = _("どのアイテムに銘を刻みますか? ", "Inscribe which item? ");
constexpr auto s = _("銘を刻めるアイテムがない。", "You have nothing to inscribe.");
- auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT));
if (!o_ptr) {
return;
}
constexpr auto q = _("どれを使いますか?", "Use which item? ");
constexpr auto s = _("使えるものがありません。", "You have nothing to use.");
const auto options = USE_INVEN | USE_EQUIP | USE_FLOOR | IGNORE_BOTHHAND_SLOT;
- short item;
- const auto *o_ptr = choose_object(player_ptr, &item, q, s, options, FuncItemTester(item_tester_hook_use, player_ptr));
+ short i_idx;
+ const auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, options, FuncItemTester(item_tester_hook_use, player_ptr));
if (o_ptr == nullptr) {
return;
}
do_cmd_spike(player_ptr);
break;
case ItemKindType::FOOD:
- exe_eat_food(player_ptr, item);
+ exe_eat_food(player_ptr, i_idx);
break;
case ItemKindType::WAND:
- ObjectZapWandEntity(player_ptr).execute(item);
+ ObjectZapWandEntity(player_ptr).execute(i_idx);
break;
case ItemKindType::STAFF:
- ObjectUseEntity(player_ptr, item).execute();
+ ObjectUseEntity(player_ptr, i_idx).execute();
break;
case ItemKindType::ROD:
- ObjectZapRodEntity(player_ptr).execute(item);
+ ObjectZapRodEntity(player_ptr).execute(i_idx);
break;
case ItemKindType::POTION:
- ObjectQuaffEntity(player_ptr).execute(item);
+ ObjectQuaffEntity(player_ptr).execute(i_idx);
break;
case ItemKindType::SCROLL:
if (cmd_limit_blind(player_ptr) || cmd_limit_confused(player_ptr)) {
return;
}
- ObjectReadEntity(player_ptr, item).execute(true);
+ ObjectReadEntity(player_ptr, i_idx).execute(true);
break;
case ItemKindType::SHOT:
case ItemKindType::ARROW:
case ItemKindType::BOLT:
- exe_fire(player_ptr, item, &player_ptr->inventory_list[INVEN_BOW], SP_NONE);
+ exe_fire(player_ptr, i_idx, &player_ptr->inventory_list[INVEN_BOW], SP_NONE);
break;
default:
- exe_activate(player_ptr, item);
+ exe_activate(player_ptr, i_idx);
break;
}
}
*/
void do_cmd_activate(PlayerType *player_ptr)
{
- OBJECT_IDX item;
if (player_ptr->wild_mode || cmd_limit_arena(player_ptr)) {
return;
}
PlayerClass(player_ptr).break_samurai_stance({ SamuraiStanceType::MUSOU, SamuraiStanceType::KOUKIJIN });
-
constexpr auto q = _("どのアイテムを始動させますか? ", "Activate which item? ");
constexpr auto s = _("始動できるアイテムを装備していない。", "You have nothing to activate.");
- if (!choose_object(player_ptr, &item, q, s, (USE_EQUIP | IGNORE_BOTHHAND_SLOT), FuncItemTester(&ItemEntity::is_activatable))) {
+ short i_idx;
+ if (!choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | IGNORE_BOTHHAND_SLOT), FuncItemTester(&ItemEntity::is_activatable))) {
return;
}
- exe_activate(player_ptr, item);
+ exe_activate(player_ptr, i_idx);
}
constexpr auto q = _("どの薬を飲みますか? ", "Quaff which potion? ");
constexpr auto s = _("飲める薬がない。", "You have no potions to quaff.");
- OBJECT_IDX item;
- if (!choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(item_tester_hook_quaff, player_ptr))) {
+ short i_idx;
+ if (!choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(item_tester_hook_quaff, player_ptr))) {
return;
}
- ObjectQuaffEntity(player_ptr).execute(item);
+ ObjectQuaffEntity(player_ptr).execute(i_idx);
}
constexpr auto q = _("どの巻物を読みますか? ", "Read which scroll? ");
constexpr auto s = _("読める巻物がない。", "You have no scrolls to read.");
- ItemEntity *o_ptr;
- OBJECT_IDX item;
- o_ptr = choose_object(player_ptr, &item, q, s, USE_INVEN | USE_FLOOR, FuncItemTester(&ItemEntity::is_readable));
+ short i_idx;
+ const auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, USE_INVEN | USE_FLOOR, FuncItemTester(&ItemEntity::is_readable));
if (!o_ptr) {
return;
}
- ObjectReadEntity(player_ptr, item).execute(o_ptr->is_aware());
+ ObjectReadEntity(player_ptr, i_idx).execute(o_ptr->is_aware());
}
*/
static void do_cmd_refill_lamp(PlayerType *player_ptr)
{
- OBJECT_IDX item;
- ItemEntity *o_ptr;
- ItemEntity *j_ptr;
constexpr auto q = _("どの油つぼから注ぎますか? ", "Refill with which flask? ");
constexpr auto s = _("油つぼがない。", "You have no flasks of oil.");
- o_ptr = choose_object(player_ptr, &item, q, s, USE_INVEN | USE_FLOOR, FuncItemTester(&ItemEntity::can_refill_lantern));
+ short i_idx;
+ const auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, USE_INVEN | USE_FLOOR, FuncItemTester(&ItemEntity::can_refill_lantern));
if (!o_ptr) {
return;
}
const auto flags = o_ptr->get_flags();
PlayerEnergy(player_ptr).set_player_turn_energy(50);
- j_ptr = &player_ptr->inventory_list[INVEN_LITE];
+ auto *j_ptr = &player_ptr->inventory_list[INVEN_LITE];
const auto flags2 = j_ptr->get_flags();
j_ptr->fuel += o_ptr->fuel;
msg_print(_("ランプに油を注いだ。", "You fuel your lamp."));
msg_print(_("ランプの油は一杯だ。", "Your lamp is full."));
}
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
RedrawingFlagsUpdater::get_instance().set_flag(StatusRecalculatingFlag::TORCH);
}
*/
static void do_cmd_refill_torch(PlayerType *player_ptr)
{
- OBJECT_IDX item;
- ItemEntity *o_ptr;
- ItemEntity *j_ptr;
constexpr auto q = _("どの松明で明かりを強めますか? ", "Refuel with which torch? ");
constexpr auto s = _("他に松明がない。", "You have no extra torches.");
- o_ptr = choose_object(player_ptr, &item, q, s, USE_INVEN | USE_FLOOR, FuncItemTester(&ItemEntity::can_refill_torch));
+ short i_idx;
+ const auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, USE_INVEN | USE_FLOOR, FuncItemTester(&ItemEntity::can_refill_torch));
if (!o_ptr) {
return;
}
const auto flags = o_ptr->get_flags();
PlayerEnergy(player_ptr).set_player_turn_energy(50);
- j_ptr = &player_ptr->inventory_list[INVEN_LITE];
+ auto *j_ptr = &player_ptr->inventory_list[INVEN_LITE];
const auto flags2 = j_ptr->get_flags();
j_ptr->fuel += o_ptr->fuel + 5;
msg_print(_("松明を結合した。", "You combine the torches."));
msg_print(_("松明はいっそう明るく輝いた。", "Your torch glows more brightly."));
}
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
RedrawingFlagsUpdater::get_instance().set_flag(StatusRecalculatingFlag::TORCH);
}
}
ote.reflect_inventory_by_throw();
- if (ote.item >= INVEN_MAIN_HAND) {
+ if (ote.i_idx >= INVEN_MAIN_HAND) {
ote.equiped_item = true;
RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::EQUIPPY);
}
*/
void do_cmd_use_staff(PlayerType *player_ptr)
{
- OBJECT_IDX item;
- concptr q, s;
-
if (player_ptr->wild_mode) {
return;
}
}
PlayerClass(player_ptr).break_samurai_stance({ SamuraiStanceType::MUSOU, SamuraiStanceType::KOUKIJIN });
-
- q = _("どの杖を使いますか? ", "Use which staff? ");
- s = _("使える杖がない。", "You have no staff to use.");
- if (!choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), TvalItemTester(ItemKindType::STAFF))) {
+ constexpr auto q = _("どの杖を使いますか? ", "Use which staff? ");
+ constexpr auto s = _("使える杖がない。", "You have no staff to use.");
+ short i_idx;
+ if (!choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), TvalItemTester(ItemKindType::STAFF))) {
return;
}
- ObjectUseEntity(player_ptr, item).execute();
+ ObjectUseEntity(player_ptr, i_idx).execute();
}
PlayerClass(player_ptr).break_samurai_stance({ SamuraiStanceType::MUSOU, SamuraiStanceType::KOUKIJIN });
- auto q = _("どのロッドを振りますか? ", "Zap which rod? ");
- auto s = _("使えるロッドがない。", "You have no rod to zap.");
- OBJECT_IDX item;
- if (!choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), TvalItemTester(ItemKindType::ROD))) {
+ constexpr auto q = _("どのロッドを振りますか? ", "Zap which rod? ");
+ constexpr auto s = _("使えるロッドがない。", "You have no rod to zap.");
+ short i_idx;
+ if (!choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), TvalItemTester(ItemKindType::ROD))) {
return;
}
- ObjectZapRodEntity(player_ptr).execute(item);
+ ObjectZapRodEntity(player_ptr).execute(i_idx);
}
*/
void do_cmd_aim_wand(PlayerType *player_ptr)
{
- OBJECT_IDX item;
- concptr q, s;
-
if (player_ptr->wild_mode) {
return;
}
}
PlayerClass(player_ptr).break_samurai_stance({ SamuraiStanceType::MUSOU, SamuraiStanceType::KOUKIJIN });
- q = _("どの魔法棒で狙いますか? ", "Aim which wand? ");
- s = _("使える魔法棒がない。", "You have no wand to aim.");
- if (!choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), TvalItemTester(ItemKindType::WAND))) {
+ constexpr auto q = _("どの魔法棒で狙いますか? ", "Aim which wand? ");
+ constexpr auto s = _("使える魔法棒がない。", "You have no wand to aim.");
+ short i_idx;
+ if (!choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), TvalItemTester(ItemKindType::WAND))) {
return;
}
- ObjectZapWandEntity(player_ptr).execute(item);
+ ObjectZapWandEntity(player_ptr).execute(i_idx);
}
}
/*
- * Choose an item and get auto-picker entry from it.
+ * @brief Choose an item and get auto-picker entry from it.
+ * @todo initial_i_idx をポインタではなく値に変え、戻り値をstd::pairに変える
*/
-ItemEntity *choose_object(PlayerType *player_ptr, OBJECT_IDX *idx, concptr q, concptr s, BIT_FLAGS option, const ItemTester &item_tester)
+ItemEntity *choose_object(PlayerType *player_ptr, short *initial_i_idx, concptr q, concptr s, BIT_FLAGS option, const ItemTester &item_tester)
{
- OBJECT_IDX item;
-
- if (idx) {
- *idx = INVEN_NONE;
+ if (initial_i_idx) {
+ *initial_i_idx = INVEN_NONE;
}
FixItemTesterSetter setter(item_tester);
-
- if (!get_item(player_ptr, &item, q, s, option, item_tester)) {
+ short i_idx;
+ if (!get_item(player_ptr, &i_idx, q, s, option, item_tester)) {
return nullptr;
}
- if (idx) {
- *idx = item;
+ if (initial_i_idx) {
+ *initial_i_idx = i_idx;
}
- if (item == INVEN_FORCE) {
+ if (i_idx == INVEN_FORCE) {
return nullptr;
}
- return ref_item(player_ptr, item);
+ return ref_item(player_ptr, i_idx);
}
OBJECT_IDX drop_near(PlayerType *player_ptr, ItemEntity *o_ptr, PERCENTAGE chance, POSITION y, POSITION x);
void floor_item_charges(FloorType *player_ptr, INVENTORY_IDX i_idx);
void floor_item_describe(PlayerType *player_ptr, INVENTORY_IDX i_idx);
-ItemEntity *choose_object(PlayerType *player_ptr, OBJECT_IDX *idx, concptr q, concptr s, BIT_FLAGS option, const ItemTester &item_tester = AllMatchItemTester());
+ItemEntity *choose_object(PlayerType *player_ptr, short *initial_i_idx, concptr q, concptr s, BIT_FLAGS option, const ItemTester &item_tester = AllMatchItemTester());
*/
static bool py_pickup_floor_aux(PlayerType *player_ptr)
{
- OBJECT_IDX this_o_idx;
- OBJECT_IDX item;
+ short this_o_idx;
+ short i_idx;
constexpr auto q = _("どれを拾いますか?", "Get which item? ");
constexpr auto s = _("もうザックには床にあるどのアイテムも入らない。", "You no longer have any room for the objects on the floor.");
- if (choose_object(player_ptr, &item, q, s, (USE_FLOOR), FuncItemTester(check_store_item_to_inventory, player_ptr))) {
- this_o_idx = 0 - item;
+ if (choose_object(player_ptr, &i_idx, q, s, (USE_FLOOR), FuncItemTester(check_store_item_to_inventory, player_ptr))) {
+ this_o_idx = 0 - i_idx;
} else {
return false;
}
constexpr auto first_q = _("第一の武器は?", "What is your first weapon? ");
constexpr auto first_s = _("比べるものがありません。", "You have nothing to compare.");
- OBJECT_IDX item;
+ short i_idx_first;
constexpr auto options = USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT;
- o_ptr[0] = choose_object(player_ptr, &item, first_q, first_s, options, FuncItemTester(&ItemEntity::is_orthodox_melee_weapons));
+ o_ptr[0] = choose_object(player_ptr, &i_idx_first, first_q, first_s, options, FuncItemTester(&ItemEntity::is_orthodox_melee_weapons));
if (!o_ptr[0]) {
screen_load();
return 0;
constexpr auto q = _("第二の武器は?", "What is your second weapon? ");
constexpr auto s = _("比べるものがありません。", "You have nothing to compare.");
- OBJECT_IDX item2;
- ItemEntity *i2_ptr = choose_object(player_ptr, &item2, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT), FuncItemTester(&ItemEntity::is_orthodox_melee_weapons));
+ short i_idx_second;
+ auto *i2_ptr = choose_object(player_ptr, &i_idx_second, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT), FuncItemTester(&ItemEntity::is_orthodox_melee_weapons));
if (!i2_ptr) {
continue;
}
constexpr auto q = _("どのアイテムを改良しますか?", "Improve which item? ");
constexpr auto s = _("改良できるものがありません。", "You have nothing to improve.");
- OBJECT_IDX item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_EQUIP | IGNORE_BOTHHAND_SLOT), item_tester);
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_EQUIP | IGNORE_BOTHHAND_SLOT), item_tester);
if (!o_ptr) {
return false;
}
#endif
player_ptr->au -= total_cost;
- if (item >= INVEN_MAIN_HAND) {
+ if (i_idx >= INVEN_MAIN_HAND) {
calc_android_exp(player_ptr);
}
return true;
prt(_(" 再充填の費用はアイテムの種類によります。", " The prices of recharge depend on the type."), 6, 0);
constexpr auto q = _("どのアイテムに魔力を充填しますか? ", "Recharge which item? ");
constexpr auto s = _("魔力を充填すべきアイテムがない。", "You have nothing to recharge.");
- OBJECT_IDX item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::can_recharge));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::can_recharge));
if (o_ptr == nullptr) {
return;
}
identify_item(player_ptr, o_ptr);
const auto item_name = describe_flavor(player_ptr, o_ptr, 0);
msg_format(_("%s です。", "You have: %s."), item_name.data());
- autopick_alter_item(player_ptr, item, false);
+ autopick_alter_item(player_ptr, i_idx, false);
building_prt_gold(player_ptr);
}
case AMMO_ARROW: {
constexpr auto q = _("どのアイテムから作りますか? ", "Convert which item? ");
constexpr auto s = _("材料を持っていない。", "You have no item to convert.");
- OBJECT_IDX item;
- auto *q_ptr = choose_object(player_ptr, &item, q, s, USE_INVEN | USE_FLOOR, FuncItemTester(&ItemEntity::is_convertible));
+ short i_idx;
+ auto *q_ptr = choose_object(player_ptr, &i_idx, q, s, USE_INVEN | USE_FLOOR, FuncItemTester(&ItemEntity::is_convertible));
if (!q_ptr) {
return false;
}
q_ptr->discount = 99;
const auto item_name = describe_flavor(player_ptr, q_ptr, 0);
msg_print(_(format("%sを作った。", item_name.data()), "You make some ammo."));
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
int16_t slot = store_item_to_inventory(player_ptr, q_ptr);
if (slot >= 0) {
autopick_alter_item(player_ptr, slot, false);
case AMMO_BOLT: {
constexpr auto q = _("どのアイテムから作りますか? ", "Convert which item? ");
constexpr auto s = _("材料を持っていない。", "You have no item to convert.");
- OBJECT_IDX item;
- auto *q_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::is_convertible));
+ short i_idx;
+ auto *q_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::is_convertible));
if (!q_ptr) {
return false;
}
q_ptr->discount = 99;
const auto item_name = describe_flavor(player_ptr, q_ptr, 0);
msg_print(_(format("%sを作った。", item_name.data()), "You make some ammo."));
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
int16_t slot = store_item_to_inventory(player_ptr, q_ptr);
if (slot >= 0) {
autopick_alter_item(player_ptr, slot, false);
byte fail_type = 1;
constexpr auto q = _("どのアイテムから魔力を吸収しますか?", "Drain which item? ");
constexpr auto s = _("魔力を吸収できるアイテムがありません。", "You have nothing to drain.");
- short item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::can_recharge));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::can_recharge));
if (o_ptr == nullptr) {
return false;
}
player_ptr->csp += lev / 2;
o_ptr->pval--;
- if ((tval == ItemKindType::STAFF) && (item >= 0) && (o_ptr->number > 1)) {
+ if ((tval == ItemKindType::STAFF) && (i_idx >= 0) && (o_ptr->number > 1)) {
ItemEntity forge;
ItemEntity *q_ptr;
q_ptr = &forge;
q_ptr->number = 1;
o_ptr->pval++;
o_ptr->number--;
- item = store_item_to_inventory(player_ptr, q_ptr);
+ i_idx = store_item_to_inventory(player_ptr, q_ptr);
msg_print(_("杖をまとめなおした。", "You unstack your staff."));
}
msg_format(_("乱暴な魔法のために%sが壊れた!", "Wild magic consumes your %s!"), item_name.data());
}
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
}
if (fail_type == 3) {
msg_format(_("乱暴な魔法のために%sが壊れた!", "Wild magic consumes your %s!"), item_name.data());
}
- vary_item(player_ptr, item, -999);
+ vary_item(player_ptr, i_idx, -999);
}
return redraw_player(player_ptr);
{
constexpr auto q = _("どのアイテムの魔力を取り込みますか? ", "Gain power of which item? ");
constexpr auto s = _("魔力を取り込めるアイテムがない。", "There's nothing with power to absorb.");
- OBJECT_IDX item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, USE_INVEN | USE_FLOOR, FuncItemTester(&ItemEntity::can_recharge));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, USE_INVEN | USE_FLOOR, FuncItemTester(&ItemEntity::can_recharge));
if (o_ptr == nullptr) {
return false;
}
const auto item_name = describe_flavor(player_ptr, o_ptr, 0);
msg_format(_("%sの魔力を取り込んだ。", "You absorb magic of %s."), item_name.data());
- vary_item(player_ptr, item, -999);
+ vary_item(player_ptr, i_idx, -999);
PlayerEnergy(player_ptr).set_player_turn_energy(100);
return true;
}
{
constexpr auto q = _("どのアイテムを調べますか?", "Meditate on which item? ");
constexpr auto s = _("調べるアイテムがありません。", "You have nothing appropriate.");
- ItemEntity *o_ptr;
- OBJECT_IDX item;
- o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT));
if (!o_ptr) {
return false;
}
break;
}
- autopick_alter_item(player_ptr, item, (bool)(okay && destroy_feeling));
+ autopick_alter_item(player_ptr, i_idx, (bool)(okay && destroy_feeling));
return true;
}
constexpr auto q = _("どのアイテムを祝福しますか?", "Bless which weapon? ");
constexpr auto s = _("祝福できる武器がありません。", "You have no weapon to bless.");
- OBJECT_IDX item;
+ short i_idx;
constexpr BIT_FLAGS options = USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, options, FuncItemTester(&ItemEntity::is_weapon));
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, options, FuncItemTester(&ItemEntity::is_weapon));
if (!o_ptr) {
return false;
}
#ifdef JP
msg_format("%sを覆う黒いオーラは祝福を跳ね返した!", item_name.data());
#else
- msg_format("The black aura on %s %s disrupts the blessing!", ((item >= 0) ? "your" : "the"), item_name.data());
+ msg_format("The black aura on %s %s disrupts the blessing!", ((i_idx >= 0) ? "your" : "the"), item_name.data());
#endif
return true;
#ifdef JP
msg_format("%s から邪悪なオーラが消えた。", item_name.data());
#else
- msg_format("A malignant aura leaves %s %s.", ((item >= 0) ? "your" : "the"), item_name.data());
+ msg_format("A malignant aura leaves %s %s.", ((i_idx >= 0) ? "your" : "the"), item_name.data());
#endif
o_ptr->curse_flags.clear();
set_bits(o_ptr->ident, IDENT_SENSE);
#ifdef JP
msg_format("%s は既に祝福されている。", item_name.data());
#else
- msg_format("%s %s %s blessed already.", ((item >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "were" : "was"));
+ msg_format("%s %s %s blessed already.", ((i_idx >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "were" : "was"));
#endif
return true;
}
#ifdef JP
msg_format("%sは輝いた!", item_name.data());
#else
- msg_format("%s %s shine%s!", ((item >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "" : "s"));
+ msg_format("%s %s shine%s!", ((i_idx >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "" : "s"));
#endif
o_ptr->art_flags.set(TR_BLESSED);
o_ptr->discount = 99;
#ifdef JP
msg_format("%s は劣化した!", item_name.data());
#else
- msg_format("%s %s %s disenchanted!", ((item >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "were" : "was"));
+ msg_format("%s %s %s disenchanted!", ((i_idx >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "were" : "was"));
#endif
}
}
auto q = _("どのアイテムから抽出しますか?", "Extract from which item? ");
auto s = _("抽出できるアイテムがありません。", "You have nothing you can extract from.");
- OBJECT_IDX item;
+ short i_idx;
constexpr auto options = USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT;
- auto o_ptr = choose_object(player_ptr, &item, q, s, options, FuncItemTester(&ItemEntity::is_weapon_armour_ammo));
+ auto o_ptr = choose_object(player_ptr, &i_idx, q, s, options, FuncItemTester(&ItemEntity::is_weapon_armour_ammo));
if (!o_ptr) {
return;
}
}
/* Apply autodestroy/inscription to the drained item */
- autopick_alter_item(player_ptr, item, true);
+ autopick_alter_item(player_ptr, i_idx, true);
set_smith_redrawing_flags();
}
*/
static void add_essence(PlayerType *player_ptr, SmithCategoryType mode)
{
- OBJECT_IDX item;
- bool flag;
- concptr q, s;
- ItemEntity *o_ptr;
int menu_line = (use_menu ? 1 : 0);
Smith smith(player_ptr);
COMMAND_CODE i = -1;
COMMAND_CODE effect_idx;
-
+ bool flag;
if (!repeat_pull(&effect_idx) || effect_idx < 0 || effect_idx >= smith_effect_list_max) {
flag = false;
auto item_tester = Smith::get_item_tester(effect);
- q = _("どのアイテムを改良しますか?", "Improve which item? ");
- s = _("改良できるアイテムがありません。", "You have nothing to improve.");
-
- o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), *item_tester);
+ constexpr auto q = _("どのアイテムを改良しますか?", "Improve which item? ");
+ constexpr auto s = _("改良できるアイテムがありません。", "You have nothing to improve.");
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), *item_tester);
if (!o_ptr) {
return;
}
{
constexpr auto q = _("どのアイテムのエッセンスを消去しますか?", "Remove from which item? ");
constexpr auto s = _("エッセンスを付加したアイテムがありません。", "You have nothing with added essence to remove.");
- OBJECT_IDX item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::is_smith));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::is_smith));
if (!o_ptr) {
return;
}
return false;
}
- if (this->o_ptr->is_cursed() && (this->item >= INVEN_MAIN_HAND)) {
+ if (this->o_ptr->is_cursed() && (this->i_idx >= INVEN_MAIN_HAND)) {
msg_print(_("ふーむ、どうやら呪われているようだ。", "Hmmm, it seems to be cursed."));
return false;
}
this->return_when_thrown = true;
}
- if (this->item < 0) {
- floor_item_increase(this->player_ptr, 0 - this->item, -1);
- floor_item_optimize(this->player_ptr, 0 - this->item);
+ if (this->i_idx < 0) {
+ floor_item_increase(this->player_ptr, 0 - this->i_idx, -1);
+ floor_item_optimize(this->player_ptr, 0 - this->i_idx);
return;
}
- inven_item_increase(this->player_ptr, this->item, -1);
+ inven_item_increase(this->player_ptr, this->i_idx, -1);
if (!this->return_when_thrown) {
- inven_item_describe(this->player_ptr, this->item);
+ inven_item_describe(this->player_ptr, this->i_idx);
}
- inven_item_optimize(this->player_ptr, this->item);
+ inven_item_optimize(this->player_ptr, this->i_idx);
}
void ObjectThrowEntity::set_class_specific_throw_params()
void ObjectThrowEntity::process_boomerang_back()
{
if (this->come_back) {
- if ((this->item != INVEN_MAIN_HAND) && (this->item != INVEN_SUB_HAND)) {
+ if ((this->i_idx != INVEN_MAIN_HAND) && (this->i_idx != INVEN_SUB_HAND)) {
store_item_to_inventory(this->player_ptr, this->q_ptr);
this->do_drop = false;
return;
}
- this->o_ptr = &player_ptr->inventory_list[this->item];
+ this->o_ptr = &player_ptr->inventory_list[this->i_idx];
this->o_ptr->copy_from(this->q_ptr);
this->player_ptr->equip_cnt++;
auto &rfu = RedrawingFlagsUpdater::get_instance();
}
if (this->equiped_item) {
- verify_equip_slot(this->player_ptr, this->item);
+ verify_equip_slot(this->player_ptr, this->i_idx);
calc_android_exp(this->player_ptr);
}
}
bool ObjectThrowEntity::check_what_throw()
{
if (this->shuriken >= 0) {
- this->item = this->shuriken;
- this->o_ptr = &this->player_ptr->inventory_list[this->item];
+ this->i_idx = this->shuriken;
+ this->o_ptr = &this->player_ptr->inventory_list[this->i_idx];
return true;
}
return this->check_throw_boomerang();
}
- concptr q, s;
- q = _("どのアイテムを投げますか? ", "Throw which item? ");
- s = _("投げるアイテムがない。", "You have nothing to throw.");
- this->o_ptr = choose_object(this->player_ptr, &this->item, q, s, USE_INVEN | USE_FLOOR | USE_EQUIP);
+ constexpr auto q = _("どのアイテムを投げますか? ", "Throw which item? ");
+ constexpr auto s = _("投げるアイテムがない。", "You have nothing to throw.");
+ this->o_ptr = choose_object(this->player_ptr, &this->i_idx, q, s, USE_INVEN | USE_FLOOR | USE_EQUIP);
if (!this->o_ptr) {
flush();
return false;
concptr q, s;
q = _("どの武器を投げますか? ", "Throw which item? ");
s = _("投げる武器がない。", "You have nothing to throw.");
- this->o_ptr = choose_object(this->player_ptr, &this->item, q, s, USE_EQUIP, FuncItemTester(&ItemEntity::is_throwable));
+ this->o_ptr = choose_object(this->player_ptr, &this->i_idx, q, s, USE_EQUIP, FuncItemTester(&ItemEntity::is_throwable));
if (!this->o_ptr) {
flush();
return false;
}
if (has_melee_weapon(this->player_ptr, INVEN_SUB_HAND)) {
- this->item = INVEN_SUB_HAND;
- this->o_ptr = &this->player_ptr->inventory_list[this->item];
+ this->i_idx = INVEN_SUB_HAND;
+ this->o_ptr = &this->player_ptr->inventory_list[this->i_idx];
return true;
}
- this->item = INVEN_MAIN_HAND;
- this->o_ptr = &this->player_ptr->inventory_list[this->item];
+ this->i_idx = INVEN_MAIN_HAND;
+ this->o_ptr = &this->player_ptr->inventory_list[this->i_idx];
return true;
}
this->tdam = critical_shot(this->player_ptr, this->q_ptr->weight, this->q_ptr->to_h, 0, this->tdam);
this->tdam += (this->q_ptr->to_d > 0 ? 1 : -1) * this->q_ptr->to_d;
if (this->boomerang) {
- this->tdam *= (this->mult + this->player_ptr->num_blow[this->item - INVEN_MAIN_HAND]);
+ this->tdam *= (this->mult + this->player_ptr->num_blow[this->i_idx - INVEN_MAIN_HAND]);
this->tdam += this->player_ptr->to_d_m;
} else if (this->obj_flags.has(TR_THROW)) {
this->tdam *= (3 + this->mult);
void ObjectThrowEntity::display_boomerang_throw()
{
const auto is_blind = this->player_ptr->effects()->blindness()->is_blind();
- if ((this->back_chance > 37) && !is_blind && (this->item >= 0)) {
+ if ((this->back_chance > 37) && !is_blind && (this->i_idx >= 0)) {
msg_format(_("%sが手元に返ってきた。", "%s comes back to you."), this->o2_name.data());
this->come_back = true;
return;
}
- auto back_message = this->item >= 0 ? _("%sを受け損ねた!", "%s comes back, but you can't catch!") : _("%sが返ってきた。", "%s comes back.");
+ auto back_message = this->i_idx >= 0 ? _("%sを受け損ねた!", "%s comes back, but you can't catch!") : _("%sが返ってきた。", "%s comes back.");
msg_format(back_message, this->o2_name.data());
this->y = this->player_ptr->y;
this->x = this->player_ptr->x;
virtual ~ObjectThrowEntity() = default;
ItemEntity *q_ptr;
- OBJECT_IDX item{};
+ OBJECT_IDX i_idx{};
POSITION y{};
POSITION x{};
POSITION prev_y{};
if (cast) {
constexpr auto q = _("どれを呪いますか?", "Which weapon do you curse?");
constexpr auto s = _("武器を装備していない。", "You're not wielding a weapon.");
- short item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP), FuncItemTester(&ItemEntity::is_melee_weapon));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP), FuncItemTester(&ItemEntity::is_melee_weapon));
if (o_ptr == nullptr) {
return "";
}
if (cast) {
constexpr auto q = _("どれを呪いますか?", "Which piece of armour do you curse?");
constexpr auto s = _("防具を装備していない。", "You're not wearing any armor.");
- OBJECT_IDX item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP), FuncItemTester(&ItemEntity::is_protector));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP), FuncItemTester(&ItemEntity::is_protector));
if (!o_ptr) {
return "";
}
- o_ptr = &player_ptr->inventory_list[item];
+ o_ptr = &player_ptr->inventory_list[i_idx];
const auto item_name = describe_flavor(player_ptr, o_ptr, OD_NAME_ONLY);
if (!input_check(format(_("本当に %s を呪いますか?", "Do you curse %s, really?"), item_name.data()))) {
return "";
return _("呪われた装備品の呪いを吸収して魔力を回復する。", "Drains curse on your equipment and heals SP a little.");
}
if (cast) {
- OBJECT_IDX item;
- concptr s, q;
- ItemEntity *o_ptr;
-
- q = _("どの装備品から吸収しますか?", "Which cursed equipment do you drain mana from?");
- s = _("呪われたアイテムを装備していない。", "You have no cursed equipment.");
-
- o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP), FuncItemTester(&ItemEntity::is_cursed));
+ constexpr auto q = _("どの装備品から吸収しますか?", "Which cursed equipment do you drain mana from?");
+ constexpr auto s = _("呪われたアイテムを装備していない。", "You have no cursed equipment.");
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP), FuncItemTester(&ItemEntity::is_cursed));
if (!o_ptr) {
return "";
}
constexpr auto q = _("どのアイテムに魔力を充填しますか? ", "Recharge which item? ");
constexpr auto s = _("魔力を充填すべきアイテムがない。", "You have nothing to recharge.");
- OBJECT_IDX item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::can_recharge));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::can_recharge));
if (o_ptr == nullptr) {
return false;
}
o_ptr->pval = 0;
}
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
break;
case 3:
if (o_ptr->number > 1) {
msg_format(_("乱暴な魔法のために%sが壊れた!", "Wild magic consumes your %s!"), item_name.data());
}
- vary_item(player_ptr, item, -999);
+ vary_item(player_ptr, i_idx, -999);
break;
default:
THROW_EXCEPTION(std::logic_error, "Invalid fail type!");
{
constexpr auto q = _("どのアイテムを強化しますか? ", "Enchant which item? ");
constexpr auto s = _("強化できるアイテムがない。", "You have nothing to enchant.");
- ItemEntity *o_ptr;
- OBJECT_IDX item;
- o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), FuncItemTester(object_is_nameless_weapon_armour));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), FuncItemTester(object_is_nameless_weapon_armour));
if (!o_ptr) {
return false;
}
#ifdef JP
msg_format("%s は眩い光を発した!", item_name.data());
#else
- msg_format("%s %s radiate%s a blinding light!", ((item >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "" : "s"));
+ msg_format("%s %s radiate%s a blinding light!", ((i_idx >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "" : "s"));
#endif
bool okay = false;
msg_format("%d of your %s %s destroyed!", (o_ptr->number) - 1, item_name.data(), (o_ptr->number > 2 ? "were" : "was"));
#endif
- if (item >= 0) {
- inven_item_increase(player_ptr, item, 1 - (o_ptr->number));
+ if (i_idx >= 0) {
+ inven_item_increase(player_ptr, i_idx, 1 - (o_ptr->number));
} else {
- floor_item_increase(player_ptr, 0 - item, 1 - (o_ptr->number));
+ floor_item_increase(player_ptr, 0 - i_idx, 1 - (o_ptr->number));
}
}
item_tester = std::make_unique<FuncItemTester>(&ItemEntity::is_weapon_armour_ammo);
}
- OBJECT_IDX item;
- ItemEntity *o_ptr;
constexpr auto q = _("どのアイテムを凡庸化しますか?", "Mundanify which item? ");
constexpr auto s = _("凡庸化できるアイテムがない。", "You have nothing to mundanify.");
-
- o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), *item_tester);
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), *item_tester);
if (!o_ptr) {
return false;
}
}
constexpr auto s = _("鑑定するべきアイテムがない。", "You have nothing to identify.");
- OBJECT_IDX item;
- auto o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), *item_tester);
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), *item_tester);
if (!o_ptr) {
return false;
}
auto old_known = identify_item(player_ptr, o_ptr);
const auto item_name = describe_flavor(player_ptr, o_ptr, 0);
- if (item >= INVEN_MAIN_HAND) {
- msg_format(_("%s^: %s(%c)。", "%s^: %s (%c)."), describe_use(player_ptr, item), item_name.data(), index_to_label(item));
- } else if (item >= 0) {
- msg_format(_("ザック中: %s(%c)。", "In your pack: %s (%c)."), item_name.data(), index_to_label(item));
+ if (i_idx >= INVEN_MAIN_HAND) {
+ msg_format(_("%s^: %s(%c)。", "%s^: %s (%c)."), describe_use(player_ptr, i_idx), item_name.data(), index_to_label(i_idx));
+ } else if (i_idx >= 0) {
+ msg_format(_("ザック中: %s(%c)。", "In your pack: %s (%c)."), item_name.data(), index_to_label(i_idx));
} else {
msg_format(_("床上: %s。", "On the ground: %s."), item_name.data());
}
- autopick_alter_item(player_ptr, item, (bool)(destroy_identify && !old_known));
+ autopick_alter_item(player_ptr, i_idx, (bool)(destroy_identify && !old_known));
return true;
}
constexpr auto s = _("*鑑定*するべきアイテムがない。", "You have nothing to *identify*.");
- OBJECT_IDX item;
- auto o_ptr = choose_object(player_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), *item_tester);
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), *item_tester);
if (!o_ptr) {
return false;
}
window_stuff(player_ptr);
const auto item_name = describe_flavor(player_ptr, o_ptr, 0);
- if (item >= INVEN_MAIN_HAND) {
- msg_format(_("%s^: %s(%c)。", "%s^: %s (%c)."), describe_use(player_ptr, item), item_name.data(), index_to_label(item));
- } else if (item >= 0) {
- msg_format(_("ザック中: %s(%c)。", "In your pack: %s (%c)."), item_name.data(), index_to_label(item));
+ if (i_idx >= INVEN_MAIN_HAND) {
+ msg_format(_("%s^: %s(%c)。", "%s^: %s (%c)."), describe_use(player_ptr, i_idx), item_name.data(), index_to_label(i_idx));
+ } else if (i_idx >= 0) {
+ msg_format(_("ザック中: %s(%c)。", "In your pack: %s (%c)."), item_name.data(), index_to_label(i_idx));
} else {
msg_format(_("床上: %s。", "On the ground: %s."), item_name.data());
}
(void)screen_object(player_ptr, o_ptr, 0L);
- autopick_alter_item(player_ptr, item, (bool)(destroy_identify && !old_known));
+ autopick_alter_item(player_ptr, i_idx, (bool)(destroy_identify && !old_known));
return true;
}
constexpr auto q = _("どの盾を磨きますか?", "Polish which shield? ");
constexpr auto s = _("磨く盾がありません。", "You have no shield to polish.");
const auto options = USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT;
- short item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, options, TvalItemTester(ItemKindType::SHIELD));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, options, TvalItemTester(ItemKindType::SHIELD));
if (o_ptr == nullptr) {
return false;
}
#ifdef JP
msg_format("%sは輝いた!", item_name.data());
#else
- msg_format("%s %s shine%s!", ((item >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "" : "s"));
+ msg_format("%s %s shine%s!", ((i_idx >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "" : "s"));
#endif
o_ptr->ego_idx = EgoType::REFLECTION;
enchant_equipment(o_ptr, randint0(3) + 4, ENCH_TOAC);
{
constexpr auto q = _("どの防具に錆止めをしますか?", "Rustproof which piece of armour? ");
constexpr auto s = _("錆止めできるものがありません。", "You have nothing to rustproof.");
- OBJECT_IDX item;
+ short i_idx;
const auto options = USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, options, FuncItemTester(&ItemEntity::is_protector));
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, options, FuncItemTester(&ItemEntity::is_protector));
if (o_ptr == nullptr) {
return false;
}
#ifdef JP
msg_format("%sは新品同様になった!", item_name.data());
#else
- msg_format("%s %s look%s as good as new!", ((item >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "" : "s"));
+ msg_format("%s %s look%s as good as new!", ((i_idx >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "" : "s"));
#endif
o_ptr->to_a = 0;
}
#ifdef JP
msg_format("%sは腐食しなくなった。", item_name.data());
#else
- msg_format("%s %s %s now protected against corrosion.", ((item >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "are" : "is"));
+ msg_format("%s %s %s now protected against corrosion.", ((i_idx >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "are" : "is"));
#endif
calc_android_exp(player_ptr);
return true;
constexpr auto q = _("どのアイテムを金に変えますか?", "Turn which item to gold? ");
constexpr auto s = _("金に変えられる物がありません。", "You have nothing to turn to gold.");
- short item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR));
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR));
if (!o_ptr) {
return false;
}
auto price = object_value_real(o_ptr);
if (price <= 0) {
msg_format(_("%sをニセの金に変えた。", "You turn %s to fool's gold."), item_name.data());
- vary_item(player_ptr, item, -amt);
+ vary_item(player_ptr, i_idx, -amt);
return true;
}
auto &rfu = RedrawingFlagsUpdater::get_instance();
rfu.set_flag(MainWindowRedrawingFlag::GOLD);
rfu.set_flag(SubWindowRedrawingFlag::PLAYER);
- vary_item(player_ptr, item, -amt);
+ vary_item(player_ptr, i_idx, -amt);
return true;
}
constexpr auto q = _("どのアイテムを強化しますか? ", "Enchant which item? ");
constexpr auto s = _("強化できるアイテムがない。", "You have nothing to enchant.");
- short item;
+ short i_idx;
const auto options = USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, options, item_tester);
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, options, item_tester);
if (!o_ptr) {
return false;
}
#ifdef JP
msg_format("%s は明るく輝いた!", item_name.data());
#else
- msg_format("%s %s glow%s brightly!", ((item >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "" : "s"));
+ msg_format("%s %s glow%s brightly!", ((i_idx >= 0) ? "Your" : "The"), item_name.data(), ((o_ptr->number > 1) ? "" : "s"));
#endif
auto is_enchant_successful = false;
{
constexpr auto q = _("どの武器を強化しますか? ", "Enchant which weapon? ");
constexpr auto s = _("強化できる武器がない。", "You have nothing to enchant.");
- short item;
+ short i_idx;
const auto options = USE_EQUIP | IGNORE_BOTHHAND_SLOT;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, options, FuncItemTester(&ItemEntity::allow_enchant_melee_weapon));
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, options, FuncItemTester(&ItemEntity::allow_enchant_melee_weapon));
if (o_ptr == nullptr) {
return;
}
{
constexpr auto q = _("どの死体を捧げますか? ", "Sacrifice which corpse? ");
constexpr auto s = _("捧げられる死体を持っていない。", "You have nothing to sacrifice.");
- OBJECT_IDX item;
- ItemEntity *o_ptr;
- o_ptr = choose_object(player_ptr, &item, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::is_offerable));
+ short i_idx;
+ const auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, (USE_INVEN | USE_FLOOR), FuncItemTester(&ItemEntity::is_offerable));
if (!o_ptr) {
return false;
}
if (summon_specific(player_ptr, -1, player_ptr->y, player_ptr->x, summon_lev, SUMMON_HI_DEMON, (PM_ALLOW_GROUP | PM_FORCE_PET))) {
msg_print(_("硫黄の悪臭が充満した。", "The area fills with a stench of sulphur and brimstone."));
msg_print(_("「ご用でございますか、ご主人様」", "'What is thy bidding... Master?'"));
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
} else {
msg_print(_("悪魔は現れなかった。", "No Greater Demon arrives."));
}
break;
}
- short item_index;
+ short i_idx;
const auto options = USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT;
- auto *o_ptr = choose_object(player_ptr, &item_index, q, s_none, options, FuncItemTester(store_will_buy, player_ptr, store_num));
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s_none, options, FuncItemTester(store_will_buy, player_ptr, store_num));
if (o_ptr == nullptr) {
return;
}
- if ((item_index >= INVEN_MAIN_HAND) && o_ptr->is_cursed()) {
+ if ((i_idx >= INVEN_MAIN_HAND) && o_ptr->is_cursed()) {
msg_print(_("ふーむ、どうやらそれは呪われているようだね。", "Hmmm, it seems to be cursed."));
return;
}
bool placed = false;
if ((store_num != StoreSaleType::HOME) && (store_num != StoreSaleType::MUSEUM)) {
const auto item_name = describe_flavor(player_ptr, q_ptr, 0);
- msg_format(_("%s(%c)を売却する。", "Selling %s (%c)."), item_name.data(), index_to_label(item_index));
+ msg_format(_("%s(%c)を売却する。", "Selling %s (%c)."), item_name.data(), index_to_label(i_idx));
msg_print(nullptr);
auto res = prompt_to_sell(player_ptr, q_ptr, store_num);
distribute_charges(o_ptr, q_ptr, amt);
q_ptr->timeout = 0;
- inven_item_increase(player_ptr, item_index, -amt);
- inven_item_describe(player_ptr, item_index);
+ inven_item_increase(player_ptr, i_idx, -amt);
+ inven_item_describe(player_ptr, i_idx);
if (o_ptr->number > 0) {
- autopick_alter_item(player_ptr, item_index, false);
+ autopick_alter_item(player_ptr, i_idx, false);
}
- inven_item_optimize(player_ptr, item_index);
+ inven_item_optimize(player_ptr, i_idx);
int item_pos = store_carry(q_ptr);
if (item_pos >= 0) {
store_top = (item_pos / store_bottom) * store_bottom;
q_ptr->ident |= IDENT_FULL_KNOWN;
distribute_charges(o_ptr, q_ptr, amt);
- msg_format(_("%sを置いた。(%c)", "You drop %s (%c)."), museum_item_name.data(), index_to_label(item_index));
+ msg_format(_("%sを置いた。(%c)", "You drop %s (%c)."), museum_item_name.data(), index_to_label(i_idx));
placed = true;
- vary_item(player_ptr, item_index, -amt);
+ vary_item(player_ptr, i_idx, -amt);
int item_pos = home_carry(player_ptr, q_ptr, store_num);
if (item_pos >= 0) {
} else {
distribute_charges(o_ptr, q_ptr, amt);
const auto item_name = describe_flavor(player_ptr, q_ptr, 0);
- msg_format(_("%sを置いた。(%c)", "You drop %s (%c)."), item_name.data(), index_to_label(item_index));
+ msg_format(_("%sを置いた。(%c)", "You drop %s (%c)."), item_name.data(), index_to_label(i_idx));
placed = true;
- vary_item(player_ptr, item_index, -amt);
+ vary_item(player_ptr, i_idx, -amt);
int item_pos = home_carry(player_ptr, q_ptr, store_num);
if (item_pos >= 0) {
store_top = (item_pos / store_bottom) * store_bottom;
rfu.set_flag(SubWindowRedrawingFlag::PLAYER);
handle_stuff(player_ptr);
- if (placed && (item_index >= INVEN_MAIN_HAND)) {
+ if (placed && (i_idx >= INVEN_MAIN_HAND)) {
calc_android_exp(player_ptr);
- verify_equip_slot(player_ptr, item_index);
+ verify_equip_slot(player_ptr, i_idx);
}
}
* @param player_ptr プレイヤーへの参照ポインタ
* @param item 残量を表示したいプレイヤーのアイテム所持スロット
*/
-void inven_item_describe(PlayerType *player_ptr, short item)
+void inven_item_describe(PlayerType *player_ptr, short i_idx)
{
- auto *o_ptr = &player_ptr->inventory_list[item];
+ auto *o_ptr = &player_ptr->inventory_list[i_idx];
const auto item_name = describe_flavor(player_ptr, o_ptr, 0);
#ifdef JP
if (o_ptr->number <= 0) {
class ItemEntity;
class PlayerType;
void inven_item_charges(const ItemEntity &item);
-void inven_item_describe(PlayerType *player_ptr, short item);
+void inven_item_describe(PlayerType *player_ptr, short i_idx);
void display_koff(PlayerType *player_ptr);
{
constexpr auto q = _("どのアイテムの発動を変更しますか? ", "Which item? ");
constexpr auto s = _("発動を変更するアイテムがない。", "Nothing to do with.");
- short item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT);
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT);
if (!o_ptr) {
return;
}
{
constexpr auto q = "Play with which object? ";
constexpr auto s = "You have nothing to play with.";
- short item;
- auto *o_ptr = choose_object(player_ptr, &item, q, s, USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT);
+ short i_idx;
+ auto *o_ptr = choose_object(player_ptr, &i_idx, q, s, USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT);
if (!o_ptr) {
return;
}