As you explore, a halo of mapping tracks you. The halo includes a percentage of tiles within a distance of every seen tile; optimal play dictates seeing every tile, which just happens to be what autoexplore does. Added as random generation and to the demonspawn tier-2 list.
Signed-off-by: Darshan Shaligram <dshaligram@users.sourceforge.net>
XHKAHAVDZIGGXNA442YKWKCTSSIRFTXOIOFYLYEJAR36H7DLD2ZQC I77NPV6TQD2M6HY6H6ODSKSL2TOONPK6PK2DRZSP6G5BKTOFA25AC UFM4NF5VT5UMB2EODBBWHH5A6VWD67MBVSY352K5MNTJVNNHYFLQC L2HE3KCNREOYBGUNAJPWJDFFVIM7VMLCCGU4DZPVENAPF23F2GSQC BY5XD4MZ34JNBO4Y3QFE7DKUW5VYW3NXJGQWF3YHZDC35LLO7MHQC HI6YISLKIYJEN7MMIQJ3PSHD4WWTZJ3LNIZ2POQ4NEZGQH4DIRPAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC GZMPIDNMBXZ4B2ZWKREHBPAVN53J6WRVY5W5KY52KEBHKU6IW4IQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC UJHVY3MHU23VJMYKIXCDSAIXF6HH6MWKT5H2KHSJTHJVU4DYWTFAC AJJ6D6JRV6ZAZOAUHYUM2IQG42V6PBALOD4KEMNKSVVAOJXAUCPQC NG53L53MSFQZAIVKHG54IEMXNJ33AYVPF2OZM4MMJFDKEJCGPBSAC V25XPIUUPVMKRK663D33PWE3GFQR47XZAV642T2NYGRFWZR5LT6AC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC MV5USMLTBKVRWBAD67UFJ2BS4Y5HEOMYASRSB44DS24BBMRP75RQC MPMVK6J5UQUFJ75SNRSPIBBSRTH67ZPDZKPZUF3RZRFKSERS62AAC UCEAWJ4I6AEFR64SSUFQSX6Q62JGLMJQ5BOO5MQSV3XIE7KAS6CQC BK6MGPSEAEMU4URBAPKY3VTKK6JC6IZVN5CNOSN2UPTIOWQYEWLQC LS5XCCGKQHSJQGWLWLGTP2F5OYWK4ND5AQQAGRN6H2HVBSXNCCZAC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC 4LFTDJY3DK6S7C7SQLLML6UIZ42GZOWK2EIMZZSNEKBWSA3YNUZAC X3B7EVFL3GJOEID2C42QJQIQBJS4YLA4R2HT4LXGDPIBKHGDDEHQC 6FBAIIDQLTXNSPYEEDV5ISD24S5F7PX2JOWEMXMS4LE53RC6T6EAC CMNLYUECIMEZSOYG4KOSINOPER5OM7PPCGIHCM7LQVWEO77XFUYQC static void _automap_from( int x, int y, int mutated ){if (mutated)magic_mapping(8 * mutated, 5 * mutated, true, false,true, coord_def(x,y));}void reautomap_level( ){int passive = player_mutation_level(MUT_PASSIVE_MAPPING);for (int x = X_BOUND_1; x <= X_BOUND_2; ++x)for (int y = Y_BOUND_1; y <= Y_BOUND_2; ++y)if (env.map[x][y].flags & MAP_SEEN_FLAG)_automap_from(x, y, passive);}
}}// We logically associate a difficulty parameter with each tile on each level,// to make deterministic magic mapping work. This function returns the// difficulty parameters for each tile on the current level, whose difficulty// is less than a certain amount.//// Random difficulties are used in the few cases where we want repeated maps// to give different results; scrolls and cards, since they are a finite// resource.static const FixedArray<char, GXM, GYM>& _tile_difficulties(bool random){// We will often be called with the same level parameter and cutoff, so// cache this (DS with passive mapping autoexploring could be 5000 calls// in a second or so).static FixedArray<char, GXM, GYM> cache;static int cache_seed = -1;int seed = random ? -1 :(static_cast<int>(you.where_are_you) << 8) + you.your_level - 1731813538;if (seed == cache_seed && !random){return cache;
for (radius_iterator ri(you.pos(), map_radius, true, false); ri; ++ri){if (proportion < 100 && random2(100) >= proportion)continue; // note that proportion can be over 100
const FixedArray<char, GXM, GYM>& difficulty =_tile_difficulties(!deterministic);
{ MUT_PASSIVE_MAPPING, 3, 3, false, false,{"You sense your immediate surroundings while exploring..","You sense your surroundings while exploring.","You sense a large area of your surroundings while exploring."},{"You feel aware of your new surroundings.","You feel more aware of your new surroundings.","You feel even more aware of your new surroundings."},{"You feel slightly disoriented.","You feel slightly disoriented.","You feel slightly disoriented."},"passive mapping"},