controlled teleport.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7105 c06c8d41-db1a-0410-9941-cceddc491573
QTGDLSVMXXROGGKE7JRHRJ7GQIQM3CAB2ETBB4FW6WRDR7VCFO3QC OV2LVRMR4XFWHWJETUDYSZKN36NV2RFXQ4ZUHVMQMV5WXZKSZQOAC VMDHEP2MGV6D5MTWNNTUYV4SY45JC3ITDEZLHT4HDJ4N2GXM755AC 2ZZD6EYMSPVCXZTICL4VGYGGQRRWDLZ24KBCDBVIYC54OZ4C6GGAC XHNJ2W4AQHIF32P2ENIMMDLWAIFWP442KJIZC6RKS4HBJNZIHHBAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC ILOED4VB4I6VPAUTR75ZWX6MXDYXB5DO2EDK2UH67O3HNKWV23RQC AXQJOPTECRU3ECV3ICDUR6SGBIOIZT5HIOSJ77MRLF5ECGOITMDQC JJULXW764V5C2HJKZNWQAEWB6QM5YZADD7ZCE35LYTBFEM6PMYCAC HBJTHYXGSD35S4VVUZOK3UE5M5PEQEDEQTSV3WPJYD25PNPPPSCAC SWE3F3BLKHYMJEJLXNFH3MR2E6VDEYXJ6DL7QLPP47BJEKEUCAMAC AUXVWXWIFSTWFA6VZXN2FMG7FQEKRZVV6MD32VQQ7J2RKCXHAVGAC HKQTMQVLLOBG2VO47TUGSTQALA3D2YLMEVADXXYNR4RGGKD3F2ZAC 5K2ANIEXD3CPJM4XNKNPZINP2G4NT7SJBKRN62WNBUKJXFERTILQC M47QBURKKRV2JFK6U7GQNVWK7RUTBVPBJ5FHURC55SKQSXAUFSBAC NS3KXJXQSN33UQSOBDK3WXXKA3KY5YOUJL67NBZKGQAJYDYZ2COQC YQDXXS2M7PYVJHY6KAHSRKE5ZRC6T72W7LTGNRVPKCSP5VATWAVAC WTBI53EKHGSNOQJ7DJVKJNKGW2VFFEDYTQATU53WFH3IAMSSGOZAC RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC NDGNTJWFOIU5EYAJU75FRRUICLCVQAJJ65NJ33ZGWDEYZZECPQEAC R5Q2OJMXNVK5RPXIKLTHHAOP67XOBB44AZKKZ2TOI3USPL6HACXAC R4HHAP27V6RU7AVHYJ3TVOA6Y4RMWIN24XLGD4O2PE6DEGM3RIHQC if (object < NUM_REAL_FEATURES && object >= DNGN_MINMOVE&& is_sanctuary(where) )
bool blocked_movement = false;if (object < NUM_FEATURES && object >= DNGN_MINMOVE&& you.duration[DUR_BEHELD]){// Colour grids that cannot be reached due to beholders// dark grey.for (unsigned int i = 0; i < you.beheld_by.size(); i++){monsters& mon = menv[you.beheld_by[i]];const int olddist = grid_distance(you.pos(), mon.pos());const int newdist = grid_distance(where, mon.pos());if (olddist < newdist){blocked_movement = true;break;}}}if (blocked_movement){*colour = DARKGREY | colmask;}else if (object < NUM_REAL_FEATURES && object >= DNGN_MINMOVE&& is_sanctuary(where) )
else if (you.duration[DUR_BEHELD]){// If beheld, colour the few grids that can be reached anyway// lightgrey.coord_def pos = coord_def(x,y);if (grd(pos) >= DNGN_MINMOVE && mgrd(pos) == NON_MONSTER){bool blocked_movement = false;for (unsigned int i = 0; i < you.beheld_by.size(); i++){monsters& mon = menv[you.beheld_by[i]];const int olddist = grid_distance(you.pos(), mon.pos());const int newdist = grid_distance(pos, mon.pos());if (olddist < newdist || !see_grid(env.show, pos, mon.pos())){blocked_movement = true;break;}}if (!blocked_movement)tc = LIGHTGREY;}}
if (you.duration[DUR_BEHELD]){bool blocked_movement = false;for (unsigned int i = 0; i < you.beheld_by.size(); i++){monsters& mon = menv[you.beheld_by[i]];const int olddist = grid_distance(you.pos(), mon.pos());const int newdist = grid_distance(pos, mon.pos());if (olddist < newdist){mprf("You cannot teleport away from %s!",mon.name(DESC_NOCAP_THE, true).c_str());mpr("Choose another destination (press '.' or delete to select).");more();
if (!wizard_blink && you.duration[DUR_BEHELD]){bool blocked_movement = false;for (unsigned int i = 0; i < you.beheld_by.size(); i++){monsters& mon = menv[you.beheld_by[i]];const int olddist = grid_distance(you.pos(), mon.pos());const int newdist = grid_distance(beam.target, mon.pos());