}
/*!
- * @brief 装備を発動するコマンドのサブルーチン /
- * Activate a wielded object. Wielded objects never stack.
- * And even if they did, activatable objects never stack.
- * @param item 発動するオブジェクトの所持品ID
- * @details
- * <pre>
- * Currently, only (some) artifacts, and Dragon Scale Mail, can be activated.
- * But one could, for example, easily make an activatable "Ring of Plasma".
- * Note that it always takes a turn to activate an artifact, even if
- * the user hits "escape" at the "direction" prompt.
- * </pre>
+ * @brief 装備を発動するコマンドのサブルーチン
+ * @param player_ptr プレイヤーへの参照ポインタ
+ * @param i_idx 発動するオブジェクトの所持品ID
*/
-void exe_activate(PlayerType *player_ptr, INVENTORY_IDX item)
+void exe_activate(PlayerType *player_ptr, INVENTORY_IDX i_idx)
{
PlayerEnergy(player_ptr).set_player_turn_energy(100);
ae_type tmp_ae;
- ae_type *ae_ptr = initialize_ae_type(player_ptr, &tmp_ae, item);
+ ae_type *ae_ptr = initialize_ae_type(player_ptr, &tmp_ae, i_idx);
decide_activation_level(ae_ptr);
decide_chance_fail(player_ptr, ae_ptr);
if (cmd_limit_time_walk(player_ptr)) {
#include "system/angband.h"
class PlayerType;
-void exe_activate(PlayerType *player_ptr, INVENTORY_IDX item);
+void exe_activate(PlayerType *player_ptr, INVENTORY_IDX i_idx);
/*!
* @brief 持ち替え処理
* @param player_ptr プレイヤーへの参照ポインタ
- * @param item 持ち替えを行いたい装備部位ID
+ * @param i_idx 持ち替えを行いたい装備部位ID
*/
-void verify_equip_slot(PlayerType *player_ptr, INVENTORY_IDX item)
+void verify_equip_slot(PlayerType *player_ptr, INVENTORY_IDX i_idx)
{
ItemEntity *o_ptr, *new_o_ptr;
std::string item_name;
- if (item == INVEN_MAIN_HAND) {
+ if (i_idx == INVEN_MAIN_HAND) {
if (!has_melee_weapon(player_ptr, INVEN_SUB_HAND)) {
return;
}
return;
}
- if (item != INVEN_SUB_HAND) {
+ if (i_idx != INVEN_SUB_HAND) {
return;
}
#include "system/angband.h"
class PlayerType;
-void verify_equip_slot(PlayerType *player_ptr, INVENTORY_IDX item);
+void verify_equip_slot(PlayerType *player_ptr, INVENTORY_IDX i_idx);
/*!
* @brief Auto-destroy marked item
*/
-static void autopick_delayed_alter_aux(PlayerType *player_ptr, INVENTORY_IDX item)
+static void autopick_delayed_alter_aux(PlayerType *player_ptr, INVENTORY_IDX i_idx)
{
- const auto *o_ptr = ref_item(player_ptr, item);
+ const auto *o_ptr = ref_item(player_ptr, i_idx);
if (!o_ptr->is_valid() || o_ptr->marked.has_not(OmType::AUTODESTROY)) {
return;
}
const auto item_name = describe_flavor(player_ptr, o_ptr, 0);
- if (item >= 0) {
- inven_item_increase(player_ptr, item, -(o_ptr->number));
- inven_item_optimize(player_ptr, item);
+ if (i_idx >= 0) {
+ inven_item_increase(player_ptr, i_idx, -(o_ptr->number));
+ inven_item_optimize(player_ptr, i_idx);
} else {
- delete_object_idx(player_ptr, 0 - item);
+ delete_object_idx(player_ptr, 0 - i_idx);
}
msg_format(_("%sを自動破壊します。", "Auto-destroying %s."), item_name.data());
*/
void autopick_delayed_alter(PlayerType *player_ptr)
{
- for (INVENTORY_IDX item = INVEN_TOTAL - 1; item >= 0; item--) {
- autopick_delayed_alter_aux(player_ptr, item);
+ for (INVENTORY_IDX i_idx = INVEN_TOTAL - 1; i_idx >= 0; i_idx--) {
+ autopick_delayed_alter_aux(player_ptr, i_idx);
}
auto &grid = player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x];
for (auto it = grid.o_idx_list.begin(); it != grid.o_idx_list.end();) {
- INVENTORY_IDX item = *it++;
- autopick_delayed_alter_aux(player_ptr, -item);
+ INVENTORY_IDX i_idx = *it++;
+ autopick_delayed_alter_aux(player_ptr, -i_idx);
}
// PW_FLOOR_ITEM_LISTは遅れるので即時更新
* Auto-destroyer works only on inventory or on floor stack only when
* requested.
*/
-void autopick_alter_item(PlayerType *player_ptr, INVENTORY_IDX item, bool destroy)
+void autopick_alter_item(PlayerType *player_ptr, INVENTORY_IDX i_idx, bool destroy)
{
ItemEntity *o_ptr;
- o_ptr = ref_item(player_ptr, item);
+ o_ptr = ref_item(player_ptr, i_idx);
int idx = find_autopick_list(player_ptr, o_ptr);
auto_inscribe_item(o_ptr, idx);
- if (destroy && item <= INVEN_PACK) {
+ if (destroy && i_idx <= INVEN_PACK) {
auto_destroy_item(player_ptr, o_ptr, idx);
}
}
struct grid_type;
;
class PlayerType;
-void autopick_alter_item(PlayerType *player_ptr, INVENTORY_IDX item, bool destroy);
+void autopick_alter_item(PlayerType *player_ptr, INVENTORY_IDX i_idx, bool destroy);
void autopick_delayed_alter(PlayerType *player_ptr);
void autopick_pickup_items(PlayerType *player_ptr, grid_type *g_ptr);
void wield_all(PlayerType *player_ptr)
{
ItemEntity ObjectType_body;
- for (INVENTORY_IDX item = INVEN_PACK - 1; item >= 0; item--) {
+ for (INVENTORY_IDX i_idx = INVEN_PACK - 1; i_idx >= 0; i_idx--) {
ItemEntity *o_ptr;
- o_ptr = &player_ptr->inventory_list[item];
+ o_ptr = &player_ptr->inventory_list[i_idx];
if (!o_ptr->is_valid()) {
continue;
}
i_ptr->copy_from(o_ptr);
i_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];
grid_type *g_ptr;
g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
FEAT_IDX feat = g_ptr->get_feat_mimic();
- INVENTORY_IDX item;
+ INVENTORY_IDX i_idx;
if (terrains_info[feat].flags.has_not(TerrainCharacteristics::SPIKE)) {
msg_print(_("そこにはくさびを打てるものが見当たらない。", "You see nothing there to spike."));
- } else if (!get_spike(player_ptr, &item)) {
+ } else if (!get_spike(player_ptr, &i_idx)) {
msg_print(_("くさびを持っていない!", "You have no spikes!"));
} else if (g_ptr->m_idx) {
PlayerEnergy(player_ptr).set_player_turn_energy(100);
PlayerEnergy(player_ptr).set_player_turn_energy(100);
msg_format(_("%sにくさびを打ち込んだ。", "You jam the %s with a spike."), terrains_info[feat].name.data());
cave_alter_feat(player_ptr, y, x, TerrainCharacteristics::SPIKE);
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
}
}
* @brief 魔法道具のチャージをの食料として食べたときの効果を発動
* @param player_ptr プレイヤー情報への参照ポインタ
* @param o_ptr 食べるオブジェクト
- * @param inventory オブジェクトのインベントリ番号
+ * @param i_idx オブジェクトのインベントリ番号
* @return 食べようとしたらTRUE、しなかったらFALSE
*/
-static bool exe_eat_charge_of_magic_device(PlayerType *player_ptr, ItemEntity *o_ptr, short inventory)
+static bool exe_eat_charge_of_magic_device(PlayerType *player_ptr, ItemEntity *o_ptr, short i_idx)
{
if (!o_ptr->is_wand_staff() || (PlayerRace(player_ptr).food() != PlayerRaceFoodType::MANA)) {
return false;
}
const auto is_staff = o_ptr->bi_key.tval() == ItemKindType::STAFF;
- if (is_staff && (inventory < 0) && (o_ptr->number > 1)) {
+ if (is_staff && (i_idx < 0) && (o_ptr->number > 1)) {
msg_print(_("まずは杖を拾わなければ。", "You must first pick up the staffs."));
return true;
}
set_food(player_ptr, player_ptr->food + 5000);
/* XXX Hack -- unstack if necessary */
- if (is_staff && (inventory >= 0) && (o_ptr->number > 1)) {
+ if (is_staff && (i_idx >= 0) && (o_ptr->number > 1)) {
auto item = *o_ptr;
/* Modify quantity */
/* Unstack the used item */
o_ptr->number--;
- inventory = store_item_to_inventory(player_ptr, &item);
+ i_idx = store_item_to_inventory(player_ptr, &item);
msg_format(_("杖をまとめなおした。", "You unstack your staff."));
}
- if (inventory >= 0) {
- inven_item_charges(player_ptr->inventory_list[inventory]);
+ if (i_idx >= 0) {
+ inven_item_charges(player_ptr->inventory_list[i_idx]);
} else {
- floor_item_charges(player_ptr->current_floor_ptr, 0 - inventory);
+ floor_item_charges(player_ptr->current_floor_ptr, 0 - i_idx);
}
static constexpr auto flags = {
/*!
* @brief 食料を食べるコマンドのサブルーチン
- * @param item 食べるオブジェクトの所持品ID
+ * @param i_idx 食べるオブジェクトの所持品ID
*/
-void exe_eat_food(PlayerType *player_ptr, INVENTORY_IDX item)
+void exe_eat_food(PlayerType *player_ptr, INVENTORY_IDX i_idx)
{
if (music_singing_any(player_ptr)) {
stop_singing(player_ptr);
(void)spell_hex.stop_all_spells();
}
- auto *o_ptr = ref_item(player_ptr, item);
+ auto *o_ptr = ref_item(player_ptr, i_idx);
sound(SOUND_EAT);
rfu.set_flags(flags_swrf);
/* Undeads drain recharge of magic device */
- if (exe_eat_charge_of_magic_device(player_ptr, o_ptr, item)) {
+ if (exe_eat_charge_of_magic_device(player_ptr, o_ptr, i_idx)) {
rfu.set_flags(flags_srf);
return;
}
(void)set_food(player_ptr, PY_FOOD_MAX - 1);
rfu.set_flags(flags_srf);
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
return;
}
}
rfu.set_flags(flags_srf);
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
}
/*!
class PlayerType;
void do_cmd_eat_food(PlayerType *player_ptr);
-void exe_eat_food(PlayerType *player_ptr, INVENTORY_IDX item);
+void exe_eat_food(PlayerType *player_ptr, INVENTORY_IDX i_idx);
}
/*!
- * @brief 射撃処理実行 /
- * Fire an object from the pack or floor.
- * @param item 射撃するオブジェクトの所持ID
+ * @brief 射撃処理実行
+ * @param i_idx 射撃するオブジェクトの所持ID
* @param bow_ptr 射撃武器のオブジェクト参照ポインタ
- * @details
- * <pre>
- * You may only fire items that "match" your missile launcher.
- * You must use slings + pebbles/shots, bows + arrows, xbows + bolts.
- * See "calc_bonuses()" for more calculations and such.
- * Note that "firing" a missile is MUCH better than "throwing" it.
- * Note: "unseen" monsters are very hard to hit.
- * Objects are more likely to break if they "attempt" to hit a monster.
- * Rangers (with Bows) and Anyone (with "Extra Shots") get extra shots.
- * The "extra shot" code works by decreasing the amount of energy
- * required to make each shot, spreading the shots out over time.
- * Note that when firing missiles, the launcher multiplier is applied
- * after all the bonuses are added in, making multipliers very useful.
- * Note that Bows of "Extra Might" get extra range and an extra bonus
- * for the damage multiplier.
- * Note that Bows of "Extra Shots" give an extra shot.
- * </pre>
*/
-void exe_fire(PlayerType *player_ptr, INVENTORY_IDX item, ItemEntity *j_ptr, SPELL_IDX snipe_type)
+void exe_fire(PlayerType *player_ptr, INVENTORY_IDX i_idx, ItemEntity *j_ptr, SPELL_IDX snipe_type)
{
POSITION y, x, ny, nx, ty, tx, prev_y, prev_x;
ItemEntity forge;
/* Access the item (if in the pack) */
auto *floor_ptr = player_ptr->current_floor_ptr;
- if (item >= 0) {
- o_ptr = &player_ptr->inventory_list[item];
+ if (i_idx >= 0) {
+ o_ptr = &player_ptr->inventory_list[i_idx];
} else {
- o_ptr = &floor_ptr->o_list[0 - item];
+ o_ptr = &floor_ptr->o_list[0 - i_idx];
}
/* Sniper - Cannot shot a single arrow twice */
/* Single object */
q_ptr->number = 1;
- vary_item(player_ptr, item, -1);
+ vary_item(player_ptr, i_idx, -1);
sound(SOUND_SHOOT);
handle_stuff(player_ptr);
int calc_crit_ratio_shot(PlayerType *player_ptr, int plus_ammo, int plus_bow);
int calc_expect_crit_shot(PlayerType *player_ptr, WEIGHT weight, int plus_ammo, int plus_bow, int dam);
int calc_expect_crit(PlayerType *player_ptr, WEIGHT weight, int plus, int dam, int16_t meichuu, bool dokubari, bool impact);
-void exe_fire(PlayerType *player_ptr, INVENTORY_IDX item, ItemEntity *j_ptr, SPELL_IDX snipe_type);
+void exe_fire(PlayerType *player_ptr, INVENTORY_IDX i_idx, ItemEntity *j_ptr, SPELL_IDX snipe_type);
* @brief 床上のアイテムの数を増やす /
* Increase the "number" of an item on the floor
* @param player_ptr プレイヤーへの参照ポインタ
- * @param item 増やしたいアイテムの所持スロット
+ * @param i_idx 増やしたいアイテムの所持スロット
* @param num 増やしたいアイテムの数
*/
-void floor_item_increase(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER num)
+void floor_item_increase(PlayerType *player_ptr, INVENTORY_IDX i_idx, ITEM_NUMBER num)
{
auto *floor_ptr = player_ptr->current_floor_ptr;
- auto *o_ptr = &floor_ptr->o_list[item];
+ auto *o_ptr = &floor_ptr->o_list[i_idx];
num += o_ptr->number;
if (num > 255) {
num = 255;
* @brief 床上の数の無くなったアイテムスロットを消去する /
* Optimize an item on the floor (destroy "empty" items)
* @param player_ptr プレイヤーへの参照ポインタ
- * @param item 消去したいアイテムの所持スロット
+ * @param i_idx 消去したいアイテムの所持スロット
*/
-void floor_item_optimize(PlayerType *player_ptr, INVENTORY_IDX item)
+void floor_item_optimize(PlayerType *player_ptr, INVENTORY_IDX i_idx)
{
- auto *o_ptr = &player_ptr->current_floor_ptr->o_list[item];
+ auto *o_ptr = &player_ptr->current_floor_ptr->o_list[i_idx];
if (!o_ptr->is_valid()) {
return;
}
return;
}
- delete_object_idx(player_ptr, item);
+ delete_object_idx(player_ptr, i_idx);
static constexpr auto flags = {
SubWindowRedrawingFlag::FLOOR_ITEMS,
SubWindowRedrawingFlag::FOUND_ITEMS,
}
/*!
- * @brief 床上の魔道具の残り残量メッセージを表示する /
- * Describe the charges on an item on the floor.
+ * @brief 床上の魔道具の残り残量メッセージを表示する
* @param floo_ptr 現在フロアへの参照ポインタ
- * @param item メッセージの対象にしたいアイテム所持スロット
+ * @param i_idx メッセージの対象にしたいアイテム所持スロット
*/
-void floor_item_charges(FloorType *floor_ptr, INVENTORY_IDX inventory)
+void floor_item_charges(FloorType *floor_ptr, INVENTORY_IDX i_idx)
{
- const auto &item = floor_ptr->o_list[inventory];
+ const auto &item = floor_ptr->o_list[i_idx];
if (!item.is_wand_staff() || !item.is_known()) {
return;
}
* @brief 床上のアイテムの残り数メッセージを表示する /
* Describe the charges on an item on the floor.
* @param floo_ptr 現在フロアへの参照ポインタ
- * @param item メッセージの対象にしたいアイテム所持スロット
+ * @param i_idx メッセージの対象にしたいアイテム所持スロット
*/
-void floor_item_describe(PlayerType *player_ptr, INVENTORY_IDX item)
+void floor_item_describe(PlayerType *player_ptr, INVENTORY_IDX i_idx)
{
- auto *o_ptr = &player_ptr->current_floor_ptr->o_list[item];
+ auto *o_ptr = &player_ptr->current_floor_ptr->o_list[i_idx];
const auto item_name = describe_flavor(player_ptr, o_ptr, 0);
#ifdef JP
if (o_ptr->number <= 0) {
bool make_object(PlayerType *player_ptr, ItemEntity *j_ptr, BIT_FLAGS mode, std::optional<int> rq_mon_level = std::nullopt);
bool make_gold(PlayerType *player_ptr, ItemEntity *j_ptr);
void delete_all_items_from_floor(PlayerType *player_ptr, POSITION y, POSITION x);
-void floor_item_increase(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER num);
-void floor_item_optimize(PlayerType *player_ptr, INVENTORY_IDX item);
+void floor_item_increase(PlayerType *player_ptr, INVENTORY_IDX i_idx, ITEM_NUMBER num);
+void floor_item_optimize(PlayerType *player_ptr, INVENTORY_IDX i_idx);
void delete_object_idx(PlayerType *player_ptr, OBJECT_IDX o_idx);
void excise_object_idx(FloorType *floor_ptr, OBJECT_IDX o_idx);
ObjectIndexList &get_o_idx_list_contains(FloorType *floor_ptr, OBJECT_IDX o_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 item);
-void floor_item_describe(PlayerType *player_ptr, INVENTORY_IDX item);
+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());
#include "view/display-messages.h"
#include "view/object-describer.h"
-void vary_item(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER num)
+void vary_item(PlayerType *player_ptr, INVENTORY_IDX i_idx, ITEM_NUMBER num)
{
- if (item >= 0) {
- inven_item_increase(player_ptr, item, num);
- inven_item_describe(player_ptr, item);
- inven_item_optimize(player_ptr, item);
+ if (i_idx >= 0) {
+ inven_item_increase(player_ptr, i_idx, num);
+ inven_item_describe(player_ptr, i_idx);
+ inven_item_optimize(player_ptr, i_idx);
return;
}
- floor_item_increase(player_ptr, 0 - item, num);
- floor_item_describe(player_ptr, 0 - item);
- floor_item_optimize(player_ptr, 0 - item);
+ floor_item_increase(player_ptr, 0 - i_idx, num);
+ floor_item_describe(player_ptr, 0 - i_idx);
+ floor_item_optimize(player_ptr, 0 - i_idx);
}
/*!
- * @brief アイテムを増減させ残り所持数メッセージを表示する /
- * Increase the "number" of an item in the inventory
+ * @brief アイテムを増減させ残り所持数メッセージを表示する
* @param player_ptr プレイヤーへの参照ポインタ
- * @param item 所持数を増やしたいプレイヤーのアイテム所持スロット
+ * @param i_idx 所持数を増やしたいプレイヤーのアイテム所持スロット
* @param num 増やしたい量
*/
-void inven_item_increase(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER num)
+void inven_item_increase(PlayerType *player_ptr, INVENTORY_IDX i_idx, ITEM_NUMBER num)
{
- auto *o_ptr = &player_ptr->inventory_list[item];
+ auto *o_ptr = &player_ptr->inventory_list[i_idx];
num += o_ptr->number;
if (num > 255) {
num = 255;
return;
}
- if (!(item == INVEN_MAIN_HAND) && !(item == INVEN_SUB_HAND)) {
+ if (!(i_idx == INVEN_MAIN_HAND) && !(i_idx == INVEN_SUB_HAND)) {
return;
}
- if (has_melee_weapon(player_ptr, enum2i(INVEN_MAIN_HAND + INVEN_SUB_HAND) - item)) {
+ if (has_melee_weapon(player_ptr, enum2i(INVEN_MAIN_HAND + INVEN_SUB_HAND) - i_idx)) {
return;
}
}
/*!
- * @brief 所持アイテムスロットから所持数のなくなったアイテムを消去する /
- * Erase an inventory slot if it has no more items
+ * @brief 所持アイテムスロットから所持数のなくなったアイテムを消去する
* @param player_ptr プレイヤーへの参照ポインタ
- * @param item 消去したいプレイヤーのアイテム所持スロット
+ * @param i_idx 消去したいプレイヤーのアイテム所持スロット
*/
-void inven_item_optimize(PlayerType *player_ptr, INVENTORY_IDX item)
+void inven_item_optimize(PlayerType *player_ptr, INVENTORY_IDX i_idx)
{
- auto *o_ptr = &player_ptr->inventory_list[item];
+ auto *o_ptr = &player_ptr->inventory_list[i_idx];
if (!o_ptr->is_valid()) {
return;
}
}
auto &rfu = RedrawingFlagsUpdater::get_instance();
- if (item >= INVEN_MAIN_HAND) {
+ if (i_idx >= INVEN_MAIN_HAND) {
player_ptr->equip_cnt--;
- (&player_ptr->inventory_list[item])->wipe();
+ (&player_ptr->inventory_list[i_idx])->wipe();
static constexpr auto flags_srf = {
StatusRecalculatingFlag::BONUS,
StatusRecalculatingFlag::TORCH,
player_ptr->inven_cnt--;
int i;
- for (i = item; i < INVEN_PACK; i++) {
+ for (i = i_idx; i < INVEN_PACK; i++) {
player_ptr->inventory_list[i] = player_ptr->inventory_list[i + 1];
}
}
/*!
- * @brief 所持スロットから床下にオブジェクトを落とすメインルーチン /
- * Drop (some of) a non-cursed inventory/equipment item
+ * @brief 所持スロットから床下にオブジェクトを落とすメインルーチン
* @param player_ptr プレイヤーへの参照ポインタ
- * @param item 所持テーブルのID
+ * @param i_idx 所持テーブルのID
* @param amt 落としたい個数
- * @details
- * The object will be dropped "near" the current location
*/
-void drop_from_inventory(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER amt)
+void drop_from_inventory(PlayerType *player_ptr, INVENTORY_IDX i_idx, ITEM_NUMBER amt)
{
ItemEntity forge;
ItemEntity *q_ptr;
- auto *o_ptr = &player_ptr->inventory_list[item];
+ auto *o_ptr = &player_ptr->inventory_list[i_idx];
if (amt <= 0) {
return;
}
amt = o_ptr->number;
}
- if (item >= INVEN_MAIN_HAND) {
- item = inven_takeoff(player_ptr, item, amt);
- o_ptr = &player_ptr->inventory_list[item];
+ if (i_idx >= INVEN_MAIN_HAND) {
+ i_idx = inven_takeoff(player_ptr, i_idx, amt);
+ o_ptr = &player_ptr->inventory_list[i_idx];
}
q_ptr = &forge;
q_ptr->number = 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));
+ msg_format(_("%s(%c)を落とした。", "You drop %s (%c)."), item_name.data(), index_to_label(i_idx));
(void)drop_near(player_ptr, q_ptr, 0, player_ptr->y, player_ptr->x);
- vary_item(player_ptr, item, -amt);
+ vary_item(player_ptr, i_idx, -amt);
}
/*!
}
/*!
- * @brief オブジェクトをプレイヤーが拾って所持スロットに納めるメインルーチン /
- * Add an item to the players inventory, and return the slot used.
+ * @brief オブジェクトをプレイヤーが拾って所持スロットに納めるメインルーチン
+ * @param player_ptr プレイヤーへの参照ポインタ
* @param o_ptr 拾うオブジェクトの構造体参照ポインタ
* @return 収められた所持スロットのID、拾うことができなかった場合-1を返す。
- * @details
- * If the new item can combine with an existing item in the inventory,\n
- * it will do so, using "object_similar()" and "object_absorb()", else,\n
- * the item will be placed into the "proper" location in the inventory.\n
- *\n
- * This function can be used to "over-fill" the player's pack, but only\n
- * once, and such an action must trigger the "overflow" code immediately.\n
- * Note that when the pack is being "over-filled", the new item must be\n
- * placed into the "overflow" slot, and the "overflow" must take place\n
- * before the pack is reordered, but (optionally) after the pack is\n
- * combined. This may be tricky. See "dungeon.c" for info.\n
- *\n
- * Note that this code must remove any location/stack information\n
- * from the object once it is placed into the inventory.\n
*/
int16_t store_item_to_inventory(PlayerType *player_ptr, ItemEntity *o_ptr)
{
}
/*!
- * @brief 装備スロットからオブジェクトを外すメインルーチン /
- * Take off (some of) a non-cursed equipment item
+ * @brief 装備スロットから装備を外すメインルーチン
* @param player_ptr プレイヤーへの参照ポインタ
- * @param item オブジェクトを外したい所持テーブルのID
+ * @param i_idx 装備を外したいインベントリのID
* @param amt 外したい個数
* @return 収められた所持スロットのID、拾うことができなかった場合-1を返す。
- * @details
- * Note that only one item at a time can be wielded per slot.\n
- * Note that taking off an item when "full" may cause that item\n
- * to fall to the ground.\n
- * Return the inventory slot into which the item is placed.\n
*/
-INVENTORY_IDX inven_takeoff(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER amt)
+INVENTORY_IDX inven_takeoff(PlayerType *player_ptr, INVENTORY_IDX i_idx, ITEM_NUMBER amt)
{
INVENTORY_IDX slot;
ItemEntity forge;
ItemEntity *q_ptr;
ItemEntity *o_ptr;
concptr act;
- o_ptr = &player_ptr->inventory_list[item];
+ o_ptr = &player_ptr->inventory_list[i_idx];
if (amt <= 0) {
return -1;
}
q_ptr->copy_from(o_ptr);
q_ptr->number = amt;
const auto item_name = describe_flavor(player_ptr, q_ptr, 0);
- if (((item == INVEN_MAIN_HAND) || (item == INVEN_SUB_HAND)) && o_ptr->is_melee_weapon()) {
+ if (((i_idx == INVEN_MAIN_HAND) || (i_idx == INVEN_SUB_HAND)) && o_ptr->is_melee_weapon()) {
act = _("を装備からはずした", "You were wielding");
- } else if (item == INVEN_BOW) {
+ } else if (i_idx == INVEN_BOW) {
act = _("を装備からはずした", "You were holding");
- } else if (item == INVEN_LITE) {
+ } else if (i_idx == INVEN_LITE) {
act = _("を光源からはずした", "You were holding");
} else {
act = _("を装備からはずした", "You were wearing");
}
- inven_item_increase(player_ptr, item, -amt);
- inven_item_optimize(player_ptr, item);
+ inven_item_increase(player_ptr, i_idx, -amt);
+ inven_item_optimize(player_ptr, i_idx);
slot = store_item_to_inventory(player_ptr, q_ptr);
#ifdef JP
class ItemEntity;
class PlayerType;
-void vary_item(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER num);
-void inven_item_increase(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER num);
-void inven_item_optimize(PlayerType *player_ptr, INVENTORY_IDX item);
-void drop_from_inventory(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER amt);
+void vary_item(PlayerType *player_ptr, INVENTORY_IDX i_idx, ITEM_NUMBER num);
+void inven_item_increase(PlayerType *player_ptr, INVENTORY_IDX i_idx, ITEM_NUMBER num);
+void inven_item_optimize(PlayerType *player_ptr, INVENTORY_IDX i_idx);
+void drop_from_inventory(PlayerType *player_ptr, INVENTORY_IDX i_idx, ITEM_NUMBER amt);
void combine_pack(PlayerType *player_ptr);
void reorder_pack(PlayerType *player_ptr);
int16_t store_item_to_inventory(PlayerType *player_ptr, ItemEntity *o_ptr);
bool check_store_item_to_inventory(PlayerType *player_ptr, const ItemEntity *o_ptr);
-INVENTORY_IDX inven_takeoff(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER amt);
+INVENTORY_IDX inven_takeoff(PlayerType *player_ptr, INVENTORY_IDX i_idx, ITEM_NUMBER amt);
}
/*!
- * @brief 選択したアイテムの確認処理のメインルーチン /
+ * @brief 選択したアイテムの確認処理のメインルーチン
* @param player_ptr プレイヤーへの参照ポインタ
- * @param item 選択アイテムID
+ * @param i_idx 選択アイテムID
* @return 確認がYesならTRUEを返す。
- * @details The item can be negative to mean "item on floor".
- * Hack -- allow user to "prevent" certain choices
*/
-bool get_item_allow(PlayerType *player_ptr, INVENTORY_IDX item)
+bool get_item_allow(PlayerType *player_ptr, INVENTORY_IDX i_idx)
{
if (!command_cmd) {
return true;
}
ItemEntity *o_ptr;
- if (item >= 0) {
- o_ptr = &player_ptr->inventory_list[item];
+ if (i_idx >= 0) {
+ o_ptr = &player_ptr->inventory_list[i_idx];
} else {
- o_ptr = &player_ptr->current_floor_ptr->o_list[0 - item];
+ o_ptr = &player_ptr->current_floor_ptr->o_list[0 - i_idx];
}
if (!o_ptr->is_inscribed()) {
auto s = angband_strchr(o_ptr->inscription->data(), '!');
while (s) {
if ((s[1] == command_cmd) || (s[1] == '*')) {
- if (!verify(player_ptr, _("本当に", "Really try"), item)) {
+ if (!verify(player_ptr, _("本当に", "Really try"), i_idx)) {
return false;
}
}
}
/*!
- * @brief 選択したアイテムの確認処理の補助 /
- * Verify the choice of an item.
+ * @brief 選択したアイテムの確認処理の補助
* @param player_ptr プレイヤーへの参照ポインタ
* @param prompt メッセージ表示の一部
- * @param item 選択アイテムID
+ * @param i_idx 選択アイテムID
* @return 確認がYesならTRUEを返す。
- * @details The item can be negative to mean "item on floor".
*/
-bool verify(PlayerType *player_ptr, concptr prompt, INVENTORY_IDX item)
+bool verify(PlayerType *player_ptr, concptr prompt, INVENTORY_IDX i_idx)
{
ItemEntity *o_ptr;
- if (item >= 0) {
- o_ptr = &player_ptr->inventory_list[item];
+ if (i_idx >= 0) {
+ o_ptr = &player_ptr->inventory_list[i_idx];
} else {
- o_ptr = &player_ptr->current_floor_ptr->o_list[0 - item];
+ o_ptr = &player_ptr->current_floor_ptr->o_list[0 - i_idx];
}
const auto item_name = describe_flavor(player_ptr, o_ptr, 0);
bool get_tag_floor(FloorType *floor_ptr, COMMAND_CODE *cp, char tag, FLOOR_IDX floor_list[], ITEM_NUMBER floor_num);
bool get_tag(PlayerType *player_ptr, COMMAND_CODE *cp, char tag, BIT_FLAGS mode, const ItemTester &item_tester);
bool get_item_okay(PlayerType *player_ptr, OBJECT_IDX i, const ItemTester &item_tester);
-bool get_item_allow(PlayerType *player_ptr, INVENTORY_IDX item);
+bool get_item_allow(PlayerType *player_ptr, INVENTORY_IDX i_idx);
INVENTORY_IDX label_to_equipment(PlayerType *player_ptr, int c);
INVENTORY_IDX label_to_inventory(PlayerType *player_ptr, int c);
-bool verify(PlayerType *player_ptr, concptr prompt, INVENTORY_IDX item);
+bool verify(PlayerType *player_ptr, concptr prompt, INVENTORY_IDX i_idx);
void prepare_label_string(PlayerType *player_ptr, char *label, BIT_FLAGS mode, const ItemTester &item_tester);
continue;
}
- INVENTORY_IDX item_new;
+ INVENTORY_IDX inventory_new;
ItemEntity forge;
const auto item_name = describe_flavor(player_ptr, item_ptr, 0);
* Since a corpse is handed at first,
* there is at least one empty slot.
*/
- item_new = store_item_to_inventory(player_ptr, &forge);
+ inventory_new = store_item_to_inventory(player_ptr, &forge);
const auto got_item_name = describe_flavor(player_ptr, &forge, 0);
- msg_format(_("%s(%c)を貰った。", "You get %s (%c). "), got_item_name.data(), index_to_label(item_new));
+ msg_format(_("%s(%c)を貰った。", "You get %s (%c). "), got_item_name.data(), index_to_label(inventory_new));
- autopick_alter_item(player_ptr, item_new, false);
+ autopick_alter_item(player_ptr, inventory_new, false);
handle_stuff(player_ptr);
change = true;
}
#include "system/item-entity.h"
#include "system/player-type-definition.h"
-ae_type *initialize_ae_type(PlayerType *player_ptr, ae_type *ae_ptr, const INVENTORY_IDX item)
+ae_type *initialize_ae_type(PlayerType *player_ptr, ae_type *ae_ptr, const INVENTORY_IDX i_idx)
{
- ae_ptr->o_ptr = ref_item(player_ptr, item);
+ ae_ptr->o_ptr = ref_item(player_ptr, i_idx);
ae_ptr->lev = ae_ptr->o_ptr->get_baseitem().level;
return ae_ptr;
}
};
class PlayerType;
-ae_type *initialize_ae_type(PlayerType *player_ptr, ae_type *ae_ptr, const INVENTORY_IDX item);
+ae_type *initialize_ae_type(PlayerType *player_ptr, ae_type *ae_ptr, const INVENTORY_IDX i_idx);
/*!
* @brief 薬を飲む.
- * @param item 飲む薬オブジェクトの所持品ID
+ * @param i_idx 薬のインベントリID
* @details
* 効果発動のあと、食料タイプによって空腹度を少し充足する。
* 但し骸骨は除く
*/
-void ObjectQuaffEntity::execute(INVENTORY_IDX item)
+void ObjectQuaffEntity::execute(INVENTORY_IDX i_idx)
{
if (!this->can_influence()) {
return;
}
- const auto &o_ref = this->copy_object(item);
- vary_item(this->player_ptr, item, -1);
+ const auto &o_ref = this->copy_object(i_idx);
+ vary_item(this->player_ptr, i_idx, -1);
sound(SOUND_QUAFF);
auto ident = QuaffEffects(this->player_ptr).influence(o_ref);
if (PlayerRace(this->player_ptr).equals(PlayerRaceType::SKELETON)) {
return ItemUseChecker(this->player_ptr).check_stun(_("朦朧としていて瓶の蓋を開けられなかった!", "You are too stunned to quaff it!"));
}
-ItemEntity ObjectQuaffEntity::copy_object(const INVENTORY_IDX item)
+ItemEntity ObjectQuaffEntity::copy_object(const INVENTORY_IDX i_idx)
{
- auto *tmp_o_ptr = ref_item(this->player_ptr, item);
+ auto *tmp_o_ptr = ref_item(this->player_ptr, i_idx);
auto o_val = *tmp_o_ptr;
o_val.number = 1;
return o_val;
ObjectQuaffEntity(PlayerType *player_ptr);
virtual ~ObjectQuaffEntity() = default;
- void execute(INVENTORY_IDX item);
+ void execute(INVENTORY_IDX i_idx);
private:
PlayerType *player_ptr;
bool can_influence();
bool can_quaff();
- ItemEntity copy_object(const INVENTORY_IDX item);
+ ItemEntity copy_object(const INVENTORY_IDX i_idx);
void moisten(const ItemEntity &o_ref);
void change_virtue_as_quaff(const ItemEntity &o_ref);
};
/*!
* @brief コンストラクタ
* @param player_ptr プレイヤーへの参照ポインタ
- * @param item 読むオブジェクトの所持品ID
+ * @param i_idx 読むアイテムのインベントリID
*/
-ObjectReadEntity::ObjectReadEntity(PlayerType *player_ptr, INVENTORY_IDX item)
+ObjectReadEntity::ObjectReadEntity(PlayerType *player_ptr, INVENTORY_IDX i_idx)
: player_ptr(player_ptr)
- , item(item)
+ , i_idx(i_idx)
{
}
*/
void ObjectReadEntity::execute(bool known)
{
- auto *o_ptr = ref_item(this->player_ptr, this->item);
+ auto *o_ptr = ref_item(this->player_ptr, this->i_idx);
PlayerEnergy(this->player_ptr).set_player_turn_energy(100);
if (!this->can_read()) {
return;
}
sound(SOUND_SCROLL);
- vary_item(this->player_ptr, this->item, -1);
+ vary_item(this->player_ptr, this->i_idx, -1);
}
bool ObjectReadEntity::can_read() const
class PlayerType;
class ObjectReadEntity {
public:
- ObjectReadEntity(PlayerType *player_ptr, INVENTORY_IDX item);
+ ObjectReadEntity(PlayerType *player_ptr, INVENTORY_IDX i_idx);
virtual ~ObjectReadEntity() = default;
void execute(bool known);
private:
PlayerType *player_ptr;
- INVENTORY_IDX item;
+ INVENTORY_IDX i_idx;
bool can_read() const;
void change_virtue_as_read(ItemEntity &o_ref);
/*!
* @brief コンストラクタ
* @param player_ptr プレイヤーへの参照ポインタ
- * @param item 使うオブジェクトの所持品ID
+ * @param i_idx 使うオブジェクトの所持品ID
*/
-ObjectUseEntity::ObjectUseEntity(PlayerType *player_ptr, INVENTORY_IDX item)
+ObjectUseEntity::ObjectUseEntity(PlayerType *player_ptr, INVENTORY_IDX i_idx)
: player_ptr(player_ptr)
- , item(item)
+ , i_idx(i_idx)
{
}
void ObjectUseEntity::execute()
{
auto use_charge = true;
- auto *o_ptr = ref_item(this->player_ptr, this->item);
- if ((this->item < 0) && (o_ptr->number > 1)) {
+ auto *o_ptr = ref_item(this->player_ptr, this->i_idx);
+ if ((this->i_idx < 0) && (o_ptr->number > 1)) {
msg_print(_("まずは杖を拾わなければ。", "You must first pick up the staffs."));
return;
}
}
o_ptr->pval--;
- if ((this->item >= 0) && (o_ptr->number > 1)) {
+ if ((this->i_idx >= 0) && (o_ptr->number > 1)) {
ItemEntity forge;
auto *q_ptr = &forge;
q_ptr->copy_from(o_ptr);
q_ptr->number = 1;
o_ptr->pval++;
o_ptr->number--;
- this->item = store_item_to_inventory(this->player_ptr, q_ptr);
+ this->i_idx = store_item_to_inventory(this->player_ptr, q_ptr);
msg_print(_("杖をまとめなおした。", "You unstack your staff."));
}
- if (this->item >= 0) {
- inven_item_charges(this->player_ptr->inventory_list[this->item]);
+ if (this->i_idx >= 0) {
+ inven_item_charges(this->player_ptr->inventory_list[this->i_idx]);
} else {
- floor_item_charges(this->player_ptr->current_floor_ptr, 0 - this->item);
+ floor_item_charges(this->player_ptr->current_floor_ptr, 0 - this->i_idx);
}
}
class PlayerType;
class ObjectUseEntity {
public:
- ObjectUseEntity(PlayerType *player_ptr, INVENTORY_IDX item);
+ ObjectUseEntity(PlayerType *player_ptr, INVENTORY_IDX i_idx);
virtual ~ObjectUseEntity() = default;
void execute();
private:
PlayerType *player_ptr;
- INVENTORY_IDX item;
+ INVENTORY_IDX i_idx;
bool check_can_use();
};
/*!
* @brief ロッドを使う
*/
-void ObjectZapRodEntity::execute(INVENTORY_IDX item)
+void ObjectZapRodEntity::execute(INVENTORY_IDX i_idx)
{
DIRECTION dir = 0;
auto use_charge = true;
- auto *o_ptr = ref_item(this->player_ptr, item);
- if ((item < 0) && (o_ptr->number > 1)) {
+ auto *o_ptr = ref_item(this->player_ptr, i_idx);
+ if ((i_idx < 0) && (o_ptr->number > 1)) {
msg_print(_("まずはロッドを拾わなければ。", "You must first pick up the rods."));
return;
}
ObjectZapRodEntity(PlayerType *player_ptr);
virtual ~ObjectZapRodEntity() = default;
- void execute(INVENTORY_IDX item);
+ void execute(INVENTORY_IDX i_idx);
private:
PlayerType *player_ptr;
/*!
* @brief 魔法棒を使うコマンドのサブルーチン /
- * @param item 使うオブジェクトの所持品ID
+ * @param i_idx 使うオブジェクトの所持品ID
*/
-void ObjectZapWandEntity::execute(INVENTORY_IDX item)
+void ObjectZapWandEntity::execute(INVENTORY_IDX i_idx)
{
auto old_target_pet = target_pet;
- auto *o_ptr = ref_item(this->player_ptr, item);
- if ((item < 0) && (o_ptr->number > 1)) {
+ auto *o_ptr = ref_item(this->player_ptr, i_idx);
+ if ((i_idx < 0) && (o_ptr->number > 1)) {
msg_print(_("まずは魔法棒を拾わなければ。", "You must first pick up the wands."));
return;
}
rfu.set_flags(flags_swrf);
rfu.set_flags(flags_srf);
o_ptr->pval--;
- if (item >= 0) {
- inven_item_charges(this->player_ptr->inventory_list[item]);
+ if (i_idx >= 0) {
+ inven_item_charges(this->player_ptr->inventory_list[i_idx]);
return;
}
- floor_item_charges(this->player_ptr->current_floor_ptr, 0 - item);
+ floor_item_charges(this->player_ptr->current_floor_ptr, 0 - i_idx);
}
bool ObjectZapWandEntity::check_can_zap() const
ObjectZapWandEntity(PlayerType *player_ptr);
virtual ~ObjectZapWandEntity() = default;
- void execute(INVENTORY_IDX item);
+ void execute(INVENTORY_IDX i_idx);
private:
PlayerType *player_ptr;
return (get_realm1_book(player_ptr) == tval) || (get_realm2_book(player_ptr) == tval);
}
-ItemEntity *ref_item(PlayerType *player_ptr, INVENTORY_IDX item)
+ItemEntity *ref_item(PlayerType *player_ptr, INVENTORY_IDX i_idx)
{
auto *floor_ptr = player_ptr->current_floor_ptr;
- return item >= 0 ? &player_ptr->inventory_list[item] : &(floor_ptr->o_list[0 - item]);
+ return i_idx >= 0 ? &player_ptr->inventory_list[i_idx] : &(floor_ptr->o_list[0 - i_idx]);
}
char index_to_label(int i);
int16_t wield_slot(PlayerType *player_ptr, const ItemEntity *o_ptr);
bool check_book_realm(PlayerType *player_ptr, const BaseitemKey &bi_key);
-ItemEntity *ref_item(PlayerType *player_ptr, INVENTORY_IDX item);
+ItemEntity *ref_item(PlayerType *player_ptr, INVENTORY_IDX i_idx);
w_ptr->character_icky_depth = 1;
handle_stuff(player_ptr);
if (player_ptr->inventory_list[INVEN_PACK].bi_id) {
- INVENTORY_IDX item = INVEN_PACK;
- auto *o_ptr = &player_ptr->inventory_list[item];
+ INVENTORY_IDX i_idx = INVEN_PACK;
+ auto *o_ptr = &player_ptr->inventory_list[i_idx];
if (store_num != StoreSaleType::HOME) {
if (store_num == StoreSaleType::MUSEUM) {
msg_print(_("ザックからアイテムがあふれそうなので、あわてて博物館から出た...", "Your pack is so full that you flee the Museum..."));
q_ptr = &forge;
q_ptr->copy_from(o_ptr);
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));
- vary_item(player_ptr, item, -255);
+ msg_format(_("%sが落ちた。(%c)", "You drop %s (%c)."), item_name.data(), index_to_label(i_idx));
+ vary_item(player_ptr, i_idx, -255);
handle_stuff(player_ptr);
item_pos = home_carry(player_ptr, q_ptr, store_num);
store_type *st_ptr = nullptr;
/*!
- * @brief 店舗のオブジェクト数を増やす /
- * Add the item "o_ptr" to a real stores inventory.
- * @param item 増やしたいアイテムのID
+ * @brief 店舗のオブジェクト数を増やす
+ * @param i_idx 増やしたいアイテムのインベントリID
* @param num 増やしたい数
- * @details
- * <pre>
- * Increase, by a given amount, the number of a certain item
- * in a certain store. This can result in zero items.
- * </pre>
*/
-void store_item_increase(INVENTORY_IDX item, ITEM_NUMBER num)
+void store_item_increase(INVENTORY_IDX i_idx, ITEM_NUMBER num)
{
ItemEntity *o_ptr;
- o_ptr = &st_ptr->stock[item];
+ o_ptr = &st_ptr->stock[i_idx];
int cnt = o_ptr->number + num;
if (cnt > 255) {
cnt = 255;
}
/*!
- * @brief 店舗のオブジェクト数を削除する /
- * Remove a slot if it is empty
- * @param item 削除したいアイテムのID
+ * @brief 店舗のオブジェクト数を削除する
+ * @param i_idx 削除したいアイテムのID
*/
-void store_item_optimize(INVENTORY_IDX item)
+void store_item_optimize(INVENTORY_IDX i_idx)
{
- const auto *o_ptr = &st_ptr->stock[item];
+ const auto *o_ptr = &st_ptr->stock[i_idx];
if (!o_ptr->is_valid() || (o_ptr->number != 0)) {
return;
}
st_ptr->stock_num--;
- for (int j = item; j < st_ptr->stock_num; j++) {
+ for (int j = i_idx; j < st_ptr->stock_num; j++) {
st_ptr->stock[j] = st_ptr->stock[j + 1];
}
class PlayerType;
void store_delete(void);
std::vector<PARAMETER_VALUE> store_same_magic_device_pvals(ItemEntity *j_ptr);
-void store_item_increase(INVENTORY_IDX item, ITEM_NUMBER num);
-void store_item_optimize(INVENTORY_IDX item);
+void store_item_increase(INVENTORY_IDX i_idx, ITEM_NUMBER num);
+void store_item_optimize(INVENTORY_IDX i_idx);
int store_carry(ItemEntity *o_ptr);
bool store_object_similar(ItemEntity *o_ptr, ItemEntity *j_ptr);