settings: vault and highlight. Vault means a grid is part of a vault (set in dungeon.cc), and currently used to exempt vault grids when shifting labyrinths. Highlight is a meta flag currently only used to highlight labyrinth changes on the 'X' map in wizard mode, but I can think of a couple of other uses, mostly for debugging purposes.
Also replace a few for loops in the lab shift function with rectangle_iterators.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7414 c06c8d41-db1a-0410-9941-cceddc491573
J7GPW2YXLT6FGSKJ24FGQ24GTRZ6A2BDYM6CIXV4R6YBEHP6BGPAC L4P7CLMZ46XNYJLUCGI2GBEQ7DUXRUTDQ5DIWJBLK4SQZBP5W74AC WSW74U3IOZ4Q47MHN57KCWZCSJ4U4MOJX4CCDOLUD2KOFEIQR4BQC GKHIWBXGW3NPOGCY6JUE5S7O5RB34R25Y6NQRNABYE2HZ2JJGKLAC WEZLXS4OSKPX6ZFFZZKKEO4NKG2QC4AFANVC34IYNDAEDGWJJHLQC ADNUOKDM2BLXCMGW6FOI3KYKDPIUUDJJXESMWDVSXXR5TZCGQ5YQC 5ONUB5WXLAKG2V4HGFHJQR6WWSBUZQ2DZOWIS73G7AVWWB6PBHXAC D27U7RT2C77NEUBP6JCSQJ2DRCJVHOXUO2PFZ45VFYMEVMKI4TSAC CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC MJWFTUS66PTCNEYXEJA3CUJFXNWXIKDD6H3V24PW7HK64NSVOFSAC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC XVFTIQ7MSVKQDMQ2HT3IY6FJOZFK4H6OFGTUAID5VGCA5BGVXYPAC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC PDOFPXD2X6VI23AHKCGQ5RVDBG74CNP2E3YOHKXLOARHHBXEK3HQC WDQ3ST3BQ7BMW2IXQMSJVRG7GK2EG444JLKII24FB7IJ5YF5KT5QC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC RCLZVH5IZLUUJU3XDIW4GUDJ5G73DOI3EEMRKNMCNPSSEDBU5YFAC PSCYVKJ7DGXAL3V5U4O6AJTRV6Q3N3SHQWAZ73VIPRTE4W64F2XAC 5XNQ3SSNBFXFNWA6DPM74W6FH65NX665P3DMH6YCWVFOPZTJSYCQC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC 57E4T664CXRFPVW2BZBYI33UIHFS4PSEZURZYPSYSZK5DRLJJ5CQC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC WL3O4GOFGFEDGJ74LVMYJEIRSSZ3ZPIPY5FWAZJED3FPCTUV6NQQC DK362IHKSDADMUPD35NOTKM4WESQM37KG2PNOJRV2FGELDWULYPQC S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC HLZJ4YXJ3RQTM6PLOXNVVHGOK2KO54S35NMAEQGM7PJW7ACISJYQC TO43FWKHNIA5MVDOFXYHQODTLBQYEZKX5UIUGID57436UF7G2EXQC VXSORUQOM2VZA4CAZDC6KPAY373NQIN3UT7CXQXTRCYXO2WM62DAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC AO3KHGKGSX2ZR24KJVIOTUY7EHYHMMI5W4HN3CAG4YGQHBOHLGDQC NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC MSQI3TH6T62JAXQGLL52QZCWAMC372TGB6ZNNRDGUGMJKBNNV2VAC RWSXCNYUGDSMP2GKN22HROC5Q2GHSAVJJUDRT3Z53WU2DAI4IZOQC U5SXLDAMIOCJJ3A3U6Y3HHSJI7WSZIM2SSXEPHJWBCB5KAXFM5XQC SW3RLYFNRT3IJBK6LYKHKP2J2YDU7SXQWAJZX7U6S7ICYW43OMNQC ED62QWGKBPORWVKDFOQRKJXEIWZVNGR3O4KWQBDSRNPT36AYOQYAC JI4NDSOXGGZ7QHXXFB3ZTHAKHABXYBZXPDGLUFV5SKYEOL5FT7JQC VHX7TPWGVWIT4UVQZ3XSFBRALNMHLEDMEBJC6HZ4HUH2JKI4VL6AC WP5VP57D5BWKDAS7AA224OV2RX4O4BPTI2BLY7TS3T2O2PLUGXCQC HIRKGUMNJPWKSVTR6TVBPD3MWNA63CEHCLCIPWEMGDFHVB3NPLDQC OEISFRW2B7E4YRJSWXNXBH2IAJO4O3LHNYFPFD3MBY57LYVRHMZQC QCUMH3C7GXV7ZW444WT5SFAXQOJKJSE2YCQCEHMRYXCWF4QI7UMAC TPZWAV3USKO7RX4IGHLZKVPRN36K33PJPSZYL6FZMX4XBHTYOQYAC V77IIRDTMZWKFEZEQIQNBMVELSSFTPV2ZWR2QIALU5Z7I3YZZBZAC 4FQAKUKUO6PCAZ3N4HUR5XL6E4VA5UQUZ3AEDGRBLVY7W2LMWI7QC OONYLF4DAPLIYLBNNRW74IVT5BBTWI4XHQBXSNSPVRX3FTKJBTRAC 3UKFCWWS5BLFQWZRB5FUA46CE2XGX5VRCEWC3K3XH5RCGQK64N2AC 56C44YMFHZ62GXAAOLYSLLGBVGRWXB53W2VI37Q26ZECEK2XG5SQC KCHX2F3JFEWOZT3WMJVZAAQUU2QSZ5Q7RDCD7WUJ7VE65J52JFUQC W45PMU4HNPSAMMEBJ4XH4MTHLPVIASZT4FXTBPID5LFXKIMNUBKAC CUNNC574MESEMTTONZ6YB6CJ2S5P6VA3V7Z3OODESWAK37GYOBPAC // Fill a vector with wall grids that are potential targets for swapping// against floor, i.e. are flanked by walls to two cardinal directions,// and by floor on the two remaining sides.std::vector<coord_def> targets;for (int xi = c1.x; xi <= c2.x; xi++)for (int yi = c1.y; yi <= c2.y; yi++)
// Fill a vector with wall grids that are potential targets for// swapping against floor, i.e. are flanked by walls to two cardinal// directions, and by floor on the two remaining sides.for (rectangle_iterator ri(c1, c2); ri; ++ri)
if (_grid_is_flanked_by_walls(c) && _deadend_check_floor(c))targets.push_back(c);
// Skip on grids inside vaults so as not to disrupt them.if (testbits(env.map(*ri).property, FPROP_VAULT))continue;if (_grid_is_flanked_by_walls(*ri) && _deadend_check_floor(*ri))targets.push_back(*ri);
const coord_def c(xi, yi);if (!grid_is_wall(grd(c)) || igrd(c) == NON_ITEM)
mprf(MSGCH_DIAGNOSTICS,"Need to move around some items at pos (%d, %d)...",ri->x, ri->y);}// Search the eight possible directions in random order.std::random_shuffle(dirs.begin(), dirs.end(), random2);for (unsigned int i = 0; i < dirs.size(); i++){const coord_def p = *ri + dirs[i];if (!in_bounds(p))
mprf(MSGCH_DIAGNOSTICS,"Need to move around some items at pos (%d, %d)...",xi, yi);}// Search the eight possible directions in random order.std::random_shuffle(dirs.begin(), dirs.end(), random2);for (unsigned int i = 0; i < dirs.size(); i++){const coord_def p = c + dirs[i];if (!in_bounds(p))continue;if (_is_floor(grd(p)))
// Once a valid grid is found, move all items from the// stack onto it.int it = igrd(*ri);while (it != NON_ITEM)
// Once a valid grid is found, move all items from the// stack onto it.int it = igrd(c);while (it != NON_ITEM)
mitm[it].pos.x = p.x;mitm[it].pos.y = p.y;if (mitm[it].link == NON_ITEM)
mitm[it].pos.x = p.x;mitm[it].pos.y = p.y;if (mitm[it].link == NON_ITEM){// Link to the stack on the target grid p,// or NON_ITEM, if empty.mitm[it].link = igrd(p);break;}it = mitm[it].link;
// Link to the stack on the target grid p,// or NON_ITEM, if empty.mitm[it].link = igrd(p);break;
for ( int i = 0; i < tries; ++i ){if (!one_chance_in(100))continue;
for (int i = 0; i < tries; ++i){if (!one_chance_in(100))continue;
// Chance of cleaning adjacent squares.for ( adjacent_iterator ai(where); ai; ++ai )if (is_bloodcovered(*ai) && one_chance_in(5))env.map(*ai).property = FPROP_NONE;
// Chance of cleaning adjacent squares.for (adjacent_iterator ai(where); ai; ++ai)if (is_bloodcovered(*ai) && one_chance_in(5))env.map(*ai).property &= ~(FPROP_BLOODY);