From: Hourier Date: Wed, 4 Aug 2021 14:46:00 +0000 (+0900) Subject: [Refactor] #929 Separated death_amberites() from mon_take_hit() X-Git-Tag: vmacos3.0.0-alpha52~139^2~2^2~22 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9f5977dceddc0512d4ef358e1c0a0623aeab1e2f;p=hengbandforosx%2Fhengbandosx.git [Refactor] #929 Separated death_amberites() from mon_take_hit() --- diff --git a/src/monster/monster-damage.cpp b/src/monster/monster-damage.cpp index 37689f896..4ad91e404 100644 --- a/src/monster/monster-damage.cpp +++ b/src/monster/monster-damage.cpp @@ -105,21 +105,7 @@ bool MonsterDamageProcessor::mon_take_hit(concptr note) this->increase_kill_numbers(m_ptr); GAME_TEXT m_name[MAX_NLEN]; monster_desc(this->target_ptr, m_name, m_ptr, MD_TRUE_NAME); - - /* Don't kill Amberites */ - if ((r_ptr->flags3 & RF3_AMBERITE) && one_in_(2)) { - int curses = 1 + randint1(3); - bool stop_ty = false; - int count = 0; - - msg_format(_("%^sは恐ろしい血の呪いをあなたにかけた!", "%^s puts a terrible blood curse on you!"), m_name); - curse_equipment(this->target_ptr, 100, 50); - - do { - stop_ty = activate_ty_curse(this->target_ptr, stop_ty, &count); - } while (--curses); - } - + this->death_amberites(r_ptr, m_name); if (r_ptr->flags2 & RF2_CAN_SPEAK) { char line_got[1024]; if (!get_rnd_line(_("mondeath_j.txt", "mondeath.txt"), m_ptr->r_idx, line_got)) { @@ -487,6 +473,22 @@ void MonsterDamageProcessor::increase_kill_numbers(monster_type *m_ptr) monster_race_track(this->target_ptr, m_ptr->ap_r_idx); } +void MonsterDamageProcessor::death_amberites(monster_race *r_ptr, GAME_TEXT *m_name) +{ + if (none_bits(r_ptr->flags3, RF3_AMBERITE) || one_in_(2)) { + return; + } + + auto curses = 1 + randint1(3); + auto stop_ty = false; + auto count = 0; + msg_format(_("%^sは恐ろしい血の呪いをあなたにかけた!", "%^s puts a terrible blood curse on you!"), m_name); + curse_equipment(this->target_ptr, 100, 50); + do { + stop_ty = activate_ty_curse(this->target_ptr, stop_ty, &count); + } while (--curses); +} + /*! * @brief モンスターに与えたダメージを元に経験値を加算する / * Calculate experience point to be get diff --git a/src/monster/monster-damage.h b/src/monster/monster-damage.h index 6f0122ff0..ed7cdc183 100644 --- a/src/monster/monster-damage.h +++ b/src/monster/monster-damage.h @@ -5,6 +5,7 @@ #include #include +struct monster_race; struct monster_type; struct player_type; class MonsterDamageProcessor { @@ -26,6 +27,7 @@ private: bool check_combined_unique(const monster_race_type r_idx, std::vector *combined_uniques); void death_combined_uniques(const monster_race_type r_idx, std::vector> *combined_uniques); void increase_kill_numbers(monster_type *m_ptr); + void death_amberites(monster_race *r_ptr, GAME_TEXT *m_name); void set_redraw(); void summon_special_unique(monster_type *m_ptr); };