From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Tue, 27 Dec 2022 15:00:16 +0000 (+0900) Subject: [Refactor] #3017 Separated get_fake_monster_name() from describe_non_pet() X-Git-Tag: 3.0.0Alpha74^2~9^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=b909266ea8f5593b445248cdf7e043a57b8a6693;p=hengbandforosx%2Fhengbandosx.git [Refactor] #3017 Separated get_fake_monster_name() from describe_non_pet() --- diff --git a/src/monster/monster-describer.cpp b/src/monster/monster-describer.cpp index 86f994628..7f4b32e08 100644 --- a/src/monster/monster-describer.cpp +++ b/src/monster/monster-describer.cpp @@ -169,20 +169,30 @@ static std::string replace_monster_name_undefined(std::string_view name) } #endif -static std::string describe_non_pet(const PlayerType &player, const MonsterEntity &monster, const std::string &name, const BIT_FLAGS mode) +static std::optional get_fake_monster_name(const PlayerType &player, const MonsterEntity &monster, const std::string &name, const BIT_FLAGS mode) { - const auto is_hallucinated = player.effects()->hallucination()->is_hallucinated(); const auto &monrace = monraces_info[monster.ap_r_idx]; - if (monrace.kind_flags.has(MonsterKindType::UNIQUE) && !(is_hallucinated && none_bits(mode, MD_IGNORE_HALLU))) { - if (monster.mflag2.has(MonsterConstantFlagType::CHAMELEON) && !(mode & MD_TRUE_NAME)) { - return _(replace_monster_name_undefined(name), format("%s?", name.data())); - } + const auto is_hallucinated = player.effects()->hallucination()->is_hallucinated(); + if (monrace.kind_flags.has_not(MonsterKindType::UNIQUE) || (is_hallucinated && none_bits(mode, MD_IGNORE_HALLU))) { + return std::nullopt; + } - if (player.phase_out && !(player.riding && (&player.current_floor_ptr->m_list[player.riding] == &monster))) { - return format(_("%sもどき", "fake %s"), name.data()); - } + if (monster.mflag2.has(MonsterConstantFlagType::CHAMELEON) && none_bits(mode, MD_TRUE_NAME)) { + return _(replace_monster_name_undefined(name), format("%s?", name.data())); + } - return name; + if (player.phase_out && !(player.riding && (&player.current_floor_ptr->m_list[player.riding] == &monster))) { + return format(_("%sもどき", "fake %s"), name.data()); + } + + return name; +} + +static std::string describe_non_pet(const PlayerType &player, const MonsterEntity &monster, const std::string &name, const BIT_FLAGS mode) +{ + const auto fake_name = get_fake_monster_name(player, monster, name, mode); + if (fake_name.has_value()) { + return fake_name.value(); } if (any_bits(mode, MD_INDEF_VISIBLE)) {