From 974c676edf296a630373f483ecdcea5f13c7e82c Mon Sep 17 00:00:00 2001 From: Habu Date: Mon, 1 Jul 2024 00:28:28 +0900 Subject: [PATCH] =?utf8?q?[Fix]=20=E3=82=B9=E3=83=9D=E3=82=A4=E3=83=A9?= =?utf8?q?=E3=83=BC=E3=81=AE=E9=AD=94=E6=B3=95=E9=A0=98=E5=9F=9F=E5=87=BA?= =?utf8?q?=E5=8A=9B=E3=81=AE=E5=86=85=E5=AE=B9=E3=81=8C=E3=81=8A=E3=81=8B?= =?utf8?q?=E3=81=97=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit off-by-oneエラーによりスポイラーの魔法領域出力の内容がおかしくなっている ので、正しい内容が出力されるように修正する。 --- src/wizard/wizard-spoiler.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/wizard/wizard-spoiler.cpp b/src/wizard/wizard-spoiler.cpp index aefa2662b..7a913484c 100644 --- a/src/wizard/wizard-spoiler.cpp +++ b/src/wizard/wizard-spoiler.cpp @@ -182,11 +182,10 @@ static SpoilerOutputResultType spoil_player_spell() PlayerType dummy_p; dummy_p.lev = 1; - for (auto c = 0; c < PLAYER_CLASS_TYPE_MAX; c++) { - auto class_ptr = &class_info.at(i2enum(c)); - spoil_out(format("[[Class: %s]]\n", class_ptr->title.data())); + for (const auto pclass : EnumRange(PlayerClassType::WARRIOR, PlayerClassType::MAX)) { + spoil_out(format("[[Class: %s]]\n", class_info.at(pclass).title.data())); - auto magic_ptr = &class_magics_info[c]; + const auto *magic_ptr = &class_magics_info[enum2i(pclass)]; std::string book_name = _("なし", "None"); if (magic_ptr->spell_book != ItemKindType::NONE) { ItemEntity item({ magic_ptr->spell_book, 0 }); @@ -198,24 +197,24 @@ static SpoilerOutputResultType spoil_player_spell() } constexpr auto mes = "BookType:%s Stat:%s %s%s%sType:%d Weight:%d\n"; - const auto &spell = wiz_spell_stat[magic_ptr->spell_stat]; + const auto &spell_stat_txt = wiz_spell_stat[magic_ptr->spell_stat]; auto trainable = magic_ptr->is_spell_trainable ? "Trainable " : ""; auto glove = magic_ptr->has_glove_mp_penalty ? "GlovePenalty " : ""; auto failcap = magic_ptr->has_magic_fail_rate_cap ? "5%FailCap " : ""; auto spell_type = enum2i(magic_ptr->spell_book); - spoil_out(format(mes, book_name.data(), spell.data(), glove, failcap, trainable, spell_type, magic_ptr->spell_weight)); + spoil_out(format(mes, book_name.data(), spell_stat_txt.data(), glove, failcap, trainable, spell_type, magic_ptr->spell_weight)); if (magic_ptr->spell_book == ItemKindType::NONE) { spoil_out(_("呪文なし\n\n", "No spells.\n\n")); continue; } - for (int16_t r = 1; r < MAX_MAGIC; r++) { - spoil_out(format("[Realm: %s]\n", PlayerRealm::get_name(r).data())); + for (const auto realm : MAGIC_REALM_RANGE) { + spoil_out(format("[Realm: %s]\n", PlayerRealm::get_name(realm).data())); spoil_out("Name Lv Cst Dif Exp\n"); for (SPELL_IDX i = 0; i < 32; i++) { - auto spell_ptr = &magic_ptr->info[r][i]; - const auto spell_name = exe_spell(&dummy_p, r, i, SpellProcessType::NAME); - spoil_out(format("%-24s %2d %3d %3d %3d\n", spell_name->data(), spell_ptr->slevel, spell_ptr->smana, spell_ptr->sfail, spell_ptr->sexp)); + const auto &spell = PlayerRealm::get_spell_info(realm, i, pclass); + const auto spell_name = exe_spell(&dummy_p, realm, i, SpellProcessType::NAME); + spoil_out(format("%-24s %2d %3d %3d %3d\n", spell_name->data(), spell.slevel, spell.smana, spell.sfail, spell.sexp)); } spoil_out("\n"); } -- 2.11.0