Fix some conditions causing permanent stat loss or gain for Mf with stat modifying boots.
Unmerge boots when the player starts levitating or flying on a water square.
Use move_player_to_grid in blink, semi-controlled blink, and teleportation.
Also fix a bug where Mf could random teleport into solid walls.
2K7SL55NUJQ6PBMVPPRCMGS55M2VBZ4CFQYQEKN5SXEW427RKCPAC
RCYCFKHI7HUB46VKURMSKGGV2PCMXOCAJQMYHI5AJNGZEEKMIPFQC
FCQ3HHQAYE6HPTE3RB2YAGUOK4WJRYUYW63UKUX422QAYDHRTBPAC
AUXVWXWIFSTWFA6VZXN2FMG7FQEKRZVV6MD32VQQ7J2RKCXHAVGAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC
EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC
B4X67DGLW77QLGPTMORE2EJ5K5VA3TWIU23HFUF4TZDODXQSFLRQC
3PBG6FJ6WGSR4UM3I7UQUYYCSYU3UBCKCIKYKUEEANIK72TUL4XAC
CIAIASCBKKV7VMYBL2CIFAYGFQTB6GIME4FSQGZNQGXO7FXQTA5AC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
VY2RJLJQMUOVIJOYPTA7AEXPURIV3H6VF7O5QQ7LF44ZS36RTFYAC
HB27XKFYVYIEQZGBCEZ6LKPUBMXLIPDAAS636GJ5TULIQ7KND5KQC
ENOQQ6DEA6ECRNTBGYYNK7G3DFEILMKQBNKP4SUQIZW2L6HWVR7QC
UP6TD25TZ3ENYTOB6N6NA325ROEJPDCW5VPNBRTAFMC7HLFXU4CQC
W6EWE6VIRP6OTSSTG3ZZEBN72OIKK6D3AEIP3OWX3HMJBA52SZSAC
PNIGZ2ABVEGC6DN6PMKO6Z4M2SQ5EB7VZQT33YMEAUPEZVVEDJZQC
BRGAZR5AXWC2IALBVXO5SB354IRQEIRHSK55RZPGFI4AGIOD4LUQC
7X5YDPAU34LOFKEGJYE6GC7EOEDKGT3O6CUGZBYJI45L3FQOAKHQC
SBTVKHKZRMVDBYLGQNMZMJXPAYJG43UWBBD7HQJWIPN3BMMHUBJAC
6RJVKSL7RVZIZIZIC4TWIYJQ24RUSB346ODS3NYGDHUIRTC4Z5FQC
LS5XCCGKQHSJQGWLWLGTP2F5OYWK4ND5AQQAGRN6H2HVBSXNCCZAC
RTNCVAW3IRKSTVGF2RKT4MFCXNSMA6LHW45QVO4FZNYUNMRLJT2AC
I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC
|| grd(you.pos()) != DNGN_DEEP_WATER)
|| monster_at(you.pos())
|| env.cgrid(you.pos()) != EMPTY_CLOUD)
|| grd(pos) != DNGN_DEEP_WATER)
|| monster_at(pos)
|| env.cgrid(pos) != EMPTY_CLOUD)
// Going to assume that move_player_to_grid works, (it should
// because terrain type etc. was already checked). could result
// in awkward messaging if it cancels for some reason but it's
// probably better than getting the blink message after any Mf
// transform messages all the time -cao
success = true;
// Leave a purple cloud.
place_cloud(CLOUD_PURP_SMOKE, you.pos(), 1 + random2(3), KC_YOU);
you.moveto(target);
if (you.level_type == LEVEL_ABYSS)
{
abyss_teleport(false);
if (you.pet_target != MHITYOU)
you.pet_target = MHITNOT;
if (you.level_type == LEVEL_ABYSS)
{
abyss_teleport(false);
if (you.pet_target != MHITYOU)
you.pet_target = MHITNOT;
}