#include "monster/monster-describer.h"
#include "io/files-util.h"
+#include "locale/english.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
#include "monster/monster-description-types.h"
#include "monster/monster-flag-types.h"
#include "monster/monster-info.h"
#include "system/floor-type-definition.h"
+#include "system/monster-race-definition.h"
+#include "system/monster-type-definition.h"
+#include "system/player-type-definition.h"
#include "util/quarks.h"
#include "util/string-processor.h"
#include "view/display-messages.h"
-#ifdef JP
-#else
-#include "locale/english.h"
-#endif
/*!
* @brief モンスターの呼称を作成する / Build a string describing a monster in some way.
* @param desc 記述出力先の文字列参照ポインタ
* @param m_ptr モンスターの参照ポインタ
* @param mode 呼称オプション
- * @return なし
*/
-void monster_desc(player_type *player_ptr, char *desc, monster_type *m_ptr, BIT_FLAGS mode)
+void monster_desc(PlayerType *player_ptr, char *desc, monster_type *m_ptr, BIT_FLAGS mode)
{
monster_race *r_ptr;
r_ptr = &r_info[m_ptr->ap_r_idx];
concptr name = (mode & MD_TRUE_NAME) ? real_r_ptr(m_ptr)->name.c_str() : r_ptr->name.c_str();
GAME_TEXT silly_name[1024];
- bool named = FALSE;
- if (player_ptr->image && !(mode & MD_IGNORE_HALLU)) {
+ bool named = false;
+ if (player_ptr->hallucinated && !(mode & MD_IGNORE_HALLU)) {
if (one_in_(2)) {
if (!get_rnd_line(_("silly_j.txt", "silly.txt"), m_ptr->r_idx, silly_name))
- named = TRUE;
+ named = true;
}
if (!named) {
monster_race *hallu_race;
do {
- hallu_race = &r_info[randint1(max_r_idx - 1)];
- } while (hallu_race->name.empty() || (hallu_race->flags1 & RF1_UNIQUE));
+ hallu_race = &r_info[randint1(r_info.size() - 1)];
+ } while (hallu_race->name.empty() || hallu_race->kind_flags.has(MonsterKindType::UNIQUE));
strcpy(silly_name, (hallu_race->name.c_str()));
}
bool pron = (m_ptr && ((seen && (mode & MD_PRON_VISIBLE)) || (!seen && (mode & MD_PRON_HIDDEN))));
/* First, try using pronouns, or describing hidden monsters */
- floor_type *floor_ptr = player_ptr->current_floor_ptr;
+ auto *floor_ptr = player_ptr->current_floor_ptr;
if (!seen || pron) {
int kind = 0x00;
if (r_ptr->flags1 & (RF1_FEMALE))
(void)sprintf(desc, "%s?", name);
#endif
} else {
- if ((r_ptr->flags1 & RF1_UNIQUE) && !(player_ptr->image && !(mode & MD_IGNORE_HALLU))) {
- if (m_ptr->mflag2.has(MFLAG2::CHAMELEON) && !(mode & MD_TRUE_NAME)) {
+ if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE) && !(player_ptr->hallucinated && !(mode & MD_IGNORE_HALLU))) {
+ if (m_ptr->mflag2.has(MonsterConstantFlagType::CHAMELEON) && !(mode & MD_TRUE_NAME)) {
#ifdef JP
char *t;
char buf[128];
strcat(desc, _("(乗馬中)", "(riding)"));
}
- if ((mode & MD_IGNORE_HALLU) && m_ptr->mflag2.has(MFLAG2::CHAMELEON)) {
- if (r_ptr->flags1 & RF1_UNIQUE) {
+ if ((mode & MD_IGNORE_HALLU) && m_ptr->mflag2.has(MonsterConstantFlagType::CHAMELEON)) {
+ if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE)) {
strcat(desc, _("(カメレオンの王)", "(Chameleon Lord)"));
} else {
strcat(desc, _("(カメレオン)", "(Chameleon)"));
/*!
* @brief ダメージを受けたモンスターの様子を記述する / Dump a message describing a monster's reaction to damage
- * @param player_ptr ã\83\97ã\83¬ã\83¼ヤーへの参照ポインタ
+ * @param player_ptr ã\83\97ã\83¬ã\82¤ヤーへの参照ポインタ
* @param m_idx モンスター情報ID
* @param dam 与えたダメージ
- * @return なし
* @details
* Technically should attempt to treat "Beholder"'s as jelly's
*/
-void message_pain(player_type *player_ptr, MONSTER_IDX m_idx, HIT_POINT dam)
+void message_pain(PlayerType *player_ptr, MONSTER_IDX m_idx, int dam)
{
- monster_type *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
- monster_race *r_ptr = &r_info[m_ptr->r_idx];
+ auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
+ auto *r_ptr = &r_info[m_ptr->r_idx];
GAME_TEXT m_name[MAX_NLEN];
-
monster_desc(player_ptr, m_name, m_ptr, 0);
if (dam == 0) {
return;
}
- HIT_POINT newhp = m_ptr->hp;
- HIT_POINT oldhp = newhp + dam;
- HIT_POINT tmp = (newhp * 100L) / oldhp;
+ int newhp = m_ptr->hp;
+ int oldhp = newhp + dam;
+ int tmp = (newhp * 100L) / oldhp;
PERCENTAGE percentage = tmp;
if (angband_strchr(",ejmvwQ", r_ptr->d_char)) {