From 5bb19a230f900b73c37a586b6151a3c19b2a2c50 Mon Sep 17 00:00:00 2001 From: lethosor Date: Thu, 25 Feb 2016 15:34:56 -0500 Subject: [PATCH] getKillCount: also search kills->events --- library/modules/Units.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/library/modules/Units.cpp b/library/modules/Units.cpp index 1a3e62e1b..bdac27cda 100644 --- a/library/modules/Units.cpp +++ b/library/modules/Units.cpp @@ -62,6 +62,7 @@ using namespace std; #include "df/historical_figure.h" #include "df/historical_figure_info.h" #include "df/historical_kills.h" +#include "df/history_event_hist_figure_diedst.h" #include "df/identity.h" #include "df/job.h" #include "df/nemesis_record.h" @@ -1107,11 +1108,18 @@ int Units::getKillCount(df::unit *unit) CHECK_NULL_POINTER(unit); auto histfig = df::historical_figure::find(unit->hist_figure_id); + int count = 0; if (histfig && histfig->info->kills) - return std::accumulate(histfig->info->kills->killed_count.begin(), - histfig->info->kills->killed_count.end(), 0); - else - return 0; + { + auto kills = histfig->info->kills; + count += std::accumulate(kills->killed_count.begin(), kills->killed_count.end(), 0); + for (auto it = kills->events.begin(); it != kills->events.end(); ++it) + { + if (virtual_cast(df::history_event::find(*it))) + ++count; + } + } + return count; } inline void adjust_skill_rating(int &rating, bool is_adventure, int value, int dwarf3_4, int dwarf1_2, int adv9_10, int adv3_4, int adv1_2)