exclusion if any monster on this list is encountered during exploration and it's either asleep or stationary. This also works during manual exploration to cover cases where only the first monster is announced and stops autoexplore but there are more monsters in the room that would fit the criteria, such as in the oklob vaults. (Players who insist on exploring manually will have to simply leave this option empty.)
Once you kill the monster (or someone else does it for you, as long as you are there to watch it) or it wakes up with you in sight, this exclusion automatically is removed again.
By default the setting is: auto_exclude = oklob plant,silver statue,orange crystal statue
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7109 c06c8d41-db1a-0410-9941-cceddc491573
AA5RRYINGLYJHZNRSQUHI6K4GIT4KZBFRFZ43EJJPOMJAMXWULMAC
OYDRBUMH4VNI7MIUQIKNNZQWVTVTLHQX7NWN6BPUBLPTUW5HFEBAC
S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
PFEJ4LMDNEKLMGRCMWQ7EIRVU4JMYGICI4G7X4WVWOROVXQCBZ7QC
LJK4ZQATLSB4MKZG3ARZX5V6RFGTN3NLCN6GTCUGJQKU26SOXMUAC
MSMWAL6JZAWNGZXCNXPATUMAU6TVXBWWFY666P7UBSZ5LPYJYUCQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
GQTOIBHYZYKCI7ZOKK4NSYSBHKWM4FDRFIQWVKDJPKUFGTMENMAQC
DKRSOHZXL6EPSLKOKHF7GJXSZEJVY7CXGACSHWLM5B5FTRETWWCAC
NO2HRD7RZS42S55UG4FQ5EFQDY6WYWKGIXHUKYLWF36HHE3VZ7WAC
UWMN4HLG6YA2YFQEVIVMDISD6APKEPIZXMMPMNUYCBQDSAUYSXPQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
GTXKQTORYHZ7XB2VIH6372UM5GMWAN7IVRXWY5FGBCHFGBV6D6NAC
THEWZBBFONK266AMYIIFQ4SFGZMTMU62ZO2Y43UMCDD6DDBSDYKAC
2ZFV5PKZU3HDHMLJWVWPPFV43NUNUON6YSAITHB26D7L4XIVWUHQC
57E4T664CXRFPVW2BZBYI33UIHFS4PSEZURZYPSYSZK5DRLJJ5CQC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC
4TPFZIL52CS4HPO5LQMKS3PHTE2X2C547ULEFXKM4UIQQ64FUBGAC
}
static bool _mon_needs_auto_exclude(const monsters *mon, bool sleepy = false)
{
if (mons_is_stationary(mon))
{
if (sleepy)
return (false);
// Don't give away mimics unless already known.
return (!mons_is_mimic(mon->type)
|| testbits(mon->flags, MF_KNOWN_MIMIC));
}
// Auto exclusion only makes sense if the monster is still asleep.
return (mons_is_sleeping(mon));
}
// Check whether a given monster is listed in the auto_exclude option.
bool need_auto_exclude(const monsters *mon, bool sleepy)
{
// This only works if the name is lowercased.
std::string name = mon->name(DESC_BASENAME);
lowercase(name);
for (unsigned i = 0; i < Options.auto_exclude.size(); ++i)
if (Options.auto_exclude[i].matches(name)
&& _mon_needs_auto_exclude(mon, sleepy))
{
return (true);
}
return (false);
}
// Clear auto exclusion if the monster is killed or wakes up with the
// player in sight. If sleepy is true, stationary monsters are ignored.
void remove_auto_exclude(const monsters *mon, bool sleepy)
{
if (need_auto_exclude(mon, sleepy) && is_exclude_root(mon->pos()))
toggle_exclude(mon->pos());
auto_exclude = <list of monster names>
Whenever you encounter a sleeping or stationary monster during
exploration that is included in this list, automatically a
travel exclusion is set centered on this monster, meaning
autoexplore won't ever bring you in its line of sight. If the
monster dies or wakes up while you are in sight, this exclusion
is automatically removed again.