FR: Magic mapping now comments on the number of altars and shops/portals sensed.
Also, take a note when a notable feature is first seen.
BY5XD4MZ34JNBO4Y3QFE7DKUW5VYW3NXJGQWF3YHZDC35LLO7MHQC
G7DNYFW745Q567EF3TPR2FCQ4ATPN236ON7X5TLYC7TEPZW3BAFAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
UJHVY3MHU23VJMYKIXCDSAIXF6HH6MWKT5H2KHSJTHJVU4DYWTFAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
V25XPIUUPVMKRK663D33PWE3GFQR47XZAV642T2NYGRFWZR5LT6AC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
XP2DL4CJ7FH2IPNNA6KHNOAFW6J2RSC44JWEGLYQHWUMU5EVHFUQC
QEFW63ZHJEAR4GS5UBXDSLCET7QBV2SORJHWSO63ROO33QJMHGKAC
ZHFUXYUHS6V47WK2NRH7OU6RX77NRKTXOZC3MND2GG7PEEWSGFTAC
5ASC3STDYCNLZFEBN6UTMUCGDETHBR2OCBZCF5VIAZ5RRWLOTDYQC
4VDKJOSBXI4KTWFJT4KWRF6EAQYQEXHJORP3L7RTDJXAYTKQELNAC
if (!(env.map[x][y].flags & (MAP_MAGIC_MAPPED_FLAG | MAP_SEEN_FLAG))
&& grd[x][y] == DNGN_ENTER_LABYRINTH)
{
coord_def pos(x, y);
take_note(Note(NOTE_SEEN_FEAT, 0, 0,
feature_description(pos, false, DESC_NOCAP_A).c_str()));
}
const dungeon_feature_type feat = grd[x][y];
// Magic mapping doesn't reveal the description of the portal vault
// entrance.
if (!(env.map[x][y].flags & MAP_SEEN_FLAG)
&& grd[x][y] == DNGN_ENTER_PORTAL_VAULT
&& you.level_type != LEVEL_PORTAL_VAULT)
// First time we've seen a notable feature.
if (!(env.map[x][y].flags & MAP_SEEN_FLAG) && is_notable_terrain(feat))
coord_def pos(x, y);
take_note(Note(NOTE_SEEN_FEAT, 0, 0,
feature_description(pos, false, DESC_NOCAP_A).c_str()));
const bool boring =
// A portal deeper into the Zigguart is boring.
(feat == DNGN_ENTER_PORTAL_VAULT
&& you.level_type == LEVEL_PORTAL_VAULT)
// Altars in the temple are boring.
|| (feat_is_altar(feat)
&& player_in_branch(BRANCH_ECUMENICAL_TEMPLE))
// Only note the first entrance to the Abyss/Pan/Hell
// which is found.
|| ((feat == DNGN_ENTER_ABYSS || feat == DNGN_ENTER_PANDEMONIUM
|| feat == DNGN_ENTER_HELL)
&& overmap_knows_num_portals(feat) > 1)
// There are at least three Zot entrances, and they're always
// on D:27, so ignore them.
|| feat == DNGN_ENTER_ZOT;
if (!boring)
{
coord_def pos(x, y);
std::string desc =
feature_description(pos, false, DESC_NOCAP_A);
take_note(Note(NOTE_SEEN_FEAT, 0, 0, desc.c_str()));
}
std::vector<std::string> sensed;
if (num_altars > 0)
sensed.push_back(make_stringf("%d altar%s", num_altars,
num_altars > 1 ? "s" : ""));
if (num_shops_portals > 0)
{
const char* plur = num_shops_portals > 1 ? "s" : "";
sensed.push_back(make_stringf("%d shop%s/portal%s",
num_shops_portals, plur, plur));
}
if (!sensed.empty())
mpr_comma_separated_list("You sensed ", sensed);