auto *r_ptr = &r_info[m_ptr->r_idx];
if (m_ptr->hp < 0) {
this->death_special_flag_monster(m_ptr);
-
- /* Count all monsters killed */
if (r_ptr->r_akills < MAX_SHORT) {
r_ptr->r_akills++;
}
- /* Recall even invisible uniques or winners */
- if ((m_ptr->ml && !this->target_ptr->image) || (r_ptr->flags1 & RF1_UNIQUE)) {
- /* Count kills this life */
- if (m_ptr->mflag2.has(MFLAG2::KAGE) && (r_info[MON_KAGE].r_pkills < MAX_SHORT))
- r_info[MON_KAGE].r_pkills++;
- else if (r_ptr->r_pkills < MAX_SHORT)
- r_ptr->r_pkills++;
-
- /* Count kills in all lives */
- if (m_ptr->mflag2.has(MFLAG2::KAGE) && (r_info[MON_KAGE].r_tkills < MAX_SHORT))
- r_info[MON_KAGE].r_tkills++;
- else if (r_ptr->r_tkills < MAX_SHORT)
- r_ptr->r_tkills++;
-
- /* Hack -- Auto-recall */
- monster_race_track(this->target_ptr, m_ptr->ap_r_idx);
- }
-
+ this->increase_kill_numbers(m_ptr);
GAME_TEXT m_name[MAX_NLEN];
monster_desc(this->target_ptr, m_name, m_ptr, MD_TRUE_NAME);
}
}
+void MonsterDamageProcessor::increase_kill_numbers(monster_type *m_ptr)
+{
+ auto *r_ptr = &r_info[m_ptr->r_idx];
+ if (((m_ptr->ml == 0) || this->target_ptr->image) && none_bits(r_ptr->flags1, RF1_UNIQUE)) {
+ return;
+ }
+
+ if (m_ptr->mflag2.has(MFLAG2::KAGE) && (r_info[MON_KAGE].r_pkills < MAX_SHORT)) {
+ r_info[MON_KAGE].r_pkills++;
+ } else if (r_ptr->r_pkills < MAX_SHORT) {
+ r_ptr->r_pkills++;
+ }
+
+ if (m_ptr->mflag2.has(MFLAG2::KAGE) && (r_info[MON_KAGE].r_tkills < MAX_SHORT)) {
+ r_info[MON_KAGE].r_tkills++;
+ } else if (r_ptr->r_tkills < MAX_SHORT) {
+ r_ptr->r_tkills++;
+ }
+
+ monster_race_track(this->target_ptr, m_ptr->ap_r_idx);
+}
+
/*!
* @brief モンスターに与えたダメージを元に経験値を加算する /
* Calculate experience point to be get
void death_unique_monster(monster_race_type r_idx);
bool check_combined_unique(const monster_race_type r_idx, std::vector<monster_race_type> *combined_uniques);
void death_combined_uniques(const monster_race_type r_idx, std::vector<std::tuple<monster_race_type, monster_race_type, monster_race_type>> *combined_uniques);
+ void increase_kill_numbers(monster_type *m_ptr);
void set_redraw();
void summon_special_unique(monster_type *m_ptr);
};