}
this->change_virtue_revenge();
- if (any_bits(r_ref.flags2, RF2_MULTIPLY) && (r_ref.r_akills > 1000) && one_in_(10)) {
+ if (r_ref.misc_flags.has(MonsterMiscType::MULTIPLY) && (r_ref.r_akills > 1000) && one_in_(10)) {
chg_virtue(this->player_ptr, Virtue::VALOUR, -1);
}
auto &r_ref = set_pet_params(player_ptr, current_monster, m_idx, cy, cx);
update_monster(player_ptr, m_idx, true);
lite_spot(player_ptr, cy, cx);
- if (any_bits(r_ref.flags2, RF2_MULTIPLY)) {
+ if (r_ref.misc_flags.has(MonsterMiscType::MULTIPLY)) {
player_ptr->current_floor_ptr->num_repro++;
}
} else {
if (r_ptr->population_flags.has(MonsterPopulationType::NAZGUL) || r_ptr->population_flags.has(MonsterPopulationType::ONLY_ONE)) {
continue;
}
- if (r_ptr->flags2 & RF2_MULTIPLY) {
+ if (r_ptr->misc_flags.has(MonsterMiscType::MULTIPLY)) {
continue;
}
if (!r_ptr->drop_flags.has_all_of({ MonsterDropType::DROP_CORPSE, MonsterDropType::DROP_SKELETON })) {
drop_numbers = 0;
}
- if ((md_ptr->r_ptr->flags2 & (RF2_MULTIPLY)) && (md_ptr->r_ptr->r_akills > 1024)) {
+ if (md_ptr->r_ptr->misc_flags.has(MonsterMiscType::MULTIPLY) && (md_ptr->r_ptr->r_akills > 1024)) {
drop_numbers = 0;
}
POSITION x = m_ptr->fx;
m_ptr->get_real_monrace().cur_num--;
- if (r_ptr->flags2 & (RF2_MULTIPLY)) {
+ if (r_ptr->misc_flags.has(MonsterMiscType::MULTIPLY)) {
floor_ptr->num_repro--;
}
{
const auto &monrace = monraces_info[r_idx];
bool unselectable = monrace.kind_flags.has(MonsterKindType::UNIQUE);
- unselectable |= any_bits(monrace.flags2, RF2_MULTIPLY);
+ unselectable |= monrace.misc_flags.has(MonsterMiscType::MULTIPLY);
unselectable |= monrace.behavior_flags.has(MonsterBehaviorType::FRIENDLY);
unselectable |= monrace.feature_flags.has(MonsterFeatureType::AQUATIC);
unselectable |= monrace.misc_flags.has(MonsterMiscType::CHAMELEON);
m_ptr->get_real_monrace().floor_id = player_ptr->floor_id;
}
- if (any_bits(r_ptr->flags2, RF2_MULTIPLY)) {
+ if (r_ptr->misc_flags.has(MonsterMiscType::MULTIPLY)) {
floor.num_repro++;
}
return false;
}
- if (any_bits(r_ptr->flags2, RF2_MULTIPLY)) {
+ if (r_ptr->misc_flags.has(MonsterMiscType::MULTIPLY)) {
return false;
}
int dam = 0;
const auto &monrace = monraces_info[r_idx];
bool unselectable = monrace.behavior_flags.has(MonsterBehaviorType::NEVER_MOVE);
- unselectable |= any_bits(monrace.flags2, RF2_MULTIPLY);
+ unselectable |= monrace.misc_flags.has(MonsterMiscType::MULTIPLY);
unselectable |= monrace.kind_flags.has(MonsterKindType::QUANTUM) && monrace.kind_flags.has_not(MonsterKindType::UNIQUE);
unselectable |= monrace.feature_flags.has(MonsterFeatureType::AQUATIC);
unselectable |= monrace.misc_flags.has(MonsterMiscType::CHAMELEON);
s64b_div(&new_exp, &new_exp_frac, div_h, div_l);
/* Special penalty for mutiply-monster */
- if (any_bits(r_ptr->flags2, RF2_MULTIPLY) || (m_ptr->r_idx == MonsterRaceId::DAWN)) {
+ if (r_ptr->misc_flags.has(MonsterMiscType::MULTIPLY) || (m_ptr->r_idx == MonsterRaceId::DAWN)) {
int monnum_penarty = r_ptr->r_akills / 400;
if (monnum_penarty > 8) {
monnum_penarty = 8;
if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE)) {
return false;
}
- if (r_ptr->flags2 & RF2_MULTIPLY) {
+ if (r_ptr->misc_flags.has(MonsterMiscType::MULTIPLY)) {
return false;
}
if (r_ptr->behavior_flags.has(MonsterBehaviorType::FRIENDLY) || (r_ptr->misc_flags.has(MonsterMiscType::CHAMELEON))) {
{
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
auto *r_ptr = &m_ptr->get_monrace();
- if (((r_ptr->flags2 & RF2_MULTIPLY) == 0) || (player_ptr->current_floor_ptr->num_repro >= MAX_REPRODUCTION)) {
+ if (r_ptr->misc_flags.has_not(MonsterMiscType::MULTIPLY) || (player_ptr->current_floor_ptr->num_repro >= MAX_REPRODUCTION)) {
return false;
}
if ((k < 4) && (!k || !randint0(k * chance_reproduction))) {
if (multiply_monster(player_ptr, m_idx, false, (m_ptr->is_pet() ? PM_FORCE_PET : 0))) {
if (player_ptr->current_floor_ptr->m_list[hack_m_idx_ii].ml && is_original_ap_and_seen(player_ptr, m_ptr)) {
- r_ptr->r_flags2 |= RF2_MULTIPLY;
+ r_ptr->r_misc_flags.set(MonsterMiscType::MULTIPLY);
}
return true;
is_match &= monrace.kind_flags.has_not(MonsterKindType::EVIL);
is_match &= monrace.kind_flags.has_not(MonsterKindType::UNDEAD);
is_match &= monrace.kind_flags.has_not(MonsterKindType::DEMON);
- is_match &= none_bits(monrace.flags2, RF2_MULTIPLY);
+ is_match &= monrace.misc_flags.has_not(MonsterMiscType::MULTIPLY);
is_match &= monrace.ability_flags.none();
return is_match;
}
hooked_roff(format(_("%s^はまれにテレパシーで感知できる。", "%s^ is rarely detected by telepathy. "), Who::who(lore_ptr->msex)));
}
- if (lore_ptr->flags2 & RF2_MULTIPLY) {
+ if (lore_ptr->misc_flags.has(MonsterMiscType::MULTIPLY)) {
hook_c_roff(TERM_L_UMBER, format(_("%s^は爆発的に増殖する。", "%s^ breeds explosively. "), Who::who(lore_ptr->msex)));
}