OSDN Git Service

[Refactor] format 関数の戻り値を std::string にする
[hengbandforosx/hengbandosx.git] / src / view / display-monster-status.cpp
1 #include "view/display-monster-status.h"
2 #include "monster-race/monster-race-hook.h"
3 #include "monster-race/monster-race.h"
4 #include "monster/monster-flag-types.h"
5 #include "monster/monster-info.h"
6 #include "monster/smart-learn-types.h"
7 #include "system/monster-entity.h"
8 #include "system/monster-race-info.h"
9
10 /*
11  * Monster health description
12  */
13 std::string look_mon_desc(MonsterEntity *m_ptr, BIT_FLAGS mode)
14 {
15     bool living = monster_living(m_ptr->ap_r_idx);
16     int perc = m_ptr->maxhp > 0 ? 100L * m_ptr->hp / m_ptr->maxhp : 0;
17
18     concptr desc;
19     if (m_ptr->hp >= m_ptr->maxhp) {
20         desc = living ? _("無傷", "unhurt") : _("無ダメージ", "undamaged");
21     } else if (perc >= 60) {
22         desc = living ? _("軽傷", "somewhat wounded") : _("小ダメージ", "somewhat damaged");
23     } else if (perc >= 25) {
24         desc = living ? _("負傷", "wounded") : _("中ダメージ", "damaged");
25     } else if (perc >= 10) {
26         desc = living ? _("重傷", "badly wounded") : _("大ダメージ", "badly damaged");
27     } else {
28         desc = living ? _("半死半生", "almost dead") : _("倒れかけ", "almost destroyed");
29     }
30
31     concptr attitude;
32     if (!(mode & 0x01)) {
33         attitude = "";
34     } else if (m_ptr->is_pet()) {
35         attitude = _(", ペット", ", pet");
36     } else if (m_ptr->is_friendly()) {
37         attitude = _(", 友好的", ", friendly");
38     } else {
39         attitude = _("", "");
40     }
41
42     concptr clone = m_ptr->mflag2.has(MonsterConstantFlagType::CLONED) ? ", clone" : "";
43     MonsterRaceInfo *ap_r_ptr = &monraces_info[m_ptr->ap_r_idx];
44     if (ap_r_ptr->r_tkills && m_ptr->mflag2.has_not(MonsterConstantFlagType::KAGE)) {
45         return format(_("レベル%d, %s%s%s", "Level %d, %s%s%s"), ap_r_ptr->level, desc, attitude, clone);
46     }
47
48     return format(_("レベル???, %s%s%s", "Level ???, %s%s%s"), desc, attitude, clone);
49 }