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;
}
}
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);
}
*/
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;
}
*/
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;
}
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;
}
if (slot == INVEN_LITE) {
continue;
}
- if (player_ptr->inventory_list[slot].bi_id) {
+ if (player_ptr->inventory_list[slot].is_valid()) {
continue;
}
{
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;
}
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);
}
}
} 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.");
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))) {
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? ");
}
o_ptr = &player_ptr->inventory_list[slot];
- if (o_ptr->bi_id) {
+ if (o_ptr->is_valid()) {
(void)inven_takeoff(player_ptr, slot, 255);
}
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;
}
/* 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);
}
}
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;
}
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();
}
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);
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) {
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) {
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;
}
/* 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;
}
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) {
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;
}
}
o_ptr = &player_ptr->inventory_list[i];
- if (!o_ptr->bi_id) {
+ if (!o_ptr->is_valid()) {
continue;
}
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;
}
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;
}
}
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;
}
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;
}
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;
}
{
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;
}
*/
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;
}
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;
}
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;
}
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;
}
{
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);
}
}
*/
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) {
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()) {
ItemEntity item;
item_loader->rd_item(&item);
- if (!item.bi_id) {
+ if (!item.is_valid()) {
return 53;
}
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;
}
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;
}
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;
}
*/
void ItemMagicApplier::apply_cursed()
{
- if (this->o_ptr->bi_id == 0) {
+ if (!this->o_ptr->is_valid()) {
return;
}
}
auto *o_ptr = &player_ptr->inventory_list[INVEN_MAIN_HAND + randint0(12)];
- if (!o_ptr->bi_id) {
+ if (!o_ptr->is_valid()) {
return;
}
*/
bool ItemTester::okay(const ItemEntity *o_ptr) const
{
- if (o_ptr->bi_id == 0) {
+ if (!o_ptr->is_valid()) {
return false;
}
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;
}
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;
}
{
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;
}
return;
}
- if (o_ptr->bi_id) {
+ if (o_ptr->is_valid()) {
process_weapon_attack(player_ptr, pa_ptr, do_quake, vorpal_cut, vorpal_chance);
}
}
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]) {
{
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;
}
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();
}
/*!
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;
}
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;
}
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;
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;
}
{
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;
}
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;
}
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;
}
}
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());
(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;
}
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;
}
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;
}
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;
}
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);
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;
}
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;
}
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;
}
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;
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);
}
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);
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;
}
}
int num = 0;
- if (o_ptr->bi_id == 0) {
+ if (!o_ptr->is_valid()) {
return (int16_t)num;
}
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);
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);
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);
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;
}
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);
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;
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;
}
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;
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()) {
}
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);
}
}
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()) {
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."));
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;
}
/* 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;
}
{
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;
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));
}
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;
}
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;
}
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;
}
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;
}
}
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;
}
}
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;
}
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;
}
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;
}
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;
}
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()) {
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);
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;
}
}
/* 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) {
}
/* 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;
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;
o_ptr = &player_ptr->inventory_list[i];
auto flags = object_flags(o_ptr);
- if (!o_ptr->bi_id) {
+ if (!o_ptr->is_valid()) {
continue;
}
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()) {
ItemEntity *o_ptr;
o_ptr = &player_ptr->inventory_list[t];
- if (!o_ptr->bi_id) {
+ if (!o_ptr->is_valid()) {
return false;
}
{
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;
}
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;
}
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) {
{
/* 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;
}
*/
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;
}
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();
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;
}
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;
}
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;
}
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;
}
*/
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;
}
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) {
*/
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;
}
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;
}
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;
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++;
{
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;
}
*/
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;
}
*/
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;
}
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);
}
}
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);
}
}
{
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;
}
}
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;
}