From 6a6d8597d640cce96cb4e4c5c832cde5ce638aa3 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Mon, 6 May 2024 13:52:52 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#3986=20select=5Fnest=5Fmonrace=5Fi?= =?utf8?q?d()=20=E3=81=ABDoxygen=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?utf8?q?=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=80=81=E4=B8=AD=E8=BA=AB?= =?utf8?q?=E3=82=92=E6=95=B4=E5=BD=A2=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/room/rooms-pit-nest.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/room/rooms-pit-nest.cpp b/src/room/rooms-pit-nest.cpp index 30d8586c9..d192ed572 100644 --- a/src/room/rooms-pit-nest.cpp +++ b/src/room/rooms-pit-nest.cpp @@ -195,24 +195,27 @@ const std::vector nest_types = { { _("アンデッド", "undead"), vault_aux_undead, nullptr, 75, 5 }, }; +/*! + * @brief Nestに格納するモンスターを選択する + * @param player_ptr プレイヤーへの参照ポインタ + * @param align アライメントが中立に設定されたモンスター実体 (その他の中身は空) + * @return モンスター種族ID (見つからなかったらnullopt) + * @details Nestにはそのフロアの通常レベルより11高いモンスターを中心に選ぶ + */ static std::optional select_nest_monrace_id(PlayerType *player_ptr, MonsterEntity &align) { for (auto attempts = 100; attempts > 0; attempts--) { - /* Get a (hard) monster type */ - auto r_idx = get_mon_num(player_ptr, 0, player_ptr->current_floor_ptr->dun_level + 11, PM_NONE); - auto *r_ptr = &monraces_info[r_idx]; - - /* Decline incorrect alignment */ - if (monster_has_hostile_align(player_ptr, &align, 0, 0, r_ptr)) { + const auto monrace_id = get_mon_num(player_ptr, 0, player_ptr->current_floor_ptr->dun_level + 11, PM_NONE); + const auto &monrace = monraces_info[monrace_id]; + if (monster_has_hostile_align(player_ptr, &align, 0, 0, &monrace)) { continue; } - /* Accept this monster */ - if (MonsterRace(r_idx).is_valid()) { - return r_idx; - } else { - return std::nullopt; + if (MonsterRace(monrace_id).is_valid()) { + return monrace_id; } + + return std::nullopt; } return std::nullopt; -- 2.11.0