git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6961 c06c8d41-db1a-0410-9941-cceddc491573
YMKHC3DZYD4GAQRPZHOZ6RPPNX7ZIEMHBZJ4OKF7HJEHO4SQR7LAC S7T5CO7QMCIK6QSVVB76GNOAQ6QNJOOINGMLFWRC26VK276R3QCAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC 6QWZDCP5HGYLTJO3WWYJJGRRT7QFY6IG64TC7TUB553Z7GAA2HIQC KKNUX66ORZWWQH4ARKCHPHNDOYCI65STE3A27LKA3FWUKIX7MAXQC B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC 6LWF2Q64D2FHZHSODMJ2OEXQXKUI3X5BIWWUQIFS3I4GULWBI4SQC 3XZOL3FFQZITUJIGDD6B6V6ZYMBN524JKNN6ZPJAXEC7RY433I3QC 3UKFCWWS5BLFQWZRB5FUA46CE2XGX5VRCEWC3K3XH5RCGQK64N2AC WWR4IDWLXP4XLBWDZBA5GFG7CRKUJQNRK7FFUFOISK6OJTMYQPFQC W45PMU4HNPSAMMEBJ4XH4MTHLPVIASZT4FXTBPID5LFXKIMNUBKAC TZ55IZNANEJO2WDTKYWVLY2W2VV6BR7WKIN7XLNISAMMFT6LG2WQC AOLWOUIFBQDQTCMSVB7N7GAKFUY5J5LH7CJZAY3HEY3WEUSLADZAC 4FQAKUKUO6PCAZ3N4HUR5XL6E4VA5UQUZ3AEDGRBLVY7W2LMWI7QC O7S3ILRELHICJXXTDGMF7KPPZWYHPYCNDPV2I77FZXXH4I454B4QC KA5FM5FELFEKHCCICIQCKVKOLHOYXOCODGK4NFJWRSPJ4UXULC2AC HZK3YN3SAISTDS5JI4COBYFG7YB4ABDVENXWZZEYLFA2LDI232VAC NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC }}typedef std::pair<coord_def, dungeon_feature_type> located_feature;typedef std::list<located_feature> located_feature_list;bool _is_critical_feature(dungeon_feature_type feat){return (feat == DNGN_ENTER_PORTAL_VAULT|| feat == DNGN_ENTER_LABYRINTH|| feat == DNGN_ENTER_SHOP);}static located_feature_list _save_critical_features(){located_feature_list result;for (rectangle_iterator ri(1); ri; ++ri)if (_is_critical_feature(grd(*ri)))result.push_back(located_feature(*ri, grd(*ri)));return result;}static void _restore_critical_features(const located_feature_list& lfl){for (located_feature_list::const_iterator ci = lfl.begin();ci != lfl.end(); ++ci){grd(ci->first) = ci->second;
// Find an island to place the stairs up on.int j;const coord_def d1(1,0), d2(-1,0);for ( j = 0; j < num_islands; ++j ){if (!_is_critical_feature(grd(centres[j]))&& !_is_critical_feature(grd(centres[j] + d1))&& !_is_critical_feature(grd(centres[j] + d2))){break;}}if (j == num_islands){// Oh well.j = 0;mprf(MSGCH_ERROR, "Clobbering critical features: %d %d %d.",grd(centres[j]), grd(centres[j] + d1), grd(centres[j] + d2));}
grd[centres[0].x ][centres[0].y] = DNGN_STONE_STAIRS_UP_I;grd[centres[0].x+1][centres[0].y] = DNGN_STONE_STAIRS_UP_II;grd[centres[0].x-1][centres[0].y] = DNGN_STONE_STAIRS_UP_III;
grd[centres[j].x ][centres[j].y] = DNGN_STONE_STAIRS_UP_I;grd[centres[j].x+1][centres[j].y] = DNGN_STONE_STAIRS_UP_II;grd[centres[j].x-1][centres[j].y] = DNGN_STONE_STAIRS_UP_III;
mons_place(mgen_data::sleeper_at(one_chance_in(7) ? MONS_KILLER_BEE_LARVA: MONS_KILLER_BEE,*ri, MG_PATROLLING));
mons_place(mgen_data::sleeper_at(one_chance_in(7) ? MONS_KILLER_BEE_LARVA: MONS_KILLER_BEE,*ri, MG_PATROLLING));