constexpr auto fmt = _("どの呪文の詠唱を中断しますか?(呪文 %c-%c, 'l'全て, ESC)", "Which spell do you stop casting? (Spell %c-%c, 'l' to all, ESC)");
const auto prompt = format(fmt, I2A(0), I2A(casting_num - 1));
screen_save();
- const auto [is_all, choice] = select_spell_stopping(prompt);
+ const auto &[is_all, choice] = select_spell_stopping(prompt);
if (is_all) {
return true;
}
screen_load();
- const auto is_selected = choice.has_value();
- if (is_selected) {
- auto n = this->casting_spells[A2I(choice.value())];
+ if (choice) {
+ auto n = this->casting_spells[A2I(*choice)];
exe_spell(this->player_ptr, REALM_HEX, n, SpellProcessType::STOP);
this->reset_casting_flag(i2enum<spell_hex_type>(n));
}
MainWindowRedrawingFlag::MP,
};
rfu.set_flags(flags_mwrf);
- return is_selected;
+ return choice.has_value();
}
/*!
while (true) {
this->display_casting_spells_list();
const auto choice_opt = input_command(prompt, true);
- if (!choice_opt.has_value()) {
+ if (!choice_opt) {
return { false, std::nullopt };
}
- auto choice = choice_opt.value();
+ auto choice = *choice_opt;
if (isupper(choice)) {
choice = static_cast<char>(tolower(choice));
}
constexpr auto y = 1;
constexpr auto x = 20;
auto n = 0;
- term_erase(x, y, 255);
+ term_erase(x, y);
prt(_(" 名前", " Name"), y, x + 5);
for (auto spell : this->casting_spells) {
- term_erase(x, y + n + 1, 255);
+ term_erase(x, y + n + 1);
const auto spell_name = exe_spell(this->player_ptr, REALM_HEX, spell, SpellProcessType::NAME);
put_str(format("%c) %s", I2A(n), spell_name->data()), y + n + 1, x + 2);
n++;
bool SpellHex::check_hex_barrier(MONSTER_IDX m_idx, spell_hex_type type) const
{
const auto *m_ptr = &this->player_ptr->current_floor_ptr->m_list[m_idx];
- const auto *r_ptr = &monraces_info[m_ptr->r_idx];
+ const auto *r_ptr = &m_ptr->get_monrace();
return this->is_spelling_specific(type) && ((this->player_ptr->lev * 3 / 2) >= randint1(r_ptr->level));
}