}
}
- if (!o_ptr->is_random_artifact() && baseitems_info[o_ptr->bi_id].flags.has(TR_ACTIVATE)) {
- return baseitems_info[o_ptr->bi_id].act_idx;
+ if (!o_ptr->is_random_artifact()) {
+ const auto &baseitem = o_ptr->get_baseitem();
+ if (baseitem.flags.has(TR_ACTIVATE)) {
+ return baseitem.act_idx;
+ }
}
return o_ptr->activation_id;
* ベースアイテムの生成階層が足りない場合1/(不足階層*5)を満たさないと除外される。
*/
const auto bi_id = lookup_baseitem_id(artifact.bi_key);
- if (baseitems_info[bi_id].level > floor_ptr->object_level) {
- int d = (baseitems_info[bi_id].level - floor_ptr->object_level) * 5;
+ const auto &baseitem = baseitems_info[bi_id];
+ if (baseitem.level > floor_ptr->object_level) {
+ int d = (baseitem.level - floor_ptr->object_level) * 5;
if (!one_in_(d)) {
continue;
}
static bool weakening_artifact(ItemEntity *o_ptr)
{
- const auto bi_id = lookup_baseitem_id(o_ptr->bi_key);
- const auto &baseitem = baseitems_info[bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
auto flags = object_flags(o_ptr);
if (flags.has(TR_KILL_EVIL)) {
o_ptr->artifact_bias = 0;
o_ptr->fixed_artifact_idx = FixedArtifactId::NONE;
o_ptr->ego_idx = EgoType::NONE;
- o_ptr->art_flags |= baseitems_info[o_ptr->bi_id].flags;
+ o_ptr->art_flags |= o_ptr->get_baseitem().flags;
bool has_pval = o_ptr->pval != 0;
decide_warrior_bias(player_ptr, o_ptr, a_scroll);
}
if (o_ptr->is_melee_weapon()) {
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
if ((o_ptr->dd != baseitem.dd) || (o_ptr->ds != baseitem.ds)) {
ADD_FLG(FLG_BOOSTED);
}
return false;
}
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
if ((o_ptr->dd == baseitem.dd) && (o_ptr->ds == baseitem.ds)) {
return false;
}
sound(SOUND_EAT);
PlayerEnergy(player_ptr).set_player_turn_energy(100);
-
- /* Object level */
- int lev = baseitems_info[o_ptr->bi_id].level;
+ const auto lev = o_ptr->get_baseitem().level;
/* Identity not known yet */
const auto &bi_key = o_ptr->bi_key;
}
x1 = ((ctr < ITEM_GROUP_SIZE / 2) ? x : x + 40);
y1 = ((ctr < ITEM_GROUP_SIZE / 2) ? y + ctr : y + ctr - ITEM_GROUP_SIZE / 2);
- level = (tval == ItemKindType::ROD ? baseitems_info[bi_id].level * 5 / 6 - 5 : baseitems_info[bi_id].level);
+ const auto &baseitem = baseitems_info[bi_id];
+ level = (tval == ItemKindType::ROD ? baseitem.level * 5 / 6 - 5 : baseitem.level);
chance = level * 4 / 5 + 20;
chance -= 3 * (adj_mag_stat[player_ptr->stat_index[mp_ptr->spell_stat]] - 1);
level /= 2;
if (bi_id) {
if (tval == ItemKindType::ROD) {
dummy.append(
- format(_(" %-22.22s 充填:%2d/%2d%3d%%", " %-22.22s (%2d/%2d) %3d%%"), baseitems_info[bi_id].name.data(),
- item.charge ? (item.charge - 1) / (EATER_ROD_CHARGE * baseitems_info[bi_id].pval) + 1 : 0,
+ format(_(" %-22.22s 充填:%2d/%2d%3d%%", " %-22.22s (%2d/%2d) %3d%%"), baseitem.name.data(),
+ item.charge ? (item.charge - 1) / (EATER_ROD_CHARGE * baseitem.pval) + 1 : 0,
item.count, chance)
.data());
- if (item.charge > baseitems_info[bi_id].pval * (item.count - 1) * EATER_ROD_CHARGE) {
+ if (item.charge > baseitem.pval * (item.count - 1) * EATER_ROD_CHARGE) {
col = TERM_RED;
}
} else {
dummy.append(
- format(" %-22.22s %2d/%2d %3d%%", baseitems_info[bi_id].name.data(), (int16_t)(item.charge / EATER_CHARGE),
+ format(" %-22.22s %2d/%2d %3d%%", baseitem.name.data(), (int16_t)(item.charge / EATER_CHARGE),
item.count, chance)
.data());
if (item.charge < EATER_CHARGE) {
energy.reset_player_turn();
return false;
}
- auto &baseitem = result.value();
+ auto &bi_key = result.value();
- auto bi_id = lookup_baseitem_id(baseitem);
- auto level = (baseitem.tval() == ItemKindType::ROD ? baseitems_info[bi_id].level * 5 / 6 - 5 : baseitems_info[bi_id].level);
+ const auto bi_id = lookup_baseitem_id(bi_key);
+ const auto &baseitem = baseitems_info[bi_id];
+ auto level = (bi_key.tval() == ItemKindType::ROD ? baseitem.level * 5 / 6 - 5 : baseitem.level);
auto chance = level * 4 / 5 + 20;
chance -= 3 * (adj_mag_stat[player_ptr->stat_index[mp_ptr->spell_stat]] - 1);
level /= 2;
} else {
DIRECTION dir = 0;
- switch (baseitem.tval()) {
+ switch (bi_key.tval()) {
case ItemKindType::ROD: {
- const auto sval = baseitem.sval();
+ const auto sval = bi_key.sval();
if (!sval.has_value()) {
return false;
}
- if (baseitem.is_aiming_rod() && !get_aim_dir(player_ptr, &dir)) {
+ if (bi_key.is_aiming_rod() && !get_aim_dir(player_ptr, &dir)) {
return false;
}
break;
}
case ItemKindType::WAND: {
- const auto sval = baseitem.sval();
+ const auto sval = bi_key.sval();
if (!sval.has_value()) {
return false;
}
break;
}
default:
- const auto sval = baseitem.sval();
+ const auto sval = bi_key.sval();
if (!sval.has_value()) {
return false;
}
}
auto magic_eater_data = PlayerClass(player_ptr).get_specific_data<magic_eater_data_type>();
- const auto opt_sval = baseitem.sval();
+ const auto opt_sval = bi_key.sval();
if (!opt_sval.has_value()) {
return false;
}
- const auto tval = baseitem.tval();
+ const auto tval = bi_key.tval();
const auto sval = opt_sval.value();
auto &item = magic_eater_data->get_item_group(tval)[sval];
energy.set_player_turn_energy(100);
if (tval == ItemKindType::ROD) {
- item.charge += baseitems_info[bi_id].pval * EATER_ROD_CHARGE;
+ item.charge += baseitem.pval * EATER_ROD_CHARGE;
} else {
item.charge -= EATER_CHARGE;
}
for (OBJECT_IDX i = 1; i < floor_ptr->o_max; i++) {
o_ptr = &floor_ptr->o_list[i];
- if (!o_ptr->is_valid() || (baseitems_info[o_ptr->bi_id].level > cur_lev)) {
+ if (!o_ptr->is_valid() || (o_ptr->get_baseitem().level > cur_lev)) {
continue;
}
}
if (item.bi_key.tval() == ItemKindType::RING) {
- const auto &baseitem = baseitems_info[item.bi_id];
+ const auto &baseitem = item.get_baseitem();
const auto base_has_no_bonus = (baseitem.to_h == 0) && (baseitem.to_d == 0);
const auto item_has_bonus = (item.to_h != 0) || (item.to_d != 0);
if ((base_has_no_bonus && item_has_bonus) || (item.bi_key.sval() == SV_RING_LAW)) {
return _("(充填中)", " (charging)");
}
- const auto timeout_per_one = baseitems_info[item.bi_id].pval;
+ const auto timeout_per_one = item.get_baseitem().pval;
auto num_of_charging = (item.timeout + (timeout_per_one - 1)) / timeout_per_one;
if (num_of_charging > item.number) {
num_of_charging = item.number;
{
auto flags = object_flags(&item);
if (!all) {
- const auto &baseitem = baseitems_info[item.bi_id];
+ const auto &baseitem = item.get_baseitem();
flags.reset(baseitem.flags);
if (item.is_fixed_artifact()) {
const auto fixed_art_id = item.fixed_artifact_idx;
const auto is_known_artifact = opt.known && item.is_fixed_artifact() && none_bits(opt.mode, OD_BASE_NAME);
- return is_known_artifact ? ArtifactsInfo::get_instance().get_artifact(fixed_art_id).name : baseitems_info[item.bi_id].name;
+ return is_known_artifact ? ArtifactsInfo::get_instance().get_artifact(fixed_art_id).name : item.get_baseitem().name;
}
#ifdef JP
ss << modstr;
break;
- case '%':
+ case '%': {
+ const auto &baseitem = item.get_baseitem();
#ifdef JP
- ss << baseitems_info[item.bi_id].name;
+ ss << baseitem.name;
#else
- for (auto ib = baseitems_info[item.bi_id].name.begin(), ib_end = baseitems_info[item.bi_id].name.end(); ib != ib_end; ++ib) {
+ for (auto ib = baseitem.name.begin(), ib_end = baseitem.name.end(); ib != ib_end; ++ib) {
if (*ib == '~') {
pluralize(ss, ib);
} else {
}
#endif
break;
+ }
#ifndef JP
case '~':
static std::pair<std::string, std::string> describe_monster_ball(const ItemEntity &item, const describe_option_type &opt)
{
- const auto &basename = baseitems_info[item.bi_id].name;
+ const auto &basename = item.get_baseitem().name;
const auto r_idx = i2enum<MonsterRaceId>(item.pval);
auto *r_ptr = &monraces_info[r_idx];
if (!opt.known) {
static std::pair<std::string, std::string> describe_statue(const ItemEntity &item)
{
- const auto &basename = baseitems_info[item.bi_id].name;
+ const auto &basename = item.get_baseitem().name;
const auto r_idx = i2enum<MonsterRaceId>(item.pval);
auto *r_ptr = &monraces_info[r_idx];
#ifdef JP
*/
static std::string flavor_name_of(const ItemEntity &item, const describe_option_type &opt)
{
- const auto &baseitem = baseitems_info[item.bi_id];
+ const auto &baseitem = item.get_baseitem();
return any_bits(opt.mode, OD_FORCE_FLAVOR)
? baseitem.flavor_name
: baseitems_info[baseitem.flavor].flavor_name;
static std::pair<std::string, std::string> describe_amulet(const ItemEntity &item, const describe_option_type &opt)
{
- const auto &baseitem = baseitems_info[item.bi_id];
+ const auto &baseitem = item.get_baseitem();
if (opt.aware && (item.is_fixed_artifact() || baseitem.gen_flags.has(ItemGenerationTraitType::INSTA_ART))) {
return { baseitem.name, "" };
}
static std::pair<std::string, std::string> describe_ring(const ItemEntity &item, const describe_option_type &opt)
{
- const auto &baseitem = baseitems_info[item.bi_id];
+ const auto &baseitem = item.get_baseitem();
if (opt.aware && (item.is_fixed_artifact() || baseitem.gen_flags.has(ItemGenerationTraitType::INSTA_ART))) {
return { baseitem.name, "" };
}
static std::pair<std::string, std::string> describe_food(const ItemEntity &item, const describe_option_type &opt)
{
- const auto &baseitem = baseitems_info[item.bi_id];
+ const auto &baseitem = item.get_baseitem();
if (baseitem.flavor_name.empty()) {
return { baseitem.name, "" };
}
*/
std::pair<std::string, std::string> switch_tval_description(const ItemEntity &item, const describe_option_type &opt)
{
- const auto &basename = baseitems_info[item.bi_id].name;
+ const auto &basename = item.get_baseitem().name;
switch (item.bi_key.tval()) {
case ItemKindType::NONE:
delta += 15 * base;
}
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
if (!o_ptr->is_cursed() && !o_ptr->is_broken() && baseitem.level > floor_ptr->dun_level) {
delta += (baseitem.level - floor_ptr->dun_level) * base;
}
*/
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];
+ const auto &baseitem = o_ptr->get_baseitem();
if (!o_ptr->is_valid()) {
continue;
}
o_ptr->bi_id = rd_s16b();
o_ptr->iy = rd_byte();
o_ptr->ix = rd_byte();
- auto &baseitem = baseitems_info[o_ptr->bi_id];
+ auto &baseitem = o_ptr->get_baseitem();
o_ptr->bi_key = baseitem.bi_key;
o_ptr->pval = any_bits(flags, SaveDataItemFlagType::PVAL) ? rd_s16b() : 0;
o_ptr->discount = any_bits(flags, SaveDataItemFlagType::DISCOUNT) ? rd_byte() : 0;
}
}
- auto dd_bonus = o_ptr->dd - baseitems_info[o_ptr->bi_id].dd;
- auto ds_bonus = o_ptr->ds - baseitems_info[o_ptr->bi_id].ds;
- dd_bonus += mo_ptr->dd - baseitems_info[mo_ptr->bi_id].dd;
- ds_bonus += mo_ptr->ds - baseitems_info[mo_ptr->bi_id].ds;
+ const auto &baseitem_o = o_ptr->get_baseitem();
+ const auto &baseitem_mo = mo_ptr->get_baseitem();
+ auto dd_bonus = o_ptr->dd - baseitem_o.dd;
+ auto ds_bonus = o_ptr->ds - baseitem_o.ds;
+ dd_bonus += mo_ptr->dd - baseitem_mo.dd;
+ ds_bonus += mo_ptr->ds - baseitem_mo.ds;
const auto &baseitem = baseitems_info[bi_id];
o_ptr->bi_id = bi_id;
return;
}
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
const auto lev = baseitem.level;
const auto tval = o_ptr->bi_key.tval();
int price;
total_cost += 50;
}
- const auto lev = baseitems_info[item.bi_id].level;
- const auto &baseitem = baseitems_info[item.bi_id];
+ const auto &baseitem = item.get_baseitem();
+ const auto lev = baseitem.level;
switch (item.bi_key.tval()) {
case ItemKindType::ROD:
price = (lev * 50 * item.timeout) / baseitem.pval;
break;
case ItemKindType::STAFF:
- price = (baseitems_info[item.bi_id].cost / 10) * item.number;
+ price = (baseitem.cost / 10) * item.number;
price = std::max(10, price);
price = (baseitem.pval - item.pval) * price;
break;
case ItemKindType::WAND:
- price = (baseitems_info[item.bi_id].cost / 10);
+ price = (baseitem.cost / 10);
price = std::max(10, price);
price = (item.number * baseitem.pval - item.pval) * price;
break;
for (short i = 0; i < INVEN_PACK; i++) {
auto *o_ptr = &player_ptr->inventory_list[i];
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
if (!o_ptr->can_recharge()) {
continue;
}
return false;
}
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
const auto lev = baseitem.level;
const auto tval = o_ptr->bi_key.tval();
auto recharge_strength = 0;
}
const auto is_magic_mastery = has_magic_mastery(player_ptr) != 0;
- const auto &baseitem = baseitems_info[monap_ptr->o_ptr->bi_id];
+ const auto &baseitem = monap_ptr->o_ptr->get_baseitem();
const auto pval = baseitem.pval;
const auto level = monap_ptr->rlev;
auto drain = is_magic_mastery ? std::min<short>(pval, pval * level / 400 + pval * randint1(level) / 400) : pval;
ae_type *initialize_ae_type(PlayerType *player_ptr, ae_type *ae_ptr, const INVENTORY_IDX item)
{
ae_ptr->o_ptr = ref_item(player_ptr, item);
- ae_ptr->lev = baseitems_info[ae_ptr->o_ptr->bi_id].level;
+ ae_ptr->lev = ae_ptr->o_ptr->get_baseitem().level;
return ae_ptr;
}
return;
}
- const auto &baseitem = baseitems_info[this->o_ptr->bi_id];
- if (!baseitems_info[this->o_ptr->bi_id].cost) {
+ const auto &baseitem = this->o_ptr->get_baseitem();
+ if (!baseitem.cost) {
set_bits(this->o_ptr->ident, IDENT_BROKEN);
}
*/
void make_weight_ligten(ItemEntity *o_ptr)
{
- o_ptr->weight = (2 * baseitems_info[o_ptr->bi_id].weight / 3);
+ o_ptr->weight = (2 * o_ptr->get_baseitem().weight / 3);
}
/*!
*/
void make_weight_heavy(ItemEntity *o_ptr)
{
- o_ptr->weight = (4 * baseitems_info[o_ptr->bi_id].weight / 3);
+ o_ptr->weight = (4 * o_ptr->get_baseitem().weight / 3);
}
/*!
void AmuletEnchanter::give_ego_index()
{
while (!this->o_ptr->is_ego()) {
- const auto &baseitem = baseitems_info[this->o_ptr->bi_id];
+ const auto &baseitem = this->o_ptr->get_baseitem();
switch (randint1(21)) {
case 1:
case 2:
}
while (!this->o_ptr->is_ego()) {
- const auto &baseitem = baseitems_info[this->o_ptr->bi_id];
+ const auto &baseitem = this->o_ptr->get_baseitem();
switch (randint1(5)) {
case 1:
if (baseitem.flags.has(TR_DRAIN_EXP)) {
this->enchant_wand_staff();
break;
case ItemKindType::ROD:
- this->o_ptr->pval = baseitems_info[this->o_ptr->bi_id].pval;
+ this->o_ptr->pval = this->o_ptr->get_baseitem().pval;
break;
case ItemKindType::CAPTURE:
this->o_ptr->pval = 0;
*/
void OtherItemsEnchanter::enchant_wand_staff()
{
- const auto &baseitem = baseitems_info[this->o_ptr->bi_id];
+ const auto &baseitem = this->o_ptr->get_baseitem();
this->o_ptr->pval = baseitem.pval / 2 + randint1((baseitem.pval + 1) / 2);
}
*/
void OtherItemsEnchanter::generate_chest()
{
- auto obj_level = baseitems_info[this->o_ptr->bi_id].level;
+ auto obj_level = this->o_ptr->get_baseitem().level;
if (obj_level <= 0) {
return;
}
{
while (!this->o_ptr->is_ego()) {
int tmp = m_bonus(10, this->level);
- const auto &baseitem = baseitems_info[this->o_ptr->bi_id];
+ const auto &baseitem = this->o_ptr->get_baseitem();
switch (randint1(28)) {
case 1:
case 2:
}
while (!this->o_ptr->is_ego()) {
- const auto &baseitem = baseitems_info[this->o_ptr->bi_id];
+ const auto &baseitem = this->o_ptr->get_baseitem();
switch (randint1(5)) {
case 1:
if (baseitem.flags.has(TR_DRAIN_EXP)) {
object_tried(&o_ref);
if (ident && !o_ref.is_aware()) {
object_aware(this->player_ptr, &o_ref);
- gain_exp(this->player_ptr, (baseitems_info[o_ref.bi_id].level + (this->player_ptr->lev >> 1)) / this->player_ptr->lev);
+ gain_exp(this->player_ptr, (o_ref.get_baseitem().level + (this->player_ptr->lev >> 1)) / this->player_ptr->lev);
}
this->player_ptr->window_flags |= (PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER);
}
object_aware(this->player_ptr, o_ptr);
- auto lev = baseitems_info[o_ptr->bi_id].level;
+ auto lev = o_ptr->get_baseitem().level;
gain_exp(this->player_ptr, (lev + (this->player_ptr->lev >> 1)) / this->player_ptr->lev);
}
return;
}
- auto lev = baseitems_info[o_ptr->bi_id].level;
+ auto lev = o_ptr->get_baseitem().level;
if (lev > 50) {
lev = 50 + (lev - 50) / 2;
}
return;
}
- auto lev = baseitems_info[o_ptr->bi_id].level;
+ auto lev = o_ptr->get_baseitem().level;
auto chance = this->player_ptr->skill_dev;
if (this->player_ptr->effects()->confusion()->is_confused()) {
chance = chance / 2;
return;
}
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
if ((o_ptr->number == 1) && (o_ptr->timeout)) {
if (flush_failure) {
flush();
return;
}
- auto lev = baseitems_info[o_ptr->bi_id].level;
+ auto lev = o_ptr->get_baseitem().level;
if (lev > 50) {
lev = 50 + (lev - 50) / 2;
}
*/
TrFlags object_flags(const ItemEntity *o_ptr)
{
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
auto flags = baseitem.flags;
if (o_ptr->is_fixed_artifact()) {
return flags;
}
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
flags = baseitem.flags;
if (!o_ptr->is_known()) {
return flags;
break;
case ItemKindType::ROD:
- max_num = std::min(max_num, MAX_SHORT / baseitems_info[o_ptr->bi_id].pval);
+ max_num = std::min(max_num, MAX_SHORT / o_ptr->get_baseitem().pval);
break;
case ItemKindType::GLOVES:
if (o_ptr->is_glove_same_temper(j_ptr)) {
{
PRICE total = 0;
auto flags = object_flags(o_ptr);
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
flags.reset(baseitem.flags);
if (o_ptr->is_fixed_artifact()) {
*/
PRICE object_value_real(const ItemEntity *o_ptr)
{
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
- if (!baseitems_info[o_ptr->bi_id].cost) {
+ if (!baseitem.cost) {
return 0;
}
- PRICE value = baseitems_info[o_ptr->bi_id].cost;
+ PRICE value = baseitem.cost;
auto flags = object_flags(o_ptr);
if (o_ptr->is_fixed_artifact()) {
const auto &artifact = ArtifactsInfo::get_instance().get_artifact(o_ptr->fixed_artifact_idx);
auto flags = object_flags(o_ptr);
const auto &artifacts = ArtifactsInfo::get_instance();
- const auto item_text = o_ptr->is_fixed_artifact() ? artifacts.get_artifact(o_ptr->fixed_artifact_idx).text.data() : baseitems_info[o_ptr->bi_id].text.data();
+ const auto item_text = o_ptr->is_fixed_artifact() ? artifacts.get_artifact(o_ptr->fixed_artifact_idx).text.data() : o_ptr->get_baseitem().text.data();
const auto item_text_lines = shape_buffer(item_text, 77 - 15);
int i = 0;
void object_aware(PlayerType *player_ptr, const ItemEntity *o_ptr)
{
const bool is_already_awared = o_ptr->is_aware();
-
- baseitems_info[o_ptr->bi_id].aware = true;
+ auto &baseitem = o_ptr->get_baseitem();
+ baseitem.aware = true;
// 以下、playrecordに記録しない場合はreturnする
if (!record_ident) {
}
// アーティファクト専用ベースアイテムは記録しない
- if (baseitems_info[o_ptr->bi_id].gen_flags.has(ItemGenerationTraitType::INSTA_ART)) {
+ if (baseitem.gen_flags.has(ItemGenerationTraitType::INSTA_ART)) {
return;
}
*/
void object_tried(const ItemEntity *o_ptr)
{
- baseitems_info[o_ptr->bi_id].tried = true;
+ o_ptr->get_baseitem().tried = true;
}
ItemEntity forge;
auto *q_ptr = &forge;
uint32_t value, exp;
- DEPTH level = std::max(baseitems_info[o_ptr->bi_id].level - 8, 1);
+ DEPTH level = std::max(o_ptr->get_baseitem().level - 8, 1);
if ((i == INVEN_MAIN_RING) || (i == INVEN_SUB_RING) || (i == INVEN_NECK) || (i == INVEN_LITE)) {
continue;
return false;
}
- const auto &baseitem = baseitems_info[o_ptr->bi_id];
+ const auto &baseitem = o_ptr->get_baseitem();
const auto lev = baseitem.level;
TIME_EFFECT recharge_amount;
*/
static void store_object_absorb(ItemEntity *o_ptr, ItemEntity *j_ptr)
{
- int max_num = (o_ptr->bi_key.tval() == ItemKindType::ROD) ? std::min(99, MAX_SHORT / baseitems_info[o_ptr->bi_id].pval) : 99;
+ int max_num = (o_ptr->bi_key.tval() == ItemKindType::ROD) ? std::min(99, MAX_SHORT / o_ptr->get_baseitem().pval) : 99;
int total = o_ptr->number + j_ptr->number;
int diff = (total > max_num) ? total - max_num : 0;
o_ptr->number = (total > max_num) ? max_num : total;
this->activation_id = baseitem.act_idx;
}
- if (baseitems_info[this->bi_id].cost <= 0) {
+ if (this->get_baseitem().cost <= 0) {
this->ident |= (IDENT_BROKEN);
}
*/
bool ItemEntity::is_known() const
{
- const auto &baseitem = baseitems_info[this->bi_id];
+ const auto &baseitem = this->get_baseitem();
return any_bits(this->ident, IDENT_KNOWN) || (baseitem.easy_know && baseitem.aware);
}
*/
bool ItemEntity::is_aware() const
{
- return baseitems_info[this->bi_id].aware;
+ return this->get_baseitem().aware;
}
/*
*/
bool ItemEntity::is_tried() const
{
- return baseitems_info[this->bi_id].tried;
+ return this->get_baseitem().tried;
}
/*!
*/
TERM_COLOR ItemEntity::get_color() const
{
- const auto &baseitem = baseitems_info[this->bi_id];
+ const auto &baseitem = this->get_baseitem();
const auto flavor = baseitem.flavor;
if (flavor != 0) {
return baseitems_info[flavor].x_attr;
*/
char ItemEntity::get_symbol() const
{
- const auto &baseitem = baseitems_info[this->bi_id];
+ const auto &baseitem = this->get_baseitem();
const auto flavor = baseitem.flavor;
return flavor ? baseitems_info[flavor].x_char : baseitem.x_char;
}
int ItemEntity::get_baseitem_price() const
{
if (this->is_aware()) {
- return baseitems_info[this->bi_id].cost;
+ return this->get_baseitem().cost;
}
switch (this->bi_key.tval()) {
return this->inscription != std::nullopt;
}
+BaseitemInfo &ItemEntity::get_baseitem() const
+{
+ return baseitems_info[this->bi_id];
+}
+
EgoItemDefinition &ItemEntity::get_ego() const
{
return egos_info.at(this->ego_idx);
enum class RandomArtActType : short;
class EgoItemDefinition;
+class BaseitemInfo;
class ItemEntity {
public:
ItemEntity();
bool is_cross_bow() const;
bool is_inscribed() const;
+ BaseitemInfo &get_baseitem() const;
EgoItemDefinition &get_ego() const;
private:
q_ptr->to_a = 0;
q_ptr->to_h = 0;
q_ptr->to_d = 0;
- *level_desc = baseitems_info[q_ptr->bi_id].level;
+ *level_desc = q_ptr->get_baseitem().level;
*value = q_ptr->get_price();
if (!name || !damage_desc || !chance_desc || !weight_desc) {
return;
}
chance_desc->clear();
- const auto &baseitem = baseitems_info[q_ptr->bi_id];
+ const auto &baseitem = q_ptr->get_baseitem();
for (auto i = 0U; i < baseitem.alloc_tables.size(); i++) {
const auto &[level, chance] = baseitem.alloc_tables[i];
if (chance > 0) {
continue;
}
- auto &baseitem = baseitems_info[o_ptr->bi_id];
+ auto &baseitem = o_ptr->get_baseitem();
baseitem.aware = true; //!< @note 記録には残さないためTRUEを立てるのみ
set_bits(o_ptr->ident, IDENT_KNOWN | IDENT_FULL_KNOWN);
o_ptr->marked.set(OmType::TOUCHED);
auto line = 4;
const auto &bi_key = o_ptr->bi_key;
- const auto item_level = baseitems_info[o_ptr->bi_id].level;
+ const auto item_level = o_ptr->get_baseitem().level;
prt(format("kind = %-5d level = %-4d tval = %-5d sval = %-5d", o_ptr->bi_id, item_level, enum2i(bi_key.tval()), bi_key.sval().value()), line, j);
prt(format("number = %-3d wgt = %-6d ac = %-5d damage = %dd%d", o_ptr->number, o_ptr->weight, o_ptr->ac, o_ptr->dd, o_ptr->ds), ++line, j);
prt(format("pval = %-5d toac = %-5d tohit = %-4d todam = %-4d", o_ptr->pval, o_ptr->to_a, o_ptr->to_h, o_ptr->to_d), ++line, j);