rd_s16b(&r_ptr->r_sights);
rd_s16b(&r_ptr->r_deaths);
rd_s16b(&r_ptr->r_pkills);
+ if (h_older_than(1, 7, 0, 5))
+ {
+ r_ptr->r_akills = r_ptr->r_pkills;
+ }
+ else
+ {
+ rd_s16b(&r_ptr->r_akills);
+ }
rd_s16b(&r_ptr->r_tkills);
/* Count wakes and ignores */
{
r_info[MON_BANOR].max_num = 0;
r_info[MON_BANOR].r_pkills++;
+ r_info[MON_BANOR].r_akills++;
if (r_info[MON_BANOR].r_tkills < MAX_SHORT) r_info[MON_BANOR].r_tkills++;
}
if (r_info[MON_LUPART].max_num)
{
r_info[MON_LUPART].max_num = 0;
r_info[MON_LUPART].r_pkills++;
+ r_info[MON_LUPART].r_akills++;
if (r_info[MON_LUPART].r_tkills < MAX_SHORT) r_info[MON_LUPART].r_tkills++;
}
}
wr_s16b(r_ptr->r_sights);
wr_s16b(r_ptr->r_deaths);
wr_s16b(r_ptr->r_pkills);
+ wr_s16b(r_ptr->r_akills);
wr_s16b(r_ptr->r_tkills);
/* Count wakes and ignores */
s16b r_sights; /* Count sightings of this monster */
s16b r_deaths; /* Count deaths from this monster */
- s16b r_pkills; /* Count monsters killed in this life */
+ s16b r_pkills; /* Count visible monsters killed in this life */
+ s16b r_akills; /* Count all monsters killed in this life */
s16b r_tkills; /* Count monsters killed in all lives */
byte r_wake; /* Number of times woken up (?) */
case MON_A_GOLD:
case MON_A_SILVER:
if (drop_chosen_item && ((m_ptr->r_idx == MON_A_GOLD) ||
- ((m_ptr->r_idx == MON_A_SILVER) && (r_ptr->r_pkills % 5 == 0))))
+ ((m_ptr->r_idx == MON_A_SILVER) && (r_ptr->r_akills % 5 == 0))))
{
/* Get local object */
q_ptr = &forge;
/* Special penalty for mutiply-monster */
if ((r_ptr->flags2 & RF2_MULTIPLY) || (m_ptr->r_idx == MON_DAWN))
{
- int monnum_penarty = r_ptr->r_pkills / 400;
+ int monnum_penarty = r_ptr->r_akills / 400;
if (monnum_penarty > 8) monnum_penarty = 8;
while (monnum_penarty--)
{
r_info[MON_BANORLUPART].max_num = 0;
r_info[MON_BANORLUPART].r_pkills++;
+ r_info[MON_BANORLUPART].r_akills++;
if (r_info[MON_BANORLUPART].r_tkills < MAX_SHORT) r_info[MON_BANORLUPART].r_tkills++;
}
else if (m_ptr->r_idx == MON_BANORLUPART)
{
r_info[MON_BANOR].max_num = 0;
r_info[MON_BANOR].r_pkills++;
+ r_info[MON_BANOR].r_akills++;
if (r_info[MON_BANOR].r_tkills < MAX_SHORT) r_info[MON_BANOR].r_tkills++;
r_info[MON_LUPART].max_num = 0;
r_info[MON_LUPART].r_pkills++;
+ r_info[MON_LUPART].r_akills++;
if (r_info[MON_LUPART].r_tkills < MAX_SHORT) r_info[MON_LUPART].r_tkills++;
}
}
else if (r_ptr->flags7 & RF7_NAZGUL) r_ptr->max_num--;
}
+ /* 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 || (r_ptr->flags1 & RF1_UNIQUE))
{
chg_virtue(V_HONOUR, 1);
}
}
- if ((r_ptr->flags2 & RF2_MULTIPLY) && (r_ptr->r_pkills > 1000) && one_in_(10))
+ if ((r_ptr->flags2 & RF2_MULTIPLY) && (r_ptr->r_akills > 1000) && one_in_(10))
{
chg_virtue(V_VALOUR, -1);
}