OSDN Git Service

[Refactor] #2906 bi_idが0か0でないかを判定している箇所をis_valid() でカプセル化した
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 22 Apr 2023 10:22:05 +0000 (19:22 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Wed, 26 Apr 2023 13:58:27 +0000 (22:58 +0900)
68 files changed:
src/action/mutation-execution.cpp
src/action/weapon-shield.cpp
src/autopick/autopick-finder.cpp
src/autopick/autopick.cpp
src/birth/inventory-initializer.cpp
src/cmd-action/cmd-open-close.cpp
src/cmd-io/cmd-autopick.cpp
src/cmd-item/cmd-equipment.cpp
src/combat/aura-counterattack.cpp
src/core/object-compressor.cpp
src/flavor/flavor-describer.cpp
src/floor/floor-object.cpp
src/hpmp/hp-mp-regenerator.cpp
src/inventory/inventory-curse.cpp
src/inventory/inventory-damage.cpp
src/inventory/inventory-object.cpp
src/inventory/inventory-util.cpp
src/inventory/pack-overflow.cpp
src/inventory/recharge-processor.cpp
src/io-dump/character-dump.cpp
src/io/input-key-requester.cpp
src/knowledge/knowledge-inventory.cpp
src/knowledge/knowledge-items.cpp
src/load/inventory-loader.cpp
src/monster-attack/monster-attack-switcher.cpp
src/monster-attack/monster-eating.cpp
src/object-enchant/item-magic-applier.cpp
src/object-enchant/object-curse.cpp
src/object/item-tester-hooker.cpp
src/perception/simple-perception.cpp
src/player-attack/player-attack.cpp
src/player-base/player-class.cpp
src/player-info/base-status-info.cpp
src/player-info/equipment-info.cpp
src/player-info/weapon-effect-info.cpp
src/player-status/player-speed.cpp
src/player-status/player-status-base.cpp
src/player-status/player-stealth.cpp
src/player/patron.cpp
src/player/player-damage.cpp
src/player/player-status-flags.cpp
src/player/player-status.cpp
src/player/process-death.cpp
src/player/race-resistances.cpp
src/racial/racial-android.cpp
src/realm/realm-hex.cpp
src/save/save.cpp
src/specific-object/chest.cpp
src/specific-object/torch.cpp
src/spell-kind/spells-curse-removal.cpp
src/spell-kind/spells-equipment.cpp
src/spell-kind/spells-perception.cpp
src/spell-kind/spells-teleport.cpp
src/spell-realm/spells-craft.cpp
src/spell/spells-object.cpp
src/status/base-status.cpp
src/store/home.cpp
src/store/store-util.cpp
src/system/item-entity.cpp
src/util/object-sort.cpp
src/view/display-inventory.cpp
src/view/display-player-middle.cpp
src/view/display-player.cpp
src/view/status-first-page.cpp
src/window/display-sub-windows.cpp
src/wizard/cmd-wizard.cpp
src/wizard/wizard-item-modifier.cpp
src/world/world-object.cpp

index e3f260c..6888993 100644 (file)
@@ -154,7 +154,7 @@ bool exe_mutation_power(PlayerType *player_ptr, PlayerMutationType power)
     case PlayerMutationType::DET_CURSE:
         for (int i = 0; i < INVEN_TOTAL; i++) {
             auto *o_ptr = &player_ptr->inventory_list[i];
-            if ((o_ptr->bi_id == 0) || !o_ptr->is_cursed()) {
+            if (!o_ptr->is_valid() || !o_ptr->is_cursed()) {
                 continue;
             }
 
index 84b6848..91b7cec 100644 (file)
@@ -57,7 +57,7 @@ void verify_equip_slot(PlayerType *player_ptr, INVENTORY_IDX item)
     }
 
     o_ptr = &player_ptr->inventory_list[INVEN_MAIN_HAND];
-    if (o_ptr->bi_id) {
+    if (o_ptr->is_valid()) {
         item_name = describe_flavor(player_ptr, o_ptr, 0);
     }
 
index 6a89dc0..9dbcacd 100644 (file)
@@ -76,7 +76,7 @@ bool get_object_for_search(PlayerType *player_ptr, ItemEntity **o_handle, concpt
  */
 bool get_destroyed_object_for_search(PlayerType *player_ptr, ItemEntity **o_handle, concptr *search_strp)
 {
-    if (!autopick_last_destroyed_object.bi_id) {
+    if (!autopick_last_destroyed_object.is_valid()) {
         return false;
     }
 
index 500cd7e..1e92434 100644 (file)
  */
 static void autopick_delayed_alter_aux(PlayerType *player_ptr, INVENTORY_IDX item)
 {
-    ItemEntity *o_ptr;
-    o_ptr = ref_item(player_ptr, item);
-
-    if (o_ptr->bi_id == 0 || o_ptr->marked.has_not(OmType::AUTODESTROY)) {
+    const auto *o_ptr = ref_item(player_ptr, item);
+    if (!o_ptr->is_valid() || o_ptr->marked.has_not(OmType::AUTODESTROY)) {
         return;
     }
 
index 67a2680..9b04274 100644 (file)
@@ -43,7 +43,7 @@ void wield_all(PlayerType *player_ptr)
     for (INVENTORY_IDX item = INVEN_PACK - 1; item >= 0; item--) {
         ItemEntity *o_ptr;
         o_ptr = &player_ptr->inventory_list[item];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -54,7 +54,7 @@ void wield_all(PlayerType *player_ptr)
         if (slot == INVEN_LITE) {
             continue;
         }
-        if (player_ptr->inventory_list[slot].bi_id) {
+        if (player_ptr->inventory_list[slot].is_valid()) {
             continue;
         }
 
index 81cfb7e..719c36b 100644 (file)
@@ -331,7 +331,7 @@ static bool get_spike(PlayerType *player_ptr, INVENTORY_IDX *ip)
 {
     for (INVENTORY_IDX i = 0; i < INVEN_PACK; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index 38d280b..54e6cda 100644 (file)
@@ -139,7 +139,7 @@ void do_cmd_edit_autopick(PlayerType *player_ptr)
 
     update_playtime();
     init_autopick();
-    if (autopick_last_destroyed_object.bi_id) {
+    if (autopick_last_destroyed_object.is_valid()) {
         autopick_entry_from_object(player_ptr, entry, &autopick_last_destroyed_object);
         tb->last_destroyed = autopick_line_from_entry_kill(entry);
     }
index d26dedb..17d6517 100644 (file)
@@ -167,7 +167,7 @@ void do_cmd_wield(PlayerType *player_ptr)
             }
         } else if (has_melee_weapon(player_ptr, INVEN_SUB_HAND)) {
             slot = INVEN_MAIN_HAND;
-        } else if (o_ptr_mh->bi_id && o_ptr_sh->bi_id &&
+        } else if (o_ptr_mh->is_valid() && o_ptr_sh->is_valid() &&
                    ((tval == ItemKindType::CAPTURE) || (!o_ptr_mh->is_melee_weapon() && !o_ptr_sh->is_melee_weapon()))) {
             q = _("どちらの手に装備しますか?", "Equip which hand? ");
             s = _("おっと。", "Oops.");
@@ -185,11 +185,11 @@ void do_cmd_wield(PlayerType *player_ptr)
             if (!get_check(_("二刀流で戦いますか?", "Dual wielding? "))) {
                 slot = INVEN_MAIN_HAND;
             }
-        } else if (!o_ptr_mh->bi_id && has_melee_weapon(player_ptr, INVEN_SUB_HAND)) {
+        } else if (!o_ptr_mh->is_valid() && has_melee_weapon(player_ptr, INVEN_SUB_HAND)) {
             if (!get_check(_("二刀流で戦いますか?", "Dual wielding? "))) {
                 slot = INVEN_SUB_HAND;
             }
-        } else if (o_ptr_mh->bi_id && o_ptr_sh->bi_id) {
+        } else if (o_ptr_mh->is_valid() && o_ptr_sh->is_valid()) {
             q = _("どちらの手に装備しますか?", "Equip which hand? ");
             s = _("おっと。", "Oops.");
             if (!choose_object(player_ptr, &slot, q, s, (USE_EQUIP), FuncItemTester(&ItemEntity::is_wieldable_in_etheir_hand))) {
@@ -203,7 +203,7 @@ void do_cmd_wield(PlayerType *player_ptr)
 
         break;
     case ItemKindType::RING:
-        if (player_ptr->inventory_list[INVEN_SUB_RING].bi_id && player_ptr->inventory_list[INVEN_MAIN_RING].bi_id) {
+        if (player_ptr->inventory_list[INVEN_SUB_RING].is_valid() && player_ptr->inventory_list[INVEN_MAIN_RING].is_valid()) {
             q = _("どちらの指輪と取り替えますか?", "Replace which ring? ");
         } else {
             q = _("どちらの手に装備しますか?", "Equip which hand? ");
@@ -291,7 +291,7 @@ void do_cmd_wield(PlayerType *player_ptr)
     }
 
     o_ptr = &player_ptr->inventory_list[slot];
-    if (o_ptr->bi_id) {
+    if (o_ptr->is_valid()) {
         (void)inven_takeoff(player_ptr, slot, 255);
     }
 
index 853e13c..3661460 100644 (file)
@@ -210,13 +210,13 @@ static void aura_shadow_by_monster_attack(PlayerType *player_ptr, MonsterAttackP
         return;
     }
 
-    if (o_armed_ptr->bi_id) {
+    if (o_armed_ptr->is_valid()) {
         int basedam = ((o_armed_ptr->dd + player_ptr->to_dd[0]) * (o_armed_ptr->ds + player_ptr->to_ds[0] + 1));
         dam = basedam / 2 + o_armed_ptr->to_d + player_ptr->to_d[0];
     }
 
     o_armed_ptr = &player_ptr->inventory_list[INVEN_BODY];
-    if ((o_armed_ptr->bi_id) && o_armed_ptr->is_cursed()) {
+    if (o_armed_ptr->is_valid() && o_armed_ptr->is_cursed()) {
         dam *= 2;
     }
 
@@ -243,7 +243,7 @@ static void aura_shadow_by_monster_attack(PlayerType *player_ptr, MonsterAttackP
     /* Some cursed armours gives an extra effect */
     for (int j = 0; j < TABLE_SIZE; j++) {
         o_armed_ptr = &player_ptr->inventory_list[table[j].slot];
-        if ((o_armed_ptr->bi_id) && o_armed_ptr->is_cursed() && o_armed_ptr->is_protector()) {
+        if (o_armed_ptr->is_valid() && o_armed_ptr->is_cursed() && o_armed_ptr->is_protector()) {
             project(player_ptr, 0, 0, monap_ptr->m_ptr->fy, monap_ptr->m_ptr->fx, (player_ptr->lev * 2), table[j].type, flg);
         }
     }
index 2068093..1c9731a 100644 (file)
@@ -106,7 +106,7 @@ void compact_objects(PlayerType *player_ptr, int size)
 
     for (OBJECT_IDX i = floor_ptr->o_max - 1; i >= 1; i--) {
         o_ptr = &floor_ptr->o_list[i];
-        if (o_ptr->bi_id) {
+        if (o_ptr->is_valid()) {
             continue;
         }
 
index f23163a..25d5748 100644 (file)
@@ -584,7 +584,7 @@ std::string describe_flavor(PlayerType *player_ptr, const ItemEntity *o_ptr, BIT
     std::stringstream ss;
     ss << describe_named_item(player_ptr, item, opt);
 
-    if (any_bits(mode, OD_NAME_ONLY) || (o_ptr->bi_id == 0)) {
+    if (any_bits(mode, OD_NAME_ONLY) || !o_ptr->is_valid()) {
         return ss.str();
     }
 
@@ -595,7 +595,7 @@ std::string describe_flavor(PlayerType *player_ptr, const ItemEntity *o_ptr, BIT
     if (none_bits(mode, OD_DEBUG)) {
         const auto &bow = player_ptr->inventory_list[INVEN_BOW];
         const auto tval = item.bi_key.tval();
-        if ((bow.bi_id != 0) && (tval == bow.get_arrow_kind())) {
+        if (bow.is_valid() && (tval == bow.get_arrow_kind())) {
             ss << describe_ammo_detail(player_ptr, item, bow, opt);
         } else if (PlayerClass(player_ptr).equals(PlayerClassType::NINJA) && (tval == ItemKindType::SPIKE)) {
             ss << describe_spike_detail(player_ptr);
index a20275c..1a639b9 100644 (file)
@@ -243,7 +243,7 @@ void floor_item_increase(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER
 void floor_item_optimize(PlayerType *player_ptr, INVENTORY_IDX item)
 {
     auto *o_ptr = &player_ptr->current_floor_ptr->o_list[item];
-    if (!o_ptr->bi_id) {
+    if (!o_ptr->is_valid()) {
         return;
     }
     if (o_ptr->number) {
index f93692a..7bb9639 100644 (file)
@@ -213,7 +213,7 @@ void regenerate_captured_monsters(PlayerType *player_ptr)
     bool heal = false;
     for (int i = 0; i < INVEN_TOTAL; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         if (o_ptr->bi_key.tval() != ItemKindType::CAPTURE) {
index 545ebe0..d339990 100644 (file)
@@ -182,7 +182,7 @@ static void curse_teleport(PlayerType *player_ptr)
     int i_keep = 0, count = 0;
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index 100b089..4321f84 100644 (file)
@@ -37,7 +37,7 @@ void inventory_damage(PlayerType *player_ptr, const ObjectBreaker &breaker, int
     /* Scan through the slots backwards */
     for (i = 0; i < INVEN_PACK; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index 1b2c5bc..c30d8bf 100644 (file)
@@ -81,7 +81,7 @@ void inven_item_increase(PlayerType *player_ptr, INVENTORY_IDX item, ITEM_NUMBER
 void inven_item_optimize(PlayerType *player_ptr, INVENTORY_IDX item)
 {
     auto *o_ptr = &player_ptr->inventory_list[item];
-    if (!o_ptr->bi_id) {
+    if (!o_ptr->is_valid()) {
         return;
     }
     if (o_ptr->number) {
@@ -167,13 +167,13 @@ void combine_pack(PlayerType *player_ptr)
         for (int i = INVEN_PACK; i > 0; i--) {
             ItemEntity *o_ptr;
             o_ptr = &player_ptr->inventory_list[i];
-            if (!o_ptr->bi_id) {
+            if (!o_ptr->is_valid()) {
                 continue;
             }
             for (int j = 0; j < i; j++) {
                 ItemEntity *j_ptr;
                 j_ptr = &player_ptr->inventory_list[j];
-                if (!j_ptr->bi_id) {
+                if (!j_ptr->is_valid()) {
                     continue;
                 }
 
@@ -248,7 +248,7 @@ void reorder_pack(PlayerType *player_ptr)
         }
 
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -307,7 +307,7 @@ int16_t store_item_to_inventory(PlayerType *player_ptr, ItemEntity *o_ptr)
     ItemEntity *j_ptr;
     for (j = 0; j < INVEN_PACK; j++) {
         j_ptr = &player_ptr->inventory_list[j];
-        if (!j_ptr->bi_id) {
+        if (!j_ptr->is_valid()) {
             continue;
         }
 
@@ -327,7 +327,7 @@ int16_t store_item_to_inventory(PlayerType *player_ptr, ItemEntity *o_ptr)
 
     for (j = 0; j <= INVEN_PACK; j++) {
         j_ptr = &player_ptr->inventory_list[j];
-        if (!j_ptr->bi_id) {
+        if (!j_ptr->is_valid()) {
             break;
         }
     }
@@ -377,7 +377,7 @@ bool check_store_item_to_inventory(PlayerType *player_ptr, const ItemEntity *o_p
 
     for (int j = 0; j < INVEN_PACK; j++) {
         auto *j_ptr = &player_ptr->inventory_list[j];
-        if (!j_ptr->bi_id) {
+        if (!j_ptr->is_valid()) {
             continue;
         }
 
index 8865d8c..ab09198 100644 (file)
@@ -125,7 +125,7 @@ bool get_tag(PlayerType *player_ptr, COMMAND_CODE *cp, char tag, BIT_FLAGS mode,
 
     for (COMMAND_CODE i = start; i <= end; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if ((o_ptr->bi_id == 0) || !o_ptr->is_inscribed()) {
+        if (!o_ptr->is_valid() || !o_ptr->is_inscribed()) {
             continue;
         }
 
@@ -150,7 +150,7 @@ bool get_tag(PlayerType *player_ptr, COMMAND_CODE *cp, char tag, BIT_FLAGS mode,
 
     for (COMMAND_CODE i = start; i <= end; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if ((o_ptr->bi_id == 0) || !o_ptr->is_inscribed()) {
+        if (!o_ptr->is_valid() || !o_ptr->is_inscribed()) {
             continue;
         }
 
@@ -267,7 +267,7 @@ INVENTORY_IDX label_to_inventory(PlayerType *player_ptr, int c)
 {
     INVENTORY_IDX i = (INVENTORY_IDX)(islower(c) ? A2I(c) : -1);
 
-    if ((i < 0) || (i > INVEN_PACK) || (player_ptr->inventory_list[i].bi_id == 0)) {
+    if ((i < 0) || (i > INVEN_PACK) || !player_ptr->inventory_list[i].is_valid()) {
         return -1;
     }
 
index e016343..6c16d88 100644 (file)
  */
 void pack_overflow(PlayerType *player_ptr)
 {
-    if (player_ptr->inventory_list[INVEN_PACK].bi_id == 0) {
+    if (!player_ptr->inventory_list[INVEN_PACK].is_valid()) {
         return;
     }
 
     update_creature(player_ptr);
-    if (!player_ptr->inventory_list[INVEN_PACK].bi_id) {
+    if (!player_ptr->inventory_list[INVEN_PACK].is_valid()) {
         return;
     }
 
index 4470ba7..8e1e80c 100644 (file)
@@ -58,7 +58,7 @@ void recharge_magic_items(PlayerType *player_ptr)
 
     for (changed = false, i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -84,7 +84,7 @@ void recharge_magic_items(PlayerType *player_ptr)
     for (changed = false, i = 0; i < INVEN_PACK; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
         const auto &baseitem = baseitems_info[o_ptr->bi_id];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index f56094a..bc3a79b 100644 (file)
@@ -515,7 +515,7 @@ static void dump_aux_equipment_inventory(PlayerType *player_ptr, FILE *fff)
     fprintf(fff, _("  [キャラクタの持ち物]\n\n", "  [Character Inventory]\n\n"));
 
     for (int i = 0; i < INVEN_PACK; i++) {
-        if (!player_ptr->inventory_list[i].bi_id) {
+        if (!player_ptr->inventory_list[i].is_valid()) {
             break;
         }
 
index eef13da..03bc911 100644 (file)
@@ -319,12 +319,12 @@ void InputKeyRequestor::sweep_confirmation_equipments()
 {
     auto caret_command = this->get_caret_command();
     for (auto i = enum2i(INVEN_MAIN_HAND); i < INVEN_TOTAL; i++) {
-        auto &o_ref = this->player_ptr->inventory_list[i];
-        if ((o_ref.bi_id == 0) || !o_ref.is_inscribed()) {
+        auto &item = this->player_ptr->inventory_list[i];
+        if (!item.is_valid() || !item.is_inscribed()) {
             continue;
         }
 
-        this->confirm_command(o_ref, caret_command);
+        this->confirm_command(item, caret_command);
     }
 }
 
index d73a857..876d4eb 100644 (file)
@@ -86,7 +86,7 @@ static bool determine_spcial_item_type(ItemEntity *o_ptr, ItemKindType tval)
  */
 static bool check_item_knowledge(ItemEntity *o_ptr, ItemKindType tval)
 {
-    if (o_ptr->bi_id == 0) {
+    if (!o_ptr->is_valid()) {
         return false;
     }
     if (o_ptr->bi_key.tval() != tval) {
index 3426f87..9be24f9 100644 (file)
@@ -82,7 +82,7 @@ void do_cmd_knowledge_artifacts(PlayerType *player_ptr)
 
     for (auto i = 0; i < INVEN_TOTAL; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         if (!o_ptr->is_fixed_artifact()) {
index 105afd7..9f3be15 100644 (file)
@@ -38,7 +38,7 @@ static errr rd_inventory(PlayerType *player_ptr)
 
         ItemEntity item;
         item_loader->rd_item(&item);
-        if (!item.bi_id) {
+        if (!item.is_valid()) {
             return 53;
         }
 
index 70d485d..7b64e5d 100644 (file)
@@ -110,7 +110,7 @@ static void calc_blow_un_power(PlayerType *player_ptr, MonsterAttackPlayer *mona
     for (int i = 0; i < max_draining_item; i++) {
         INVENTORY_IDX i_idx = (INVENTORY_IDX)randint0(INVEN_PACK);
         monap_ptr->o_ptr = &player_ptr->inventory_list[i_idx];
-        if (monap_ptr->o_ptr->bi_id == 0) {
+        if (!monap_ptr->o_ptr->is_valid()) {
             continue;
         }
 
index fc0a443..466d2c9 100644 (file)
@@ -142,7 +142,7 @@ void process_eat_item(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr)
         OBJECT_IDX o_idx;
         INVENTORY_IDX i_idx = (INVENTORY_IDX)randint0(INVEN_PACK);
         monap_ptr->o_ptr = &player_ptr->inventory_list[i_idx];
-        if (!monap_ptr->o_ptr->bi_id) {
+        if (!monap_ptr->o_ptr->is_valid()) {
             continue;
         }
 
@@ -172,7 +172,7 @@ void process_eat_food(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr)
     for (int i = 0; i < 10; i++) {
         INVENTORY_IDX i_idx = (INVENTORY_IDX)randint0(INVEN_PACK);
         monap_ptr->o_ptr = &player_ptr->inventory_list[i_idx];
-        if (!monap_ptr->o_ptr->bi_id) {
+        if (!monap_ptr->o_ptr->is_valid()) {
             continue;
         }
 
index f4f2e41..d1215d7 100644 (file)
@@ -194,7 +194,7 @@ bool ItemMagicApplier::set_fixed_artifact_generation_info()
  */
 void ItemMagicApplier::apply_cursed()
 {
-    if (this->o_ptr->bi_id == 0) {
+    if (!this->o_ptr->is_valid()) {
         return;
     }
 
index f69c347..8c65991 100644 (file)
@@ -71,7 +71,7 @@ void curse_equipment(PlayerType *player_ptr, PERCENTAGE chance, PERCENTAGE heavy
     }
 
     auto *o_ptr = &player_ptr->inventory_list[INVEN_MAIN_HAND + randint0(12)];
-    if (!o_ptr->bi_id) {
+    if (!o_ptr->is_valid()) {
         return;
     }
 
index 6cad47d..b4f97df 100644 (file)
@@ -72,7 +72,7 @@ FuncItemTester::FuncItemTester(std::function<bool(PlayerType *, const ItemEntity
  */
 bool ItemTester::okay(const ItemEntity *o_ptr) const
 {
-    if (o_ptr->bi_id == 0) {
+    if (!o_ptr->is_valid()) {
         return false;
     }
 
index 8e12d65..ab00aa8 100644 (file)
@@ -273,7 +273,7 @@ void sense_inventory1(PlayerType *player_ptr)
     for (INVENTORY_IDX i = 0; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
 
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -401,7 +401,7 @@ void sense_inventory2(PlayerType *player_ptr)
     for (INVENTORY_IDX i = 0; i < INVEN_TOTAL; i++) {
         bool okay = false;
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index eaccf33..34ecf9c 100644 (file)
@@ -150,7 +150,7 @@ static void get_attack_exp(PlayerType *player_ptr, player_attack_type *pa_ptr)
 {
     auto *r_ptr = &monraces_info[pa_ptr->m_ptr->r_idx];
     auto *o_ptr = &player_ptr->inventory_list[enum2i(INVEN_MAIN_HAND) + pa_ptr->hand];
-    if (o_ptr->bi_id == 0) {
+    if (!o_ptr->is_valid()) {
         get_bare_knuckle_exp(player_ptr, pa_ptr);
         return;
     }
@@ -374,7 +374,7 @@ static void calc_attack_damage(PlayerType *player_ptr, player_attack_type *pa_pt
         return;
     }
 
-    if (o_ptr->bi_id) {
+    if (o_ptr->is_valid()) {
         process_weapon_attack(player_ptr, pa_ptr, do_quake, vorpal_cut, vorpal_chance);
     }
 }
index 38adc1b..ade1ba9 100644 (file)
@@ -100,7 +100,7 @@ TrFlags PlayerClass::tr_flags() const
         if (heavy_armor(this->player_ptr)) {
             flags.set(TR_SPEED);
         } else {
-            if ((!this->player_ptr->inventory_list[INVEN_MAIN_HAND].bi_id || can_attack_with_main_hand(this->player_ptr)) && (!this->player_ptr->inventory_list[INVEN_SUB_HAND].bi_id || can_attack_with_sub_hand(this->player_ptr))) {
+            if ((!this->player_ptr->inventory_list[INVEN_MAIN_HAND].is_valid() || can_attack_with_main_hand(this->player_ptr)) && (!this->player_ptr->inventory_list[INVEN_SUB_HAND].is_valid() || can_attack_with_sub_hand(this->player_ptr))) {
                 flags.set(TR_SPEED);
             }
             if (plev > 24 && !this->player_ptr->is_icky_wield[0] && !this->player_ptr->is_icky_wield[1]) {
index 1f3e420..12c3575 100644 (file)
@@ -11,7 +11,7 @@ void set_equipment_influence(PlayerType *player_ptr, self_info_type *self_ptr)
 {
     for (int k = INVEN_MAIN_HAND; k < INVEN_TOTAL; k++) {
         auto *o_ptr = &player_ptr->inventory_list[k];
-        if (o_ptr->bi_id == 0) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index 86f93df..a857795 100644 (file)
@@ -17,7 +17,7 @@
 bool has_melee_weapon(PlayerType *player_ptr, int slot)
 {
     const auto o_ptr = &player_ptr->inventory_list[slot];
-    return o_ptr->bi_id && o_ptr->is_melee_weapon();
+    return o_ptr->is_valid() && o_ptr->is_melee_weapon();
 }
 
 /*!
@@ -28,10 +28,10 @@ bool has_melee_weapon(PlayerType *player_ptr, int slot)
 BIT_FLAGS16 empty_hands(PlayerType *player_ptr, bool riding_control)
 {
     BIT_FLAGS16 status = EMPTY_HAND_NONE;
-    if (!player_ptr->inventory_list[INVEN_MAIN_HAND].bi_id) {
+    if (!player_ptr->inventory_list[INVEN_MAIN_HAND].is_valid()) {
         status |= EMPTY_HAND_MAIN;
     }
-    if (!player_ptr->inventory_list[INVEN_SUB_HAND].bi_id) {
+    if (!player_ptr->inventory_list[INVEN_SUB_HAND].is_valid()) {
         status |= EMPTY_HAND_SUB;
     }
 
index ce66b3e..28f5f36 100644 (file)
@@ -125,7 +125,7 @@ static void set_slay_info(self_info_type *self_ptr)
 void set_weapon_effect_info(PlayerType *player_ptr, self_info_type *self_ptr)
 {
     auto *o_ptr = &player_ptr->inventory_list[INVEN_MAIN_HAND];
-    if (o_ptr->bi_id == 0) {
+    if (!o_ptr->is_valid()) {
         return;
     }
 
index 8d4d238..b9ae3df 100644 (file)
@@ -74,7 +74,7 @@ int16_t PlayerSpeed::class_bonus()
     if (pc.equals(PlayerClassType::NINJA)) {
         if (heavy_armor(this->player_ptr)) {
             bonus -= (this->player_ptr->lev) / 10;
-        } else if ((!this->player_ptr->inventory_list[INVEN_MAIN_HAND].bi_id || can_attack_with_main_hand(this->player_ptr)) && (!this->player_ptr->inventory_list[INVEN_SUB_HAND].bi_id || can_attack_with_sub_hand(this->player_ptr))) {
+        } else if ((!this->player_ptr->inventory_list[INVEN_MAIN_HAND].is_valid() || can_attack_with_main_hand(this->player_ptr)) && (!this->player_ptr->inventory_list[INVEN_SUB_HAND].is_valid() || can_attack_with_sub_hand(this->player_ptr))) {
             bonus += 3;
             if (!(PlayerRace(this->player_ptr).equals(PlayerRaceType::KLACKON) || PlayerRace(this->player_ptr).equals(PlayerRaceType::SPRITE) || (this->player_ptr->ppersonality == PERSONALITY_MUNCHKIN))) {
                 bonus += (this->player_ptr->lev) / 10;
index 46f3a38..16fdfcb 100644 (file)
@@ -213,7 +213,7 @@ BIT_FLAGS PlayerStatusBase::equipments_flags(tr_type check_flag)
     BIT_FLAGS flags = 0;
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -235,8 +235,8 @@ BIT_FLAGS PlayerStatusBase::equipments_bad_flags(tr_type check_flag)
 {
     BIT_FLAGS flags = 0;
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
-        auto *o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        auto *o_ptr = &this->player_ptr->inventory_list[i];
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -262,7 +262,7 @@ int16_t PlayerStatusBase::equipments_bonus()
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
         auto o_flags = object_flags(o_ptr);
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index e9a1308..6e9d91b 100644 (file)
@@ -74,7 +74,7 @@ int16_t PlayerStealth::class_bonus()
     int16_t bonus = 0;
     if (heavy_armor(this->player_ptr)) {
         bonus -= (this->player_ptr->lev) / 10;
-    } else if ((!this->player_ptr->inventory_list[INVEN_MAIN_HAND].bi_id || can_attack_with_main_hand(this->player_ptr)) && (!this->player_ptr->inventory_list[INVEN_SUB_HAND].bi_id || can_attack_with_sub_hand(this->player_ptr))) {
+    } else if ((!this->player_ptr->inventory_list[INVEN_MAIN_HAND].is_valid() || can_attack_with_main_hand(this->player_ptr)) && (!this->player_ptr->inventory_list[INVEN_SUB_HAND].is_valid() || can_attack_with_sub_hand(this->player_ptr))) {
         bonus += (this->player_ptr->lev) / 10;
     }
 
index 2525988..d533820 100644 (file)
@@ -410,7 +410,7 @@ void Patron::gain_level_reward(PlayerType *player_ptr_, int chosen_reward)
         }
 
         case REW_CURSE_AR: {
-            if (!this->player_ptr->inventory_list[INVEN_BODY].bi_id) {
+            if (!this->player_ptr->inventory_list[INVEN_BODY].is_valid()) {
                 break;
             }
             msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), this->name.data());
@@ -451,7 +451,7 @@ void Patron::gain_level_reward(PlayerType *player_ptr_, int chosen_reward)
                     (void)curse_weapon_object(player_ptr, false, &this->player_ptr->inventory_list[slot]);
                     reward = format(_("%sが破壊された。", "destroying %s"), item_name.data());
                 } else {
-                    if (!this->player_ptr->inventory_list[INVEN_BODY].bi_id) {
+                    if (!this->player_ptr->inventory_list[INVEN_BODY].is_valid()) {
                         break;
                     }
 
index 736947b..fe03d26 100644 (file)
@@ -115,7 +115,7 @@ static bool acid_minus_ac(PlayerType *player_ptr)
         break;
     }
 
-    if ((o_ptr == nullptr) || (o_ptr->bi_id == 0) || !o_ptr->is_protector()) {
+    if ((o_ptr == nullptr) || !o_ptr->is_valid() || !o_ptr->is_protector()) {
         return false;
     }
 
index 916fb66..2709147 100644 (file)
@@ -125,7 +125,7 @@ BIT_FLAGS check_equipment_flags(PlayerType *player_ptr, tr_type tr_flag)
     BIT_FLAGS result = 0L;
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -799,7 +799,7 @@ BIT_FLAGS has_warning(PlayerType *player_ptr)
 
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -1069,7 +1069,7 @@ void update_curses(PlayerType *player_ptr)
 
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         auto flags = object_flags(o_ptr);
@@ -1179,7 +1179,7 @@ void update_extra_blows(PlayerType *player_ptr)
 
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -1482,7 +1482,7 @@ BIT_FLAGS has_vuln_curse(PlayerType *player_ptr)
     BIT_FLAGS result = 0L;
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -1507,7 +1507,7 @@ BIT_FLAGS has_heavy_vuln_curse(PlayerType *player_ptr)
     BIT_FLAGS result = 0L;
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index 7690753..7f38e0d 100644 (file)
@@ -211,7 +211,7 @@ WEIGHT calc_inventory_weight(PlayerType *player_ptr)
     ItemEntity *o_ptr;
     for (int i = 0; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         weight += o_ptr->weight * o_ptr->number;
@@ -332,7 +332,7 @@ static void update_bonuses(PlayerType *player_ptr)
 
     update_ability_scores(player_ptr);
     o_ptr = &player_ptr->inventory_list[INVEN_BOW];
-    if (o_ptr->bi_id) {
+    if (o_ptr->is_valid()) {
         player_ptr->tval_ammo = o_ptr->get_arrow_kind();
         player_ptr->num_fire = calc_num_fire(player_ptr, o_ptr);
     }
@@ -835,7 +835,7 @@ static void update_max_mana(PlayerType *player_ptr)
         player_ptr->cumber_glove = false;
         auto *o_ptr = &player_ptr->inventory_list[INVEN_ARMS];
         auto flags = object_flags(o_ptr);
-        auto should_mp_decrease = o_ptr->bi_id != 0;
+        auto should_mp_decrease = o_ptr->is_valid();
         should_mp_decrease &= flags.has_not(TR_FREE_ACT);
         should_mp_decrease &= flags.has_not(TR_DEC_MANA);
         should_mp_decrease &= flags.has_not(TR_EASY_SPELL);
@@ -1046,7 +1046,7 @@ short calc_num_fire(PlayerType *player_ptr, const ItemEntity *o_ptr)
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         ItemEntity *q_ptr;
         q_ptr = &player_ptr->inventory_list[i];
-        if (!q_ptr->bi_id) {
+        if (!q_ptr->is_valid()) {
             continue;
         }
 
@@ -1066,7 +1066,7 @@ short calc_num_fire(PlayerType *player_ptr, const ItemEntity *o_ptr)
     }
 
     int num = 0;
-    if (o_ptr->bi_id == 0) {
+    if (!o_ptr->is_valid()) {
         return (int16_t)num;
     }
 
@@ -1168,7 +1168,7 @@ static ACTION_SKILL_POWER calc_device_ability(PlayerType *player_ptr)
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         ItemEntity *o_ptr;
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         auto flags = object_flags(o_ptr);
@@ -1297,7 +1297,7 @@ static ACTION_SKILL_POWER calc_search(PlayerType *player_ptr)
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         ItemEntity *o_ptr;
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         auto flags = object_flags(o_ptr);
@@ -1348,7 +1348,7 @@ static ACTION_SKILL_POWER calc_search_freq(PlayerType *player_ptr)
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         ItemEntity *o_ptr;
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         auto flags = object_flags(o_ptr);
@@ -1470,7 +1470,7 @@ static ACTION_SKILL_POWER calc_skill_dig(PlayerType *player_ptr)
 
     pow = 0;
 
-    if (PlayerRace(player_ptr).equals(PlayerRaceType::ENT) && !player_ptr->inventory_list[INVEN_MAIN_HAND].bi_id) {
+    if (PlayerRace(player_ptr).equals(PlayerRaceType::ENT) && !player_ptr->inventory_list[INVEN_MAIN_HAND].is_valid()) {
         pow += player_ptr->lev * 10;
     }
 
@@ -1486,7 +1486,7 @@ static ACTION_SKILL_POWER calc_skill_dig(PlayerType *player_ptr)
 
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         auto flags = object_flags(o_ptr);
@@ -1538,7 +1538,7 @@ static int16_t calc_num_blow(PlayerType *player_ptr, int i)
     auto flags = object_flags(o_ptr);
     PlayerClass pc(player_ptr);
     if (has_melee_weapon(player_ptr, INVEN_MAIN_HAND + i)) {
-        if (o_ptr->bi_id && !player_ptr->heavy_wield[i]) {
+        if (o_ptr->is_valid() && !player_ptr->heavy_wield[i]) {
             int str_index, dex_index;
             int num = 0, wgt = 0, mul = 0, div = 0;
 
@@ -1707,7 +1707,7 @@ static int16_t calc_to_magic_chance(PlayerType *player_ptr)
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         ItemEntity *o_ptr;
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -1732,7 +1732,7 @@ static ARMOUR_CLASS calc_base_ac(PlayerType *player_ptr)
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         ItemEntity *o_ptr;
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         ac += o_ptr->ac;
@@ -1783,7 +1783,7 @@ static ARMOUR_CLASS calc_to_ac(PlayerType *player_ptr, bool is_real_value)
         ItemEntity *o_ptr;
         o_ptr = &player_ptr->inventory_list[i];
         auto flags = object_flags(o_ptr);
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         if (is_real_value || o_ptr->is_known()) {
@@ -1837,22 +1837,22 @@ static ARMOUR_CLASS calc_to_ac(PlayerType *player_ptr, bool is_real_value)
     }
 
     if (pc.is_martial_arts_pro() && !heavy_armor(player_ptr)) {
-        if (!(player_ptr->inventory_list[INVEN_BODY].bi_id)) {
+        if (!player_ptr->inventory_list[INVEN_BODY].is_valid()) {
             ac += (player_ptr->lev * 3) / 2;
         }
-        if (!(player_ptr->inventory_list[INVEN_OUTER].bi_id) && (player_ptr->lev > 15)) {
+        if (!player_ptr->inventory_list[INVEN_OUTER].is_valid() && (player_ptr->lev > 15)) {
             ac += ((player_ptr->lev - 13) / 3);
         }
-        if (!(player_ptr->inventory_list[INVEN_SUB_HAND].bi_id) && (player_ptr->lev > 10)) {
+        if (!player_ptr->inventory_list[INVEN_SUB_HAND].is_valid() && (player_ptr->lev > 10)) {
             ac += ((player_ptr->lev - 8) / 3);
         }
-        if (!(player_ptr->inventory_list[INVEN_HEAD].bi_id) && (player_ptr->lev > 4)) {
+        if (!player_ptr->inventory_list[INVEN_HEAD].is_valid() && (player_ptr->lev > 4)) {
             ac += (player_ptr->lev - 2) / 3;
         }
-        if (!(player_ptr->inventory_list[INVEN_ARMS].bi_id)) {
+        if (!player_ptr->inventory_list[INVEN_ARMS].is_valid()) {
             ac += (player_ptr->lev / 2);
         }
-        if (!(player_ptr->inventory_list[INVEN_FEET].bi_id)) {
+        if (!player_ptr->inventory_list[INVEN_FEET].is_valid()) {
             ac += (player_ptr->lev / 3);
         }
     }
@@ -1864,7 +1864,7 @@ static ARMOUR_CLASS calc_to_ac(PlayerType *player_ptr, bool is_real_value)
 
         for (int i = INVEN_MAIN_HAND; i <= INVEN_FEET; i++) {
             auto *o_ptr = &player_ptr->inventory_list[i];
-            if (!o_ptr->bi_id) {
+            if (!o_ptr->is_valid()) {
                 continue;
             }
             if (!o_ptr->is_protector()) {
@@ -2025,7 +2025,7 @@ void put_equipment_warning(PlayerType *player_ptr)
     if (player_ptr->old_heavy_shoot != heavy_shoot) {
         if (heavy_shoot) {
             msg_print(_("こんな重い弓を装備しているのは大変だ。", "You have trouble wielding such a heavy bow."));
-        } else if (player_ptr->inventory_list[INVEN_BOW].bi_id) {
+        } else if (player_ptr->inventory_list[INVEN_BOW].is_valid()) {
             msg_print(_("この弓なら装備していても辛くない。", "You have no trouble wielding your bow."));
         } else {
             msg_print(_("重い弓を装備からはずして体が楽になった。", "You feel relieved to put down your heavy bow."));
@@ -2175,7 +2175,7 @@ static short calc_to_damage(PlayerType *player_ptr, INVENTORY_IDX slot, bool is_
         int bonus_to_d = 0;
         o_ptr = &player_ptr->inventory_list[i];
         const auto has_melee = has_melee_weapon(player_ptr, i);
-        if ((o_ptr->bi_id == 0) || (o_ptr->bi_key.tval() == ItemKindType::CAPTURE) || ((i == INVEN_MAIN_HAND) && has_melee) || ((i == INVEN_SUB_HAND) && has_melee) || (i == INVEN_BOW)) {
+        if (!o_ptr->is_valid() || (o_ptr->bi_key.tval() == ItemKindType::CAPTURE) || ((i == INVEN_MAIN_HAND) && has_melee) || ((i == INVEN_SUB_HAND) && has_melee) || (i == INVEN_BOW)) {
             continue;
         }
 
@@ -2413,7 +2413,7 @@ static short calc_to_hit(PlayerType *player_ptr, INVENTORY_IDX slot, bool is_rea
 
         /* Ignore empty hands, handed weapons, bows and capture balls */
         const auto has_melee = has_melee_weapon(player_ptr, i);
-        if (!o_ptr->bi_id || o_ptr->bi_key.tval() == ItemKindType::CAPTURE || (i == INVEN_MAIN_HAND && has_melee) || (i == INVEN_SUB_HAND && has_melee) || i == INVEN_BOW) {
+        if (!o_ptr->is_valid() || o_ptr->bi_key.tval() == ItemKindType::CAPTURE || (i == INVEN_MAIN_HAND && has_melee) || (i == INVEN_SUB_HAND && has_melee) || i == INVEN_BOW) {
             continue;
         }
 
@@ -2506,7 +2506,7 @@ static int16_t calc_to_hit_bow(PlayerType *player_ptr, bool is_real_value)
     {
         ItemEntity *o_ptr;
         o_ptr = &player_ptr->inventory_list[INVEN_BOW];
-        if (o_ptr->bi_id) {
+        if (o_ptr->is_valid()) {
             if (o_ptr->curse_flags.has(CurseTraitType::LOW_MELEE)) {
                 if (o_ptr->curse_flags.has(CurseTraitType::HEAVY_CURSE)) {
                     pow -= 15;
@@ -2537,8 +2537,8 @@ static int16_t calc_to_hit_bow(PlayerType *player_ptr, bool is_real_value)
         pow += 2 * (calc_bow_weight_limit(player_ptr) - o_ptr->weight / 10);
     }
 
-    if (o_ptr->bi_id) {
-        if (o_ptr->bi_id && !is_heavy_shoot(player_ptr, &player_ptr->inventory_list[INVEN_BOW])) {
+    if (o_ptr->is_valid()) {
+        if (!is_heavy_shoot(player_ptr, &player_ptr->inventory_list[INVEN_BOW])) {
             if (PlayerClass(player_ptr).equals(PlayerClassType::SNIPER) && (player_ptr->tval_ammo == ItemKindType::BOLT)) {
                 pow += (10 + (player_ptr->lev / 5));
             }
@@ -2550,7 +2550,7 @@ static int16_t calc_to_hit_bow(PlayerType *player_ptr, bool is_real_value)
         int bonus_to_h;
         o_ptr = &player_ptr->inventory_list[i];
         const auto has_melee = has_melee_weapon(player_ptr, i);
-        if ((o_ptr->bi_id == 0) || (o_ptr->bi_key.tval() == ItemKindType::CAPTURE) || ((i == INVEN_MAIN_HAND) && has_melee) || ((i == INVEN_SUB_HAND) && has_melee) || i == INVEN_BOW) {
+        if (!o_ptr->is_valid() || (o_ptr->bi_key.tval() == ItemKindType::CAPTURE) || ((i == INVEN_MAIN_HAND) && has_melee) || ((i == INVEN_SUB_HAND) && has_melee) || i == INVEN_BOW) {
             continue;
         }
 
@@ -2580,7 +2580,7 @@ static int16_t calc_to_damage_misc(PlayerType *player_ptr)
 
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -2611,7 +2611,7 @@ static int16_t calc_to_hit_misc(PlayerType *player_ptr)
 
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -2781,7 +2781,7 @@ bool player_has_no_spellbooks(PlayerType *player_ptr)
     ItemEntity *o_ptr;
     for (int i = 0; i < INVEN_PACK; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (o_ptr->bi_id && check_book_realm(player_ptr, o_ptr->bi_key)) {
+        if (o_ptr->is_valid() && check_book_realm(player_ptr, o_ptr->bi_key)) {
             return false;
         }
     }
@@ -2789,7 +2789,7 @@ bool player_has_no_spellbooks(PlayerType *player_ptr)
     auto *floor_ptr = player_ptr->current_floor_ptr;
     for (const auto this_o_idx : floor_ptr->grid_array[player_ptr->y][player_ptr->x].o_idx_list) {
         o_ptr = &floor_ptr->o_list[this_o_idx];
-        if (o_ptr->bi_id && o_ptr->marked.has(OmType::FOUND) && check_book_realm(player_ptr, o_ptr->bi_key)) {
+        if (o_ptr->is_valid() && o_ptr->marked.has(OmType::FOUND) && check_book_realm(player_ptr, o_ptr->bi_key)) {
             return false;
         }
     }
index 2049a51..2ff1929 100644 (file)
@@ -241,7 +241,7 @@ static void inventory_aware(PlayerType *player_ptr)
     ItemEntity *o_ptr;
     for (int i = 0; i < INVEN_TOTAL; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -260,7 +260,7 @@ static void home_aware(PlayerType *player_ptr)
         auto *store_ptr = &towns_info[i].store[enum2i(StoreSaleType::HOME)];
         for (auto j = 0; j < store_ptr->stock_num; j++) {
             auto *o_ptr = &store_ptr->stock[j];
-            if (!o_ptr->bi_id) {
+            if (!o_ptr->is_valid()) {
                 continue;
             }
 
index 3187920..9d7353b 100644 (file)
@@ -83,7 +83,7 @@ void known_obj_immunity(PlayerType *player_ptr, TrFlags &flags)
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         ItemEntity *o_ptr;
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index 020447d..eda8524 100644 (file)
@@ -74,7 +74,7 @@ void calc_android_exp(PlayerType *player_ptr)
         if ((i == INVEN_MAIN_RING) || (i == INVEN_SUB_RING) || (i == INVEN_NECK) || (i == INVEN_LITE)) {
             continue;
         }
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index d88c1d6..2fef634 100644 (file)
@@ -602,7 +602,7 @@ std::optional<std::string> do_hex_spell(PlayerType *player_ptr, spell_hex_type s
         if (cast) {
             auto *o_ptr = &player_ptr->inventory_list[INVEN_OUTER];
 
-            if (!o_ptr->bi_id) {
+            if (!o_ptr->is_valid()) {
                 msg_print(_("クロークを身につけていない!", "You are not wearing a cloak."));
                 return std::nullopt;
             } else if (!o_ptr->is_cursed()) {
@@ -615,7 +615,7 @@ std::optional<std::string> do_hex_spell(PlayerType *player_ptr, spell_hex_type s
         if (continuation) {
             auto *o_ptr = &player_ptr->inventory_list[INVEN_OUTER];
 
-            if ((!o_ptr->bi_id) || (!o_ptr->is_cursed())) {
+            if ((!o_ptr->is_valid()) || (!o_ptr->is_cursed())) {
                 exe_spell(player_ptr, REALM_HEX, spell, SpellProcessType::STOP);
                 SpellHex spell_hex(player_ptr);
                 spell_hex.reset_casting_flag(spell);
index f56e2e3..9d8bbcb 100644 (file)
@@ -204,7 +204,7 @@ static bool wr_savefile_new(PlayerType *player_ptr, SaveType type)
 
     for (int i = 0; i < INVEN_TOTAL; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index fe220aa..5be3d39 100644 (file)
@@ -271,7 +271,7 @@ void Chest::chest_trap(POSITION y, POSITION x, OBJECT_IDX o_idx)
     }
 
     /* Dispel player. */
-    if ((trap.has(ChestTrapType::RUNES_OF_EVIL)) && o_ptr->bi_id) {
+    if ((trap.has(ChestTrapType::RUNES_OF_EVIL)) && o_ptr->is_valid()) {
         msg_print(_("恐ろしい声が響いた:  「暗闇が汝をつつまん!」", "Hideous voices bid:  'Let the darkness have thee!'"));
         for (auto count = 4 + randint0(3); count > 0; count--) {
             if (randint1(100 + o_ptr->pval * 2) <= this->player_ptr->skill_sav) {
@@ -325,7 +325,7 @@ void Chest::chest_trap(POSITION y, POSITION x, OBJECT_IDX o_idx)
     }
 
     /* Explode */
-    if ((trap.has(ChestTrapType::EXPLODE)) && o_ptr->bi_id) {
+    if ((trap.has(ChestTrapType::EXPLODE)) && o_ptr->is_valid()) {
         msg_print(_("突然、箱が爆発した!", "There is a sudden explosion!"));
         msg_print(_("箱の中の物はすべて粉々に砕け散った!", "Everything inside the chest is destroyed!"));
         o_ptr->pval = 0;
@@ -333,7 +333,7 @@ void Chest::chest_trap(POSITION y, POSITION x, OBJECT_IDX o_idx)
         take_hit(this->player_ptr, DAMAGE_ATTACK, damroll(5, 8), _("爆発する箱", "an exploding chest"));
     }
     /* Scatter contents. */
-    if ((trap.has(ChestTrapType::SCATTER)) && o_ptr->bi_id) {
+    if ((trap.has(ChestTrapType::SCATTER)) && o_ptr->is_valid()) {
         msg_print(_("宝箱の中身はダンジョンじゅうに散乱した!", "The contents of the chest scatter all over the dungeon!"));
         this->chest_death(true, y, x, o_idx);
         o_ptr->pval = 0;
index 915433e..2927dfb 100644 (file)
@@ -94,7 +94,7 @@ void update_lite_radius(PlayerType *player_ptr)
         o_ptr = &player_ptr->inventory_list[i];
         auto flags = object_flags(o_ptr);
 
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index 0df187d..ff1bf3f 100644 (file)
@@ -21,7 +21,7 @@ static int exe_curse_removal(PlayerType *player_ptr, int all)
     int cnt = 0;
     for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         if (!o_ptr->is_cursed()) {
index a024c22..536e930 100644 (file)
@@ -52,7 +52,7 @@ bool apply_disenchant(PlayerType *player_ptr, BIT_FLAGS mode)
 
     ItemEntity *o_ptr;
     o_ptr = &player_ptr->inventory_list[t];
-    if (!o_ptr->bi_id) {
+    if (!o_ptr->is_valid()) {
         return false;
     }
 
index 821c332..778008d 100644 (file)
@@ -40,7 +40,7 @@ void identify_pack(PlayerType *player_ptr)
 {
     for (INVENTORY_IDX i = 0; i < INVEN_TOTAL; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index a3ed2c6..4faedf3 100644 (file)
@@ -560,7 +560,7 @@ void teleport_away_followable(PlayerType *player_ptr, MONSTER_IDX m_idx)
 
         for (i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
             o_ptr = &player_ptr->inventory_list[i];
-            if (o_ptr->bi_id && !o_ptr->is_cursed()) {
+            if (o_ptr->is_valid() && !o_ptr->is_cursed()) {
                 auto flags = object_flags(o_ptr);
                 if (flags.has(TR_TELEPORT)) {
                     follow = true;
index 818f1c9..1cca0d4 100644 (file)
@@ -279,7 +279,7 @@ bool pulish_shield(PlayerType *player_ptr)
     }
 
     const auto item_name = describe_flavor(player_ptr, o_ptr, OD_OMIT_PREFIX | OD_NAME_ONLY);
-    auto is_pulish_successful = (o_ptr->bi_id > 0) && !o_ptr->is_fixed_or_random_artifact() && !o_ptr->is_ego();
+    auto is_pulish_successful = o_ptr->is_valid() && !o_ptr->is_fixed_or_random_artifact() && !o_ptr->is_ego();
     is_pulish_successful &= !o_ptr->is_cursed();
     is_pulish_successful &= (o_ptr->bi_key.sval() != SV_MIRROR_SHIELD);
     if (is_pulish_successful) {
index c9c6d1e..6b0642a 100644 (file)
@@ -219,7 +219,7 @@ bool curse_armor(PlayerType *player_ptr)
 {
     /* Curse the body armor */
     auto *o_ptr = &player_ptr->inventory_list[INVEN_BODY];
-    if (o_ptr->bi_id == 0) {
+    if (!o_ptr->is_valid()) {
         return false;
     }
 
@@ -263,7 +263,7 @@ bool curse_armor(PlayerType *player_ptr)
  */
 bool curse_weapon_object(PlayerType *player_ptr, bool force, ItemEntity *o_ptr)
 {
-    if (o_ptr->bi_id == 0) {
+    if (!o_ptr->is_valid()) {
         return false;
     }
 
@@ -525,7 +525,7 @@ void brand_weapon(PlayerType *player_ptr, int brand_type)
     auto special_weapon = bi_key == BaseitemKey(ItemKindType::SWORD, SV_POISON_NEEDLE);
     special_weapon |= bi_key == BaseitemKey(ItemKindType::POLEARM, SV_DEATH_SCYTHE);
     special_weapon |= bi_key == BaseitemKey(ItemKindType::SWORD, SV_DIAMOND_EDGE);
-    const auto is_normal_item = (o_ptr->bi_id > 0) && !o_ptr->is_fixed_or_random_artifact() && !o_ptr->is_ego() && !o_ptr->is_cursed() && !special_weapon;
+    const auto is_normal_item = o_ptr->is_valid() && !o_ptr->is_fixed_or_random_artifact() && !o_ptr->is_ego() && !o_ptr->is_cursed() && !special_weapon;
     if (!is_normal_item) {
         if (flush_failure) {
             flush();
index 5abc15e..bd2ca14 100644 (file)
@@ -293,7 +293,7 @@ bool lose_all_info(PlayerType *player_ptr)
     chg_virtue(player_ptr, V_ENLIGHTEN, -5);
     for (int i = 0; i < INVEN_TOTAL; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if ((o_ptr->bi_id == 0) || o_ptr->is_fully_known()) {
+        if (!o_ptr->is_valid() || o_ptr->is_fully_known()) {
             continue;
         }
 
index 5472ccd..b691abf 100644 (file)
@@ -109,7 +109,7 @@ static void sweep_reorder_store_item(ItemEntity *o_ptr, const int i, bool *combi
     for (int j = 0; j < i; j++) {
         ItemEntity *j_ptr;
         j_ptr = &st_ptr->stock[j];
-        if (!j_ptr->bi_id) {
+        if (!j_ptr->is_valid()) {
             continue;
         }
 
@@ -144,7 +144,7 @@ static void exe_reorder_store_item(PlayerType *player_ptr, bool *flag)
     for (int i = 0; i < st_ptr->stock_num; i++) {
         ItemEntity *o_ptr;
         o_ptr = &st_ptr->stock[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -197,7 +197,7 @@ bool combine_and_reorder_home(PlayerType *player_ptr, const StoreSaleType store_
         for (int i = st_ptr->stock_num - 1; i > 0; i--) {
             ItemEntity *o_ptr;
             o_ptr = &st_ptr->stock[i];
-            if (!o_ptr->bi_id) {
+            if (!o_ptr->is_valid()) {
                 continue;
             }
 
index 8b829f8..e4a740d 100644 (file)
@@ -47,9 +47,8 @@ void store_item_increase(INVENTORY_IDX item, ITEM_NUMBER num)
  */
 void store_item_optimize(INVENTORY_IDX item)
 {
-    ItemEntity *o_ptr;
-    o_ptr = &st_ptr->stock[item];
-    if ((o_ptr->bi_id == 0) || (o_ptr->number != 0)) {
+    const auto *o_ptr = &st_ptr->stock[item];
+    if (!o_ptr->is_valid() || (o_ptr->number != 0)) {
         return;
     }
 
index 847b51b..7b5a3de 100644 (file)
@@ -621,7 +621,7 @@ TERM_COLOR ItemEntity::get_color() const
         return baseitems_info[flavor].x_attr;
     }
 
-    auto has_attr = this->bi_id == 0;
+    auto has_attr = !this->is_valid();
     has_attr |= this->bi_key != BaseitemKey(ItemKindType::CORPSE, SV_CORPSE);
     has_attr |= baseitem.x_attr != TERM_DARK;
     if (has_attr) {
index b7c0aa2..fab8df4 100644 (file)
@@ -41,7 +41,7 @@ static int get_item_sort_rank(const ItemEntity &item)
  */
 bool object_sort_comp(PlayerType *player_ptr, ItemEntity *o_ptr, int32_t o_value, ItemEntity *j_ptr)
 {
-    if (j_ptr->bi_id == 0) {
+    if (!j_ptr->is_valid()) {
         return true;
     }
 
index e439d44..94018a1 100644 (file)
@@ -44,7 +44,7 @@ COMMAND_CODE show_inventory(PlayerType *player_ptr, int target_item, BIT_FLAGS m
     int len = wid - col - 1;
     for (i = 0; i < INVEN_PACK; i++) {
         o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
@@ -152,7 +152,7 @@ void display_inventory(PlayerType *player_ptr, const ItemTester &item_tester)
 
     for (i = 0; i < INVEN_PACK; i++) {
         auto o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
         z = i + 1;
index 3ba3a97..c3f8896 100644 (file)
@@ -133,7 +133,7 @@ static void display_bow_hit_damage(PlayerType *player_ptr)
 static void display_shoot_magnification(PlayerType *player_ptr)
 {
     int tmul = 0;
-    if (player_ptr->inventory_list[INVEN_BOW].bi_id) {
+    if (player_ptr->inventory_list[INVEN_BOW].is_valid()) {
         tmul = player_ptr->inventory_list[INVEN_BOW].get_arrow_magnification();
         if (player_ptr->xtra_might) {
             tmul++;
index a0bf603..2671178 100644 (file)
@@ -331,10 +331,10 @@ void display_player_equippy(PlayerType *player_ptr, TERM_LEN y, TERM_LEN x, BIT_
 {
     const auto max_i = (mode & DP_WP) ? INVEN_BOW + 1 : INVEN_TOTAL;
     for (int i = INVEN_MAIN_HAND; i < max_i; i++) {
-        const auto &o_ref = player_ptr->inventory_list[i];
-        auto a = o_ref.get_color();
-        auto c = o_ref.get_symbol();
-        if (!equippy_chars || (o_ref.bi_id == 0)) {
+        const auto &item = player_ptr->inventory_list[i];
+        auto a = item.get_color();
+        auto c = item.get_symbol();
+        if (!equippy_chars || !item.is_valid()) {
             c = ' ';
             a = TERM_DARK;
         }
index 053949d..74ff216 100644 (file)
@@ -40,7 +40,7 @@
  */
 static void calc_shot_params(PlayerType *player_ptr, ItemEntity *o_ptr, int *shots, int *shot_frac)
 {
-    if (o_ptr->bi_id == 0) {
+    if (!o_ptr->is_valid()) {
         return;
     }
 
@@ -120,7 +120,7 @@ static bool calc_weapon_damage_limit(PlayerType *player_ptr, int hand, int *dama
  */
 static bool calc_weapon_one_hand(ItemEntity *o_ptr, int hand, int *damage, int *basedam)
 {
-    if (o_ptr->bi_id == 0) {
+    if (!o_ptr->is_valid()) {
         return false;
     }
 
index 3027bd0..7c134f0 100644 (file)
@@ -618,7 +618,7 @@ static void display_found_item_list(PlayerType *player_ptr)
     std::vector<ItemEntity *> found_item_list;
     for (auto &item : floor_ptr->o_list) {
         auto item_entity_ptr = &item;
-        if (item_entity_ptr->bi_id > 0 && item_entity_ptr->marked.has(OmType::FOUND) && item_entity_ptr->bi_key.tval() != ItemKindType::GOLD) {
+        if (item_entity_ptr->is_valid() && item_entity_ptr->marked.has(OmType::FOUND) && item_entity_ptr->bi_key.tval() != ItemKindType::GOLD) {
             found_item_list.push_back(item_entity_ptr);
         }
     }
index f2603a6..4e1b3cd 100644 (file)
@@ -242,7 +242,7 @@ bool exe_cmd_debug(PlayerType *player_ptr, char cmd)
         break;
     case 'X':
         for (INVENTORY_IDX i = INVEN_TOTAL - 1; i >= 0; i--) {
-            if (player_ptr->inventory_list[i].bi_id) {
+            if (player_ptr->inventory_list[i].is_valid()) {
                 drop_from_inventory(player_ptr, i, 999);
             }
         }
index 07b3f31..a4c0d28 100644 (file)
@@ -222,7 +222,7 @@ void wiz_identify_full_inventory(PlayerType *player_ptr)
 {
     for (int i = 0; i < INVEN_TOTAL; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if (!o_ptr->bi_id) {
+        if (!o_ptr->is_valid()) {
             continue;
         }
 
index a1f64ba..e6f4a69 100644 (file)
@@ -32,13 +32,11 @@ OBJECT_IDX o_pop(FloorType *floor_ptr)
     }
 
     for (OBJECT_IDX i = 1; i < floor_ptr->o_max; i++) {
-        ItemEntity *o_ptr;
-        o_ptr = &floor_ptr->o_list[i];
-        if (o_ptr->bi_id) {
+        if (floor_ptr->o_list[i].is_valid()) {
             continue;
         }
-        floor_ptr->o_cnt++;
 
+        floor_ptr->o_cnt++;
         return i;
     }