}
+ if (is_pet(m_ptr)) check_pets_num_and_align(m_ptr, FALSE);
+
+
/* Wipe the Monster */
(void)WIPE(m_ptr, monster_type);
/* All monsters get a saving throw */
if (randint0(100) < chance) continue;
+ if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname)
+ {
+ char m_name[80];
+
+ monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
+ do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_COMPACT, m_name);
+ }
+
/* Delete the monster */
delete_monster_idx(i);
{
hallu_race = &r_info[randint1(max_r_idx - 1)];
}
- while (hallu_race->flags1 & RF1_UNIQUE);
+ while (!hallu_race->name || (hallu_race->flags1 & RF1_UNIQUE));
strcpy(silly_name, (r_name + hallu_race->name));
}
}
/* Basic telepathy */
- else if (p_ptr->telepathy)
+ /* Snipers get telepathy when they concentrate deeper */
+ else if ((p_ptr->telepathy) || (p_ptr->concent >= CONCENT_TELE_THRESHOLD))
{
/* Empty mind, no telepathy */
if (r_ptr->flags2 & (RF2_EMPTY_MIND))
bool do_invisible = FALSE;
bool do_cold_blood = FALSE;
+ /* Snipers can see targets in darkness when they concentrate deeper */
+ if (p_ptr->concent >= CONCENT_RADAR_THRESHOLD)
+ {
+ /* Easy to see */
+ easy = flag = TRUE;
+ }
+
/* Use "infravision" */
if (d <= p_ptr->see_infra)
{
if (!r_idx) return;
}
+ if (is_pet(m_ptr)) check_pets_num_and_align(m_ptr, FALSE);
+
m_ptr->r_idx = r_idx;
m_ptr->ap_r_idx = r_idx;
update_mon(m_idx, FALSE);
(r_ptr->flags7 & (RF7_LITE_MASK | RF7_DARK_MASK)))
p_ptr->update |= (PU_MON_LITE);
+ if (is_pet(m_ptr)) check_pets_num_and_align(m_ptr, TRUE);
+
if (born)
{
/* Sub-alignment of a chameleon */