most likely broken in some places and might break tiles. Will fix in the near future.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6636 c06c8d41-db1a-0410-9941-cceddc491573
TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC 2KPMOH6VLRL5YKC7D54UMGRGS5UMAJO224OXTJ5MIKOBRI2EQQ3AC FDIC4EXOYZLA4WKWTBNA5KRD2DGMOEGCWTCLKCYWZ32I4LU44VTAC JA465VRRBEMSFQNUXRHTMUQ7OEBUE4GBPXYDQO5JXMAM3TDKQBLAC Q3ESS2G3M4LBHAIGM66QE2GXWVC67KSR2AXU3MNJEKSP4XKUGXWQC FWR2IOUBSV4KSFV6YGTKZBTOD2DIUMFYBWHCIYLQJ5PCNAIETDPAC OK6A6PMHOYIQIPXK32AKOH55QRFWQA43BJWHUOCZA2VIJ6NROHMQC YNHLI6CSX6FXVNQDDA5PRBIQAR2L37KIBE5TDHNQ2ZCAM4KGBJXAC IDZRR23PKCZ7WVQFZTHEKGY7D7SLUHCJC5HQKP2FV4GK3B243O7QC J4FEX23HNK5K75KWIVDILPIWY33F23W66CT4P5BFVZQVZMLZ42WQC P5KSBMFHDCAFUGHSOCLDG7J7XKCGJBCSDICYOMOYCEBBBXM55CEAC OMGPA2JNIW5BPBUG6LFK5M2UEB6JH6CT7MP6DH3NKFTJVVLNWWCAC XI5VME7HFX6PID3Y4PRICAALEXTJET7NEDI4ANYGWLFDZTBVA2LQC 236OSX2W6TK3DQBCBYHZ5IHWEA7KYG6FAEBC4GOH3Q3YRV6PWMMAC F2MGW5DMHF7AF7R7KX3H6BYJGZ57CVTDCZWUHSFJXS52IVOC3NZQC X5DCNPFXJAWWTCTVQGZN4PTTWUJIUE4JPTXH3WVWCO2DW67MXWYAC AXRXY7RSEN3QHQRK6SFEH2OZAAYJRR5RBBBFF4YJF756V2FPFJ3AC BMGB25AWEDOAWKDB7H22R6D4SL32CSBSOBWBIEN3GFGDLEDGEWJAC 5DMO2DEV7IK3MJG274EUNZBGQ7EBZWC2WTSKAEGPDMILX7BXYG3AC DVCPTGG5UWM4QMV3TJOLC4BDB77WUGQTJSU5NXQWOSIGSVL7E37AC 5WP65PFRPN43O6CMEE3AIAWPENG3LTMJJ62FP5MQWS3Q3ZRNDMNQC SVSEDYQW5L2EVFGEGJQKCX3H2PNOI467V6HEPGYH3NLTHS7TX3VQC IYDUDWPDA7JST3MVKYBAAX7GYDSM6FXXQ2QMMIKEDQLT4VXTHOUAC 2EIE224NR2CHHBAK6RKXLQODHU2WG3WDCWM4KXTDJCUFIUCXWFUQC TKZWK7DWRWXIN7IJNWF3IKWGZOUSCGYXEJWWYGRKD7TAWJVEXGEAC 7ZWRDDHUNLFWUBFH4322MCPLLHH7G4KVJW64NNUGJD7RPFEHFSWAC EOSO62ARVOII6OTUCOQB2VYCKYAOHPMVGVXKMUVY4YQSGU3PIW5AC GJAFXCDBIGFUMCD6IJ523WAT754VOJSUXPNN7ZBECYRRP76CARPAC A7WCVYROUZ5LXDRACLU5GWN2LND3FYFFK5WFI37JGEGKGUBQCU6QC 23S5SPIJC5VOGKB5RQ3VEEXPUERPYT6WIR54FUSCRENQNGDHUF7AC UIQABYXDQ4JIVMVEAQCOVR3HOKNNQCAGMGRETLEX3KISPCHCIIOQC A2SAU7YL5ZS4TODRUTKLI4W4RZOMZSSLBEEXOKPKQKP5SEWU7QOQC OCAXB5FMLNTM6ZOSWRFWBMRFFXHTLSJXHXR2AT6Q6MZN5RX5V2QAC QEGZBMFMDLT6HPVW4ZA3JLQL7CCXOI2ITI2RXJNZW5ZPCKX67TDAC G5G4JTXF6JP3GN7ESZTDLEDNJMTLCCE6BCDBORNAEBOUO5WYHAPQC ZXZVCXD4FX4K7I336PXBQ5HUBFQUJPY24YNV3GMBPUJXPT37QB5QC JKEZHDWFNHKMDJQ36ACKV3H64V5B2XAN5XOC6XVR362HY5SAWA4AC FCEJKZUR27U2PIFOPDQFGB4YFAGIBIGYGY2N25IJBCGMFRDFHSVAC JINXDPUZLMFAVRZRQHYEHB4E64NNBECNZN3RLPZ5VL2XRGHY67ZAC JE3SMK7MKFSSNBOPA5RITTF5WOQSSAGUPUO3C2QHFOHA77IPAD3AC CPTUVTBSOJMAUKMS5RFOAEZEVJGPFHMJA2DJWMDTYN7PFNZUGPWQC S5CIJLSFFXV445G6CH2AQ3YDU3P7RLSIHWV7GBJ4MZ4C26BWCY6AC 25EF5X4H3LURXFZ35ZGYGUB6ND7NFQVH4M2XX2SI33I4XRGYG5HAC Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC L2IP3Q6O2GRUT6XQMHCIHMHZFQRFUDAP7XPPLQ7MZLVWQXCPOY2AC 5FZYO6GQ5DWJFMRHCFSLAI4NVGK2HJ6RE7BLHBVTNQJHN75K5LUQC EDGP3KBYHBZ62J6RSGWDMWG4AARB2D3ULKELML5H3S4EDWTWUD7QC UAJN2CFA2QHYDHW2UFAVPPHDQFCD54RKM6V2UC4AMEDJUBBLNWIQC YKVVFNKT2M5WG2KBURRTOJG23BJVI6WUBP5JOGYPHQBS4RNGFGWQC IQGGFC563RBS7GDOACKCLXK752EE5RC3T6G5L6H446SXTMSA7T2AC 3J56TWJLIIWUYOWYHDRMQQ6TGJNRUDBPEAZL2AFXUX27X264J2GQC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC PA2AUORPJHOD7XBRM34UMBZRJVTKUFD3PINRMSEE4GKM7AH2KDVAC ZGZVOMRXLVC42FV67RBTLBOZWFYRL4UHL54A365BR76OUIYRWQXAC AUXVWXWIFSTWFA6VZXN2FMG7FQEKRZVV6MD32VQQ7J2RKCXHAVGAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC ILOED4VB4I6VPAUTR75ZWX6MXDYXB5DO2EDK2UH67O3HNKWV23RQC QCIPZ52TOIKLA6O22P7USLEAYI4VAZRLGVXMAASSGEP37KN5PEVAC C5U3HSOOQ7BKXKXIDS7MLVXUKDTHAWJ5NXNX6YDXTM3GWY5UWX4QC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC JESCEQPAFC23D6BUZMBOB4M54XT3GQZJYT7NCJ556LEUCHRER3SQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC DK362IHKSDADMUPD35NOTKM4WESQM37KG2PNOJRV2FGELDWULYPQC PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC MJWFTUS66PTCNEYXEJA3CUJFXNWXIKDD6H3V24PW7HK64NSVOFSAC D27U7RT2C77NEUBP6JCSQJ2DRCJVHOXUO2PFZ45VFYMEVMKI4TSAC LTX72QGIPNUGWQN5ULPOMFCOPZTK7472DQY4AYX5WM3WHSUVXI5QC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC GVCGKTH5IJ4VSQEIN4CRC7ZFVZW26JPIYNCPTO7GY66CSZZEW3ZQC UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC FCZSQBKDNMJZRJS2LWQQWLUFGOXSKXDJZQIHC7L5S7HXCXQPOMMAC JBZ7NU4BB5PGQWCOSZHD5OQUHQIVOD4XGJLSJQ7BUGQEGPRTVGZQC 3SQQ7NFTRSYDTYI4A6NWKUMOD65JJ5YPSJJIME6JDAAAN7IF6KGQC BNTPYSO6ECZ76CHHLDP3ASSPDSEUH4Y3E3LETKNXVWAWJRFL3YEQC VD4KDTGHVKCN35AWREYB4TEOUMCTW7SAUPAMTMF5ABC7VBHVKP4AC JJULXW764V5C2HJKZNWQAEWB6QM5YZADD7ZCE35LYTBFEM6PMYCAC VJDLV4PF2ZJ46NERO4LZUX5JE2CD5XBOBQCYYPTFWTHLUEYDUOYAC 542UIZKI65UDRNEMGFFDBWYD5XC7AYLTZ3JZQRR2GHYJALD3YY6QC DMG73XDQHY2X2PHKWIY56XKD3O4NPGZKKIO6GX3IV2LLRVXPGKYQC OOFJ4IAVGB6DAUN2AWJBKMFKR7NCE5PCFF5IURV6L5TJYK6CHTHAC 75M6AVUSS3G5EJECJJRB67V5UYDOIV26FZNB2FFCMBZ33EK7FVIQC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC L57WEZMVIHTFRLWVIPWOIOWHCF2I53TVUVYJ2V6IZ64R56FVTZZAC RC6L3CIBLJEH4GWRFD7UQNGI6PZT74FRUVOYHSAN2XCC74NZUASQC ZROKMPBKTMVGRHTVFG7V3PAXSBXKABG44RP4C45IHCXEG7NBBTYAC EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC WT66JDIRTLLP37SHTV4GI3V64JFJ4D25LNRLGCHFG6CLEFKJ3QGQC HQTS3VQ6PNUZKHNVEWMML7JNAAAKL4DSW3KFSRCCSLGYTDHZFCCAC U3KGUJJQWQORJIIFH3ADVNIEEX5HOX6KEOXO7DJSL7L3Z6GG3PAQC 45EMD3KLQPMERNMIKU5G76H6556XOMIW352TSBP7VLWJX2YYGS7AC UCEAWJ4I6AEFR64SSUFQSX6Q62JGLMJQ5BOO5MQSV3XIE7KAS6CQC Z6XF4AIERIW4U4AR3HU2ILYFZ54IK4K4ORQ6JKCEWRO5LZODWDDAC TOOHYAX73C5KPSWGHPCBWCUN62WMMO3BI5CWEEMGV3WBFZ5RIH5AC LLKV4OYGEDB4GVJS5JVBZP5JQFW7VMPZ2CBRSITJ5XCFS3QNWIBQC IPXXB4VRVZWOU5DKQ5ZTD37LS3QNK2R6APNZUO672YEEJT6OFAYQC LGBOBJZ37D3LFSP62KD4IUA37O5ON4UDP724JHE7HZRTBSB27JZQC TFZ4TER7O2Z4FOGF2RCPEPYIHBTUA4LG3ECXLR7XGLCC6GO6OOTAC 475LL4U4ND6PTNV4XKC7WQAOJC7RF2VCCVX3DRILP2PKIBFYWE6QC FZKMVCODMWQEVVBBQHTTXFBRO4LZEYLB646ZPVUMLHH6EER7FAOAC T7CUIVICB74342RA32BR37T36FOX4RBSQIB5PNOHTGTGUYGDKSTQC RM2JXW3ATVYRYHF3NMG5ALGI64OJ7IP2F3MDUDPUT5TBKSSN4KVQC HAMUM5IA4BJMLRIME7KVVVYLRHVS55RIYMGLLQZL3F7QEP7FJ5KAC ZCRK2DJ5VKECRQXZTWT4NUDL2VT5ZHUK7NT6NQPLRJ56TDX5PJSAC NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC CIAIASCBKKV7VMYBL2CIFAYGFQTB6GIME4FSQGZNQGXO7FXQTA5AC XSGOCZRVJO3C2Z7ADWP5N6HTDKJLJ4LN5OY6RNXX3L42FZGGVRLAC Y4NA3JSN63RLATF4NNBPSR5CWF5Z7UEMWCGVX4B6NOAR47CGM4GQC 3BJ2OOF4F524G6UKVGOZVT6W3FSTSHHTKRJADUBZCHDXZWV3KANQC LVCBY444HPB4RRFMUAZPHVZ67IC3L6DB27AEMCW3DEXHLBF73TMQC LE6H6TP2M6KXREJG245JAKDNN6GKT6QSIZ5FJTLV3NYYX5GFKBCAC MFONX2CQ4V7HA5NSD6P5NDDBXYDSKIOCYUKRZXJ4ZER2OKJWT2HQC AV3TMWHWB3XBXQCT34UPMZBSIIKVXIGWQPNEFU4CZSBS3ZOF2CUQC NWUWP5QCMJ7ZZMLCVB74PW7HDEFB6ICEQHNDHCGG7UWDQNNLGVMQC ASLW3Z5PAVZSWJEMMMVZT226P44EKSAD47QS72JIFJESAI3RPN3AC LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC DMLFJIPOE4ZXUFQ25VVEZCMURP2UPJBBWDGQS3DPQVUNVBBQ4GDQC KATZLWENEIQMKKWIV4ZLXJ5HFUW6SU5K4ZU6NENBOL4XAAVTDUKAC AREBCIU2RU2RNHBWD4GARWEBKSL7HDFGDLII22H56OJO2AQUOMLQC B62ICMDTN5V7R7RBL4JALFVKEMVOOVLRSJASRNYS6CGFWBEEF5JQC DMN63LCKBTJZN3X2XKYFV2XY3AEKDRJJTKBANH3TT6ZDPELAA3MQC RX6575DZOHRUXQUZH34YZGPZJF4STUPLBQDIVTINA2L6LVCKRIGQC 7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC B4X67DGLW77QLGPTMORE2EJ5K5VA3TWIU23HFUF4TZDODXQSFLRQC UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC SCXTTP2FDNB2A7F4XXGXSSOEKZQ7ODDGN5YBCTZXGZ22CLCEH3WQC 2PZXX7DNNOL5X3TF2ID22AGDHLHUHBPSAXQJR6EWG5YAXRJCAYWAC FMSYEPHQUC3RGEOEJ77OZ43JTIFITY56SOOKYPU4CKAVB4VP65FAC C3OUSRCHDUOJ6ELVDX6YWMQQVXDJLNEXTXWCDDAYWTKNPFPNSONAC WL3O4GOFGFEDGJ74LVMYJEIRSSZ3ZPIPY5FWAZJED3FPCTUV6NQQC ARNDCQD3NXQRD5CZFTBQOMID5RPPRRIK647T36FLGHMUN62MF7WAC QU4M6MULPGDMLHD2EHTSNQDSXRA5JZSXPDBZK3JANTSXABRSAE4AC SRYIUTTRZYQDYPLLXYKEHMYWC4EGBYPOT65M2HZEIGFG6SDMV7SQC NIETE75N7WEVCF7CVQQ4ARUIRI36RHUD4JD4WPWRM4IZUVHKT4JQC SWE3F3BLKHYMJEJLXNFH3MR2E6VDEYXJ6DL7QLPP47BJEKEUCAMAC XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC 4JNV6RTRY2UR3PZFMCNPRGCBSUAB7QTXYJCSYBIUAFMCCYVGN6PQC X7XW2G6JZTAZEW3DZOD5ZFKQVQTTFDLQ63WF6N4ODEQLO7TNZA6QC YF6CE2VBFK6K4V34PKBVYVQUTJRDDDCF2M5RMUGW6V6N2M4SUPLAC 67WUNL6XO77CNOMQEZ6BMV4LL2VTCMUBG57DQMCHNEMPCGYXLO3QC 4SWAT5KCKQV527NKELAXFQ5XA4Q5HONQXD4VBXMUZNPVPQKPCPNAC 4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC RRFPZKCRHPOJH4LDHYMJIQLN2ASWVJBZQW6DDUTBNQRDD7KMEAYAC 226KYCTMLIXUKD734QATY3JKWUUKC5Q3O75JT5EWIX6BKR7ANZSAC PNIGZ2ABVEGC6DN6PMKO6Z4M2SQ5EB7VZQT33YMEAUPEZVVEDJZQC T47W6FG7GCHCFEWR6MPVLDYVYG7Y4U4F3VY3FXKJNXV5R7HH544QC ZWPVFKZVSZ3ULWTC4KUZM7DMPCTTUJAZPHQJSD37V4ZGHPT6CCNAC S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC FIYBXLWALQINNQTHG2KNDUUTAQAZRDDLXW2XOVSKDKBADJ3XCJ4AC ZJU5Z2WDMI7HN4XJ3NVTVRHIZO2CGFUQ2FSKIRJVTQG47XHNCZFQC TXVVUZNKI2O5YJXC2N4GPG3RJFNC6LSC5IJZKD5XLS4LGJHD2H7AC GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC PR2LVM33MZJBAOQ5ZIQNX6CH4DPPG7JJLRCFAPTPLMXSKNJAGJQAC 4DEFHDNO2GUBYL4EGYEAR2IP3KBDXRU7UL7L4P7HEZY2UNR6IYJAC IGBJ3ZY5G73GTHPRNWKC6XMQDINRGCTIXKBHTEZ7JLUJS6H4JRBAC XII3RPTU6PPAY7U7TE4MTVPSOFZTOPF7ZKHMBGG2GHLAWPUFOKCQC WXZQJUZXMYS7R6ORNB7DWE5KEUXT262GXWMRPOJYYB4I3BFGYLLAC P2OYYNPHIBGOLT4CRLNTTIXDN34EU2QCMFQJNLAMUAHQXZTEDPXQC JDH6HBFB6QEXQXWQOKNXHFO2SQB64IQHQBASR3RGOTX6XAEYWMRAC HW7XKO7HRAUQVDVVKG5GA7PYAEL5J5GKVDPT2CKAD3FLERAY5HLAC WZNB427K3EUNV3FMVXLQTM4UIHER4FIKQXWLUUXRNQC3OQ33VQYAC WTUFDJICW653ERO6FH63XYGOZQRVY3DVLPIPFN4BMA4NJH5UD3LAC CQ24AVAI6SW3AHTIDMLPSTRRBEU6FHRF5I5FD6G5QIYE6PO4BQMQC NVD2HSEW2ONWNYDDCTOMZZOUP6NG4DCXI4LNYYIY4BQEBDMJQK5AC UPPUAHXHWKGQWDKOCVLR7RG3SHEUVKOUC5GRYCEUDGD6RNCOU5LAC JDZCDMUCQ7VENYVLB62KQWUIRGABID37OKATOKCBUPCDL7W75NPAC V4DWL5WBO2JCODVS5QQNWXDH4DAYZN3D5V3UDCHM2KKOMADOTEDQC LEGFIEUGVU2LZELGQH4TZTIJGKEVUHFTRGQ4Y2KGLSK7KNDI7BFQC RT4UZQXFGZCMWEP553GYPQKMYIKQHRJO7EZ73N76HJI45AW5O3DQC 5TG5LXU4DX65KMWCZ7YJHOB3VAETQAVBUHEUSQTPMA327XV2HQWAC 33ZMPQC6OXTESW7SRW765GRNJUEJRSYONRVZVIEUDAUEJ2PPMB4AC KEANRIMF5CGFVZ2XJYNFPOAKLXOSOJUOVA73IWBWOG576265ERHAC OEISFRW2B7E4YRJSWXNXBH2IAJO4O3LHNYFPFD3MBY57LYVRHMZQC X7X6JKZXOCG6NVLZLGNCQDFFXW4H3S77BVAJ5LS7ZHZ4GQVLMOMAC QUHEENPY2PYTEUS7C4R3CKE4FHSHGR2BIXB6EW676ESX3727PA3AC SKV6JBDAWUWTFECFSQARSNA3DDPUFCR7N3T7D5J35NYTEDMXLP3QC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC F2ZJ55CL3T66DFM34BQWCJNHIT4XJFCGTWTA5KESV6NHWFLTGUYAC 7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC AVCMVFA3MKCXHO6H44UK5KJNIHTGQV7UA7GYXM26VI6TXXU5ZN6QC 5ASC3STDYCNLZFEBN6UTMUCGDETHBR2OCBZCF5VIAZ5RRWLOTDYQC QWZR7TCGSJAKK755AVEKFIMF5CX5GQLQC46TLI6URKZO2NJ3O26AC B7DNCNY7SXL5WAW5B3XZP5KIQSBWOJ3N2YW46WOUQKTRBRRZ7YOQC 7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC DKRSOHZXL6EPSLKOKHF7GJXSZEJVY7CXGACSHWLM5B5FTRETWWCAC DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC W74555HMPXUQ72AGKBXC5P3STMMX5DZAW6ZESUDLNVJBCAG43PLAC S26C7QFN3OBMIHF5XRB5PKRCQVBY22OLUIJKTD4CEMHKWCWE457AC BRGAZR5AXWC2IALBVXO5SB354IRQEIRHSK55RZPGFI4AGIOD4LUQC 5JS3QSE3EIXSBVI4DATH2EIFD7QN3POAFEUM7MK4NRMPH5JOPAAQC GMCNF7YBSN7WQJNHSF3RV2NTHTVP4TABCNP7S26UEIHPAKNCPWGAC 5B5DP5S6A6LQMKZYVLQAEMHQZWFWYDHPCKQGRNSCNNYIBQYZ6BIQC NG53L53MSFQZAIVKHG54IEMXNJ33AYVPF2OZM4MMJFDKEJCGPBSAC T5XERKCC6UL2UI2HKE34BTKNINTOXOSDCBYGC3A3JY7XMKIQW4GQC Y2NYY7HWFZ2LQDK3ACSLGS37F2J2IJ5LRGCIMZYXLEOSVPD3A4DAC WKX3GD3EAZUV5PV5EXVB7CFYJOGMIOM3LPPPUAW3HTS2EFPF2EPAC 3KRKUK3HCBBZWS5MXFAMM4R5PGWWTSURBSFXEEZPRRCFAZ5EZTCAC XWEI2LM5HPH3F4Y5TS7B6FWXQLERWJP2MHW36KGYW5TIAOORHYUAC YENJVRGJY4Y3GK65BF7CE2IT4YSZBFQKVBFMFZZMX6EEC3O5V3ZQC LUGK6T7QQB7VZCQGXHPOUCUAO75U6COYCSESVFXOR5JEDMJNN3JAC 3CMMAOYW3XCVFBCT2RT6YH5BLVAWQT62QXXWWCMWIZKDFZBY4M2QC BUSA7O6EFBZVAG2RL5T7MD2WTWKOEKKIAAZ2VS4Y3L6ECT4HQR6QC M6J5C74JDM5ZYIDPN7QXUCP6L44S2Z5XTRJMZBBRYOHA62IGYXKAC OP6CTAKWCAU64JXQ3USQYR5E5IFHQHNCACII5UMVRXUTZXJQOAZAC Y5YQ2AXS6XTWCHEQFDXRYU2IDQTBW7WXNJFES22GSKYQ2JGZ3U5AC UJTB5VR2BSQSN2QRTLZPM2MDNHQ6KKRCPOBESWSM24N2PTWPRRHQC KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC U56SICUKK36SJAG3QKV4WGDSAXOW5BELRPZGHTRAMZVUV56AESVAC 2YL37AGHLFOMIF3GCTVQGGV2RNNWETWM6ZMUHO3QEWDVBFFSFAKQC BFCFMN2BXNLXJCYYCL2V2XTDQQNM3PJPSRB6CU76FM3332NC7GMAC C5VA63WAQRWPENIMXRPUPZLZJMC77PL2B3A77HYFWDCZU5QDG7VQC QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC AOXEL2V6ICXEIRWXB76LJARWP3NPKG2L4UFYOIQUALUJU4ZLE3UQC USSKCWQTF6BTE3SFLQVCT6RZHU2R7URWFC7EPO2EN3Z6U4IEQ7GQC 25EX6COTFUVEIGQMCJ47FDSEKASVVO74LPJ4ZS66ZYUYXD5G3N3QC M6MBPHNAERUXYJ7KHK5FE2B44CLBY4M5MR5KY74HVDFNHVLOEQIAC LFBNFE3PZBXTR2ROPKYPARUWLJAYWAKGTS7VBWADZWVVSJ5CLX6AC CXMQZDNQ32IQ6S6V5HVIGIFUDYZLIECP4H63YMWVLDCXNII7NHOQC P5TRGRH7XMQSPCZKM5IEEO34TY6WMLGHHX7BU6Y453JFRXLUR2VQC M6IHSU5JWCTOTUSPCVVHMAQ4XJDGQJOLZTTN5BGKEOS4B6Z7IOWAC XJQT4B4TMM6R5AXQZTOQOJV25JXRD5P27OSFXZBFLBV4WUZRSTQAC 32GG34SJYCDQC4CO7FXCFJ6SDARRQ3EEP53XJITL5XBEKED6EAIAC TRNEOO3YKZSUGYTJZDDXZTJFQJXY6PWKBDJXAOLY3FZAD6WHTUTQC 3IJHKZOTXLU7B6F4UIKXCQCPXEVLKRX2M3VWAAPGRLL24IIP2T2QC OMTU7OMVWDVAGJCQGQJDZ3YU252T6IM2LPS2ZMPWB7MIXCJK62AQC 5CRNBCK3AH6UGZN4R5MZ47UCVYYA3CKFXYPKEPZWRTBJ5PIGDB6AC IYIGI5ZDHYV463AFYH7BZVIJOMNHTMPL4VZU7DHSXKFFWAPTPD5AC F4FAPEZ5P5CPHZIHUSRYULB3LY4LOJCUC7DZAYVL77LFFBUBCUNAC SPWOUV6ZNHLBSAX455ACJDBEJYVFHGO4H76L4NPAE5DF6BEAK34QC NV34PXZWSDIIPPJ3HHQIHB4M5UV66QIHOCUEHCSAACMBM765GX4QC LH4OYDEWEON5QNUCM74R7MNBJDP7O4XRETY74ZMYSXUXYQV427PAC 3OFG2YD2UOHC6UA7H7LWKOWCNFFSTDOXAA6L3KC335OF5RV3YOYQC B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC EHP6PYCIPYQ3KF4JFGBTZXEUQHN3FVAH4NUWEOWDDNKGPYVOTOJQC QMN4QZWL4LOQMJ7A56O5WXH6J5TBLNA63XWIL34DNU7J3FVQI2UQC EMOBSWJHHB4V6WVMZL7JCF2V3KZN454Z6NS346OKFPMBNO24EJDQC 22ORIULMB2NHLFZNJFK2AF275Q6XBKOBE4ZRMOADY64VK5FAUUSQC 2E4RV454MTTCKYLKMSHEEAFPNAFVUXXPBZV3XP6V7QMF4BBWE7TAC SFWCESFCUEVKJ6ZQQX3Y5YTIQD5BC6MCVSLVZFRGRTU46BFLKKWAC PQ3SLWFD5CF33ZHBG2V7YJEKAL6HTSDYOV25OKUTBCW2QF7TL4AAC PSCYVKJ7DGXAL3V5U4O6AJTRV6Q3N3SHQWAZ73VIPRTE4W64F2XAC ZGUJWUFJ4NFFJ6PGXLFGQWCWBCZHPWGWI44NJHJEVPRG5L36PADQC ZJSJGWYEOMUS4VK7VWFVLKW2E42X7KPFLK6HAA5LN3URQWISQULQC W6JMQP26KNVIZOJTITBWR447OX63DUKBIQE442Q7QYLUUKJVBELAC REOC4SN5SYUZ6IDLV6I6XZ4MPKE36VAJXLCZ2SXYYZB3RECLXSLQC WQIEW3O4MANA2KKYRUWEZP44KHVJ4RRHEZTDXSF4EDELX66LO26QC LJK4ZQATLSB4MKZG3ARZX5V6RFGTN3NLCN6GTCUGJQKU26SOXMUAC 3RNRFLMD2X4RUFTDVITLXAP377YB6F6YMQLL3DAXSUZDZBTWSLRQC 7BREK7U6OWZ6YU3JDSJSH4CMNNULDYABCKCAUHGZIUJZBIRJS5WQC TVC7W7C2XKBQSD2IJFMWFVGXZAOD4EUOW43NAQTOF5KFMAUOJABQC 5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC NCRXRQNCAMQQOZCL7TBMKGM6TOGDAHR3GRXAVVB26FLGE2KUZC2QC PHBACPMH3F34GODHVDKNCMXWU373RJQGVTDLBFCCDLLWDXVYOLTAC NNG27Y5ZQAZX6UD7F7M4F6KEZBEDFXPEEC3LFUSX4ESKT7K6UJQAC IJNXE4Z7S7X3NG26GFV6UNZVEQ6HPXAKSCNPJEKU5DUQUDYJ34KAC OSGS3PH2L5CBTDVZCZS6OCFQNA4A7RMEXBYJQB7DDZBYYJW7QSSAC LOEVXFCKSHE3TCQSUSHOIHHVDJT3RFLE6U3VDI6JXAQTQI5KCJ4AC W3HLXYSWQCDQQIBXBQ47IDMN2HFS3ACTVR55EV5DBUKPHIAPAGOAC 2SFHLF7KGHAKSXERQRCHYY3BFDOZCU5RB6KTSHMFMAF76R7DV4KQC NW6P7VRKBFBQ2FRDZBXN7APJZPYC4SYCIA3MOOE2KZGX43IXNK2AC T2AYVN57EFJQLFUFLAZDXKDAFDGTDLQIEQWQZNYFWJZBYSTYH4QQC D7SLVLRNCYCBDYYRANHDG3JYEF25CFCSUY5FMF5KXVD5D4UZSDDAC PM65H4V4GNPVIJFUQW57DC3VDB7TRUUNXKVZONQKEFZSK3AXX5GQC XIDD2TZUOXG6DAMK7OQU5MUKVIEHQWJIJL5BVOTCVY33EPWJNX4QC KWKVXUJSWKBWPRXD6JVI6K4YHHHNRO525VHPPDQ52XCGQRUHVXQAC RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC WMHFDQKUDCUGM3R245LLVZ5NNEZSCXFDSTNMVS2O5EFUHHO7HU3AC CG4TL4AKSN4J7CMATZFJ5N7PSDCQXLS3QYX7PZ3K67KMMBT675OQC IAQLRRSOXHIU4XQNOFK5F6IUXCMMXSHDDETNYWFPV7YNWPIRIUOQC WUWTYSQ2Z7HI637WNO2J55LW6WLPBDF2ILH622T47ICW3AN7OWMQC ISSEUTHG7EH3QTFLS23GXFIOQXCI5HJPJMK6GWNFMC6NDRD2H34QC FSD7GIK3YLZXWLEH37BU6KV3IUCFGXPQL6IZ7H65YWNRBEKDBX5AC K7SLUAS7TC2T6AG5HMZHVMD4ANGAI42FBSZTB6CTHLSGY2CRY4LQC UTGQ25S6K4R2POPYLVF6A5ZU4PRTN3SIR4DL672HERNAE3RZP7AAC PES2QAPAJTLHZORDXNJWKK4VWRDCGXMOVVFI2TQALCPB5JUPHCVQC 3HGELZU7NELOQ635HZO6IJIYLBSNCJ5VPH46IE22KA3OSLEFK7AQC R2DQBWKIW7YUJB5SOQ7J274JIYRVX4H3ISFRPAL5RG2RVVP4G2KAC GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC WDEFQ6YABDQIGJXW5KT3OGR3EO6FZHXZELIRVIXQ4XDYTVOV5V6AC 5DIBLX3RXK752JKG2BQQM76GYEOMQ5E2YKTLROH3QQGHCVLAGRJQC SQDS2YBPOYDDDCW3GGARBZ2HQIUHCQKL7SSHKFQWDENOL5YNNVNQC L254F6ZIU2HWGLFFGPIORTN4C3TDQ3E5JZ7Z7GQA5AEDIKL6PKDAC VVEULZ7FMS53F6WZUJLNJ23URJMCCWHBUEDVGKI6R72JO2DLL5HQC UASSVST2AY5625MS67C4FMEVQFXEVTG2SOIHW4AVWE22PLP27VUQC GZ4FB5VKL4C22KK3GSKQPLJYMRGLFXUDCOBNEBC2OKK6KVZL3OSQC 6QOJM3P5IONWA3LWLN7YT7KZKNSFNIGNRLL5ZIKFRQ42BDURNAEAC 627CM2ZOKVBMPVPBYGWBWWPT2FBMVRRH2VDGPT6Z5XCVJ5R4YQWQC POP6UTTHSJGDU5NU7ENQJOZVFUHYM63HJ6HLPXDDLK7XFIP4XEIQC ADIVVYTV2MJ3XVRYDNBLPTAEACCNF27XZDCRVZFQEHRHPMZGNITQC S2LIBA2CLTZ6ZU66AUZ2CCNLCDOBSGWQGTZ6HFAFP2XSWAALGLSQC EUK6RUR53DH5VHNWUCK6LPU4IKDWPOLA7GFAJ6GABH6WIUT2DRBAC QCUMH3C7GXV7ZW444WT5SFAXQOJKJSE2YCQCEHMRYXCWF4QI7UMAC KBNY5FWKTEAKABFCLPC3QFKFSVZKAGXINPCIFV6WDSWFO4VCKNTAC YF2GZWXNV6NVFFEBEOYS67JQJQK2IUS5BZMGJW3XQPYIJYHQJCEQC Q3XHNSHW6FI4JCXSEABATRFBJPMCF7PXNG2K6ZQTRRPVMIZFHUBQC VXSORUQOM2VZA4CAZDC6KPAY373NQIN3UT7CXQXTRCYXO2WM62DAC TO43FWKHNIA5MVDOFXYHQODTLBQYEZKX5UIUGID57436UF7G2EXQC 4QKMTZSWYJYJ46HW2TXO6KBPJV4NPBXA4T3ZRRRDYZSAA77ULVZQC TPZWAV3USKO7RX4IGHLZKVPRN36K33PJPSZYL6FZMX4XBHTYOQYAC 7X3KS2DYACYTMNRE47MZSXC3RYRYUYDC5SOPRVWOIH6MQCHMEU7QC VIHJ3Z75JN7BXWNOPWV3CWQZEA7K5DK36EKHCYMZC7SOSJYH2XHQC W7KGGF2VUXLD6YH55EPIRQ5SF5VKVKT33P6RNKCFCVQ4QXOLQE7AC 67WH6I2XIMRRL26UM4FJJJZEMJIDPW5Q77FFNZGKWGTWS7GTCJ6QC ZBPS5ZTPF3DVTR5WET4XEFHYXU26CRHU2OHX3YO6PD4MTM2DUXAQC JN4GPMQCXOY5ICTLPLWP6DXBFULN4GMAEK7T4GXTZVIJAUUKBBYAC ZP2KE7A2LE7Z2S7AC45WE4CXDSEVDTWIMV2EM4IBUKXYJIDU6R7QC JJHOTW7LDUJ6DLUG2DTFWASCAFPGD2WBW7MHBSECJZU7PTJYWQDQC IGN3Q5YCLHXKWFZQRSRABCHW2JFW5TFVU7TM5EXE2EW7PDBBSQWAC DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC 23I5KJ245D43B6QYWS4TDQYJO2W2PKTDCLFBWPVAFDWS6L7NMGKQC AUXHSGS4EFOPZ6TVZYWNVOUDO7NYKUKE3HBKGQQWTALSVFOE3HAAC ZLQAAP55CJ77XIJN3DZVPT4GTTVLIBFJLIJJKI6L5UBSHX7VUK6AC 47WMN3S37XT6E2JM5S77CNZ37SD5IZKMSHINGY3CDY4QOOS7CLXQC VIFZ6DO6GWJGYMXJZKFZ2JYNPHNE74H3OFAOCPISQG7M7A4LCOHAC 4GYZYBY7FFORRNPIEFTV4ZM2C7Z6D2KTQOM537ZCC2YBXT2TNSHAC QS3ZRS3E6KL3YJHPKYEWCWJYRBJSXD5OOYF6Y25HZVECGPJRDB5QC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC EFWEYIB2R3DPD3JWIPU6LS6SFLPMYN7J7X4GBZR7DJWKHJ3UELSAC RQR4PTMGQLTRWLYRU3KXIIDGND7FBORESJWMWFVD3WYU5SISZXAAC HWTL2S7OVOJRJAAN66ZTT26HJDAOIW6RKAG5NFMNZJU63CTU2U5AC OFH2B2UZBK43QLFQBZ54FOCFLFNE54BZVDNCEUGDTBCUGNVZULIQC XKAJWK6MPHS3ZCZIPPLTIMOPF6AROGLRDDCS6EFE3IGE4AHT7MYQC GT7BSR54BVJKHUCLEBTELGBMNBFFDQW52EVC4XKVEMUVG2UGZMDAC HJV7BZBM752K5I47ILBQJJXSPODBBLGKDX5DWJTRDXPJ3V7AEVWAC GNS2MZLFRFGMG7L26JFBXEEALSIQNPUVA4NDUJH42Q5TEJDPPFDAC YYMVEFSCN7DGZC74WGG53XOLQF42KY2KGBXF2GOAXCR6WEE5VHCQC 72CQFK27NR37P2WQ32U4PEXXKMRIO7JEMJN2ZCPNVPZMT7UPFJJAC MG6LLF3XYCOEBQRX7TJ4MUTKM3IROYWUMZGCMYVW4TGDG36CJMJQC PFDWNTN3NEZCP6NKPIM2FK3KRVDBQUCGIAWWOU2DJVS4KWWJLYYAC AY3CBJCAR4XMZODH5N4DVJXXJF3B5HUKICRGO7KCTCFACAYVGN4QC WBAFNYODKTL3YSG3UOJITBJSTFYGJLIWKRNK6NMGIIP5TPC2BDGQC 2DORUQ4B574MDOOMRYWGU5I72AKHMCSTZ6B3VSHQBUQOZYHRC7FAC Z63Q4DA5J5TZAC5LN55UD4CLADUMU5Z73TGEVE2YUXCHIST2Y4QAC SJOTTUZMA3UTGT5D6LKUTBDP2CZFXT24FB5IAWCUFHSHLLACM75QC HIRKGUMNJPWKSVTR6TVBPD3MWNA63CEHCLCIPWEMGDFHVB3NPLDQC JXYRJYQUCKNTAAQOCMWEMJ6AKQRDJ2MQCLCN3754LQYPBO2XBNOQC EMZT3U3FL7R6L5Z3VFLJJVEC7BONJ7EJGONN2SSAIHK6L6HLQW5AC 4FQAKUKUO6PCAZ3N4HUR5XL6E4VA5UQUZ3AEDGRBLVY7W2LMWI7QC TJRYL3NXPW5IUGEV3YOC7JYWEXCZDBFPLT4AUG4P227WVKVB72ZAC SKWBAGSAB625IIN4UP3NCPRX2H3KCPC2LULHS2A7JVRLO3EUBJDAC JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC TPPJRQ2NTCV3GI2VRHEXQJREDERPJODCJWUG5WCOQGN4REPPPAMAC CHO4U5JC3RNTLXVIDXXJYZMOBZJ4VXW2GVJWDOTBRKK3AJ36LDLQC XLLXDEUCIHZOCZVXPNUIXAA5MIT7T7YRDMXKRMTO43UEFNVQ77FQC NLSZ4SHFD6LN6AWB3HLLKQTCKQW55ZHEW3YM7XRAVAKIPD3C3Q3AC 45QV77UI6QFW4234P365LD3FGJYRVWTT5455DPB324NG2NFQMKTQC SNTODFY3H2T4RLJ3BEMURGVHBWFJARLS6CFGZ2CVFFVKIH2DBBQAC 4PUWNQO7QMEWY3GSUHLBKMYOAI7ASYSRM32KDGTA7DLNDIGFAWFAC YMLVBQ6M27MECUVMU3BQP3WSGR7GW4XJMQIHLGHHWMVXHMMIXOYAC IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC UPJVSMMMHGRDUIJG4MZX6IBLQ4ODBF5Z3PF3RHDYTSAEOCVDZM5AC OXHOOJE4XEQKGI3JKURNSITG6CRQFAOFQ2EKKG6M5DCLN7LS4GUAC RZP5Z6JM74GVX2M6L2JOFRJ5VT2XGFHBNRDESVHSKF66PQKIW32QC GAUT326KHT3MMZPC7TJUOKGPZ6X624E7Z3IOFZEXYWUCORBCZTOAC XCEZ7OA2INNPSYNAB5U6JB7XNDAD5BKU26YLFPPZ3SEESFZKADQAC ECUYJLVGW6ADRLLF2WOMRG464VHOVDPP5OK5SAX2PHBUUC5FD4TQC 4PBRMB7TK2TXL7VSDKMUQMT4QFK3SGRU4TUVMEM7V2VS7KKKILAQC FEGNPOJI2SALUA2PVIXIQ2CIXFLSXD7UB7CNUSAAKV4L3POXCRFQC DT6OBXKHMLODEFK6UOIYCR4EJSVJKGYWCM35BVM5SN55K2736QHQC TAHSTXR7ROOMDFUSBUU4ZAIEWQLAS5CIRCTARLD4Q2BGNLSL7E5QC QYQKV4R47PTERXVFQNNWWQVICGSOMBHW6WM5TAZAKLIYOLLPUAJAC 6ME4TYV7ITXCAUMNVB27LRRHB72J2FVVZMJNS34IMAN57R37AE2QC ZCPJIAG7SEY2TUBAGOFWCEJYXSBT36CZU5VO7BWEGSLJ4K24B4TAC FTFRNIA27JTXPMWMX6GJ7ILWF7IOQQ6ELR2RF2YEFDFMLPF7QTOAC ODNAIEJW732NG7USKQKCIP4R4DAEYXXJQX6LY7TIN32NKE75454QC IVVTHLTTLOP5TSULXJWUSSXHOKYWVU3OWKYVK45A7RIB6V34MYQAC L4RYVF46EQKMVOEADGRG4WMPVTQ6NNFGYMU4SHAH6XJIKWVHT77QC 2G55UEHQ7554OPNSZVTUCZTWSHIFKGT56QEGSYFKCTX547I4AL3AC 7UQJTYJTHTDW55ZUKG4TINZTNALGPK5CB7UB7PJ2Y2SKQ5XOYP5AC CVC5FFFLGVRR3KPYDNB6RF4FNACV3LI3HPSR4MCUNZ4C3FSQYBDAC I4HQEB6RVIPJD3EQCNADMQJVGYAIIHTBGFVMPXHDNLYYG5JVIK4AC CRX4RG35C3DH57NIXCW4CG4X7SBMSX7TAJR2BAFQ4LQKCLYUNANQC MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC 247OW5JFN34ZV3GRVHRE25AXLLISUBPOX5YRGUE64BCM2V7QNEHAC LSAVA5BJQO4Z2MYXVQOM4AOXTCLKDNQMOS3DZ4SDNO4LI422LA3AC 3KAINFIXO7WNWGUGZB43EUNFRS2ZPBLQZDTY456QACMRHYIJ7WDAC VXMRWJ2CPHIB2NAHMZKUV7DAFA7GLVA32WDS53WNT3BIDHK6GOZQC 7THPBJV4J3WDSXWL2XOYYN7RZQILOCPKFWQRYKBA74J7WWBFRLSQC SJXOZ6J66G3S5VYGIZ3YHEUCKUF5554YEFUYLVBH7X4ALYSXKTGQC Y5RFQ6KNJCBQUSV2T6WDR7TPZLZYLOAWBVMUTHDXGOZQDZ2U423AC O7S3ILRELHICJXXTDGMF7KPPZWYHPYCNDPV2I77FZXXH4I454B4QC NQXYTPHC5ZBLJDIC5OVAUIDYYOXLPSGWUVD464ODH4KBHYGRDPPAC WFED7ME7LXUZCZY3TWX7PCPW4EAA55W626CM2OOYVJTLI2BWFTVAC FLAGBNUNSIQNFDN53CDWABJRTTFWDL4PG34AI474ZKPXDEPYHOAQC PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC XVFTIQ7MSVKQDMQ2HT3IY6FJOZFK4H6OFGTUAID5VGCA5BGVXYPAC YZXHBEKWQPY4BTKG5FFGLP3AIRBQSTKQVLJJHWKQEA3HTN4UHDYQC OPNCHI4UGN7WBIYPAXVV2C4N22ZSWROA435FJCY5UZVXKWRYQ42QC AS2IQQJNNCEQNXXKTGYHLB7RO3ZKCF4F7GK6FJH66BOOKDDRGNIQC TQLWCGVXVZ75H7MDBJD3DJDUFNW62WOAEDJUVKCHQTAXKBP47CSAC VYGSRD6AGPW3JDTKAMFIUEERMWNCV35SPWXH75XCX2SCMMR72RQQC WA2OSEGWVCESURYWNERNYWQKHE6SU4XQ4Q4HJY5B6ZPGNFUKQEEQC OHJE4HQ2B3HVV4BOPBRFKO6HBRTLZEI74P5PLJF5GLSRD2MFWXHQC GVW4OBPGXY2Q75HB7QHADZIOHKL22FI2BSJ2TM4K5SBJENBFTQKAC IHOKNI4O7EEW4UBMKHP6XOZNEIQSW4AYOT4O3JXUIXNNR553IQAQC UZ5623MOLKBTGBSRBJ4OBOEI4IEZSPV3NCV2DRMUZ3CHHJQVHIIAC AMAPVOFKH3YS5VCVOG2YNHXNDAZATMXFUL6ODZUIOF5OYYKBVKGAC QMPOKKUAUJ57DVDXG7CFWKICBKAE6NX27F7VS2RPXR7QMKDUQRSQC TX3LTXGB7TJ2QHLW2TEW6XTCTOW5A3KTZGBPBRTDTUYOZFFT3NLAC VGSJKJT74DZCMWQ6ETNAA33EDICJQRUOGSO6Y3QNZYIHYML7QMQQC FFDIVQMLFB3FCJJO5PUEDNAF527HG6P4EGAV6LHUD6NNACZHGBUQC 5K2ANIEXD3CPJM4XNKNPZINP2G4NT7SJBKRN62WNBUKJXFERTILQC CAGCTYIUYWDHQAJOLVLKOEV5HG6K5ZG7IDHONLIG6BDNCWZJAK4AC QNKMXCJSGRBEPE6ZNPEXU5EQIOME6EI4DECVC56GLOBCMGWWE6MQC AAVL2ZLM3DV3NS7LDYQJX2PL5ZBX2F3QOMCCFM5WRGXB53LZOTMQC GSJA56E3ORVIBCBA6T6WU2HE4DCLJ6NZPW76O7L54N4CYPKLJOWQC DYFOFUZ7UXOUYTID6UXX6HVU6OAFWYWMTSCG367S6TRLOOK5OXRAC KPSCSVGHKEQ4ENM3QQU2U3GYMV52NDFO5L6ML7YDPUKV3365OA3QC 6PAG7GHXHIYXJPPTEK4KZQZT4CL2SJDAGTVIUDB4KK66PVSTWUMAC TWYB52EBZRZEABTKQ7D6OWKMDKIGACWDUGNH5LP47QX4SKC3SFYAC 64VBM7SGUX7CVO5TMVOFU4A26BDOFQXKS6G5K7BXCSWKCCXEETOAC HAM54HXIO2245W6REO4RZDY2QMIH476AWWJSMYAMSYYNEBBJSHWAC 7TK2D5RI45FKCIQBHGU4FA75NSFZA3ZYFF2UYQJEGHCOV7I4XUGQC H7HOAPMVNVME2LOADK6US3IEE22NVLVJJ4VKGNM3ZGMFI5HJKQ2AC G3BHIB4AOVZ7P4DF7RMRI2C2O6HPSJYRMYQLF2LYBFLKHN6UUIZAC O6ZMFKDI3XO2SWPNEYHIPYFDWJR4TVDP5BAATK6LVCVETQID6E7AC QLMCSREGK2UUAPXZSZQKLZOLM4BCB7PAVCSR3DLFQS3EW3IMWQSQC IXLNOTBJGHKESBCTME6QAR6XVWFNCHYGMS62V62ZJEA7VLQHXO2QC 6DO3DRQ3FSJWBJD2ZW47BTNHCSBSOKCUV5HL34XO3CWPXP4QC6CAC FJQ2RENS2ATHQZUNEE5ZTSTHZ5VI6B36TQPAG3IUVBTULGVCCQ7AC O4DT3BQQ3XYPL6PQ72G6VPBAVHXZMEOLONFXNHXFMBXBVOYMB6VQC 7V4DCKFJCNBXFODMKJ6H3MCDUTSD4XVQ7D4D6XFCD4JNF4HCE4KAC 7Q7PY2DHSCW7Y663XJUTBFZTHXCF6KPIMZV2A6XORBCMMHIJWVGQC CHFE5WXJ3TY3K2PL3U5FXCQMQUWXGJH3XZ4JFLREUDXQIRSGZ2TQC I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC 3V52MSSK7QX7FWLLUW63DTWCBAJEK674EFZLKP45FLZ5KZKVARHAC VOXLOCDUHOAFIKRTSISYMOA2QFY3TSHQGR7BKGGQ2VZ5BUUKUQYAC EWC3J3FZP62OZWT3JBBPNPZUB7NR5ZF6MAJNMPCVV75E3TFBFYYAC 5CNYJQGEILRX2TAYBWMVECJ6D4OPV2CD6YPDIERS2SR77Z4LTZPAC X5OHFTHRXTI5KHFIYFJ6DB3W5MY3JUJKNTL4HF37MKABYNCOBOZAC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC KIJYTJG2XG7T4HEVZTCL2T4XDSMVLXDJMYYRRK6GY5PY7CGJLJTAC TFHMBVXTRA2LXBHE7L7OEWK37JQN5DWZ3HOACMN7PRWVJNCS4TYQC bool noisy(int loudness, int nois_x, int nois_y, const char *msg = NULL);void blood_smell( int strength, int blood_x, int blood_y);
bool noisy(int loudness, const coord_def& where, const char *msg = NULL);void blood_smell( int strength, const coord_def& where);
if (grid_distance( you.x_pos, you.y_pos, entry_x, entry_y ) == 1&& (entry_x != empty[0] || entry_y != empty[1])&& mgrd[entry_x][entry_y] == NON_MONSTER)
if (grid_distance( you.pos(), entry ) == 1&& (entry.x != empty[0] || entry.y != empty[1])&& mgrd(entry) == NON_MONSTER)
const coord_def pos = mon->pos();int walls = num_feats_between(you.x_pos, you.y_pos,pos.x, pos.y, DNGN_UNSEEN,DNGN_MAXWALL, true, true);
int walls = num_feats_between(you.pos(), mon->pos(),DNGN_UNSEEN, DNGN_MAXWALL,true, true);
for (int x = -radius; x <= radius; x++)for (int y = -radius; y <= radius; y++){int posx = env.sanctuary_pos.x + x;int posy = env.sanctuary_pos.y + y;if (posx <= 0 || posx > GXM || posy <= 0 || posy > GYM)continue;if (is_sanctuary(posx, posy)){env.map[posx][posy].property = FPROP_NONE;if (see_grid(coord_def(posx,posy)))seen_change = true;}}
for (radius_iterator ri(env.sanctuary_pos, radius, true, false); ri; ++ri){if (is_sanctuary(*ri)){env.map(*ri).property = FPROP_NONE;if (see_grid(*ri))seen_change = true;}}
for (stx = -1; stx < 2; stx++)for (sty = -1; sty < 2; sty++){if (sty == 0 && stx == 0)continue;//if ( one_chance_in(3) ) beam.range ++;if (!grid_is_solid(grd[you.x_pos + stx][you.y_pos + sty])&& env.cgrid[you.x_pos + stx][you.y_pos + sty] == EMPTY_CLOUD){place_cloud( CLOUD_FIRE, you.x_pos + stx, you.y_pos + sty,1 + random2(6), KC_YOU );}}
if (!grid_is_solid(grd(*ri)) && env.cgrid(*ri) == EMPTY_CLOUD)place_cloud( CLOUD_FIRE, *ri, 1 + random2(6), KC_YOU );}
{fall_into_a_pool(you.x_pos, you.y_pos, true,grd[you.x_pos][you.y_pos]);}
fall_into_a_pool(you.pos(), true, grd(you.pos()));
{fall_into_a_pool(you.x_pos, you.y_pos, true,grd[you.x_pos][you.y_pos]);}
fall_into_a_pool(you.pos(), true, grd(you.pos()));
const bool from_above = (you.x_pos == x && you.y_pos == y);const dungeon_feature_type old_grid = (from_above) ? DNGN_FLOOR: grd[you.x_pos][you.y_pos];const dungeon_feature_type new_grid = grd[x][y];
const bool from_above = (you.pos() == p);const dungeon_feature_type old_grid = (from_above) ? DNGN_FLOOR : grd(p);const dungeon_feature_type new_grid = grd(p);
ASSERT(swapping && mgrd[x][y] != NON_MONSTER ||!swapping && (mgrd[x][y] == NON_MONSTER|| mons_is_submerged( &menv[ mgrd[x][y] ])));
ASSERT(swapping && mgrd(p) != NON_MONSTER ||!swapping && (mgrd(p) == NON_MONSTER|| mons_is_submerged( &menv[ mgrd(p) ])));
// last updated 12may2000 {dlb}/* ************************************************************************ called from: monstuff* *********************************************************************** */void setup_dragon(monsters *monster, struct bolt &pbolt);// last updated 13feb2001 {gdl}/* ************************************************************************ called from: monstuff* *********************************************************************** */
void setup_dragon(monsters *monster, bolt &pbolt);
// last updated 7jan2001 {gdl}/* ************************************************************************ called from: monstuff* *********************************************************************** */void setup_mons_cast(monsters *monster, bolt &pbolt,spell_type spell_cast);// last updated 28july2000 (gdl)/* ************************************************************************ called from: monstuff* *********************************************************************** */bool mons_throw(monsters *monster, struct bolt &pbolt, int hand_used);bool mons_thrown_object_destroyed( item_def *item, int x, int y,
void setup_mons_cast(monsters *monster, bolt &pbolt, spell_type spell_cast);bool mons_throw(monsters *monster, bolt &pbolt, int hand_used);bool mons_thrown_object_destroyed( item_def *item, const coord_def& where,
// last updated 07jan2001 (gdl)/* ************************************************************************ called from: monstuff* *********************************************************************** */void setup_generic_throw(monsters *monster, struct bolt &pbolt);// last updated 12may2000 {dlb}/* ************************************************************************ called from: monstuff* *********************************************************************** */
void setup_generic_throw(monsters *monster, bolt &pbolt);
// last updated 12may2000 {dlb}/* ************************************************************************ called from: beam - fight - files - monstuff - mstuff2 - spells4* *********************************************************************** */
// last updated Dec17,2000 -- gdl/* ************************************************************************ called from: monstuff* *********************************************************************** */
if (mgrd[newx][newy] != NON_MONSTER|| newx == you.x_pos && newy == you.y_pos){
if (mgrd(newpos) != NON_MONSTER || newpos == you.pos())
{behaviour_event(mon, ME_DISTURB, MHITNOT,chief->x, chief->y);}
behaviour_event(mon, ME_DISTURB, MHITNOT, chief->pos());
static bool _mon_can_move_to_pos(const monsters *monster, const int count_x,const int count_y, bool just_check = false);static bool _is_trap_safe(const monsters *monster, const int trap_x,const int trap_y, bool just_check = false);
static bool _mon_can_move_to_pos(const monsters *monster,const coord_def& delta,bool just_check = false);static bool _is_trap_safe(const monsters *monster, const coord_def& where,bool just_check = false);
bool random_near_space(int ox, int oy, int &tx, int &ty, bool allow_adjacent,bool restrict_LOS, bool forbid_sanctuary)
bool random_near_space(const coord_def& origin, coord_def& target,bool allow_adjacent, bool restrict_LOS,bool forbid_sanctuary)
bool trans_wall_block = trans_wall_blocking(ox, oy);bool origin_is_player = (you.pos() == coord_def(ox, oy));int min_walls_between = 0;
const bool trans_wall_block = trans_wall_blocking(origin);const bool origin_is_player = (you.pos() == origin);int min_walls_between = 0;
if (!in_bounds(tx, ty)|| restrict_LOS && !see_grid(tx, ty)|| grd[tx][ty] < DNGN_SHALLOW_WATER|| mgrd[tx][ty] != NON_MONSTER|| tx == you.x_pos && ty == you.y_pos|| !allow_adjacent && distance(ox, oy, tx, ty) <= 2|| forbid_sanctuary && is_sanctuary(tx, ty))
if (!in_bounds(target)|| restrict_LOS && !see_grid(target)|| grd(target) < DNGN_SHALLOW_WATER|| mgrd(target) != NON_MONSTER|| target == you.pos()|| !allow_adjacent && distance(origin, target) <= 2|| forbid_sanctuary && is_sanctuary(target))
if (!friendly && !neutral && x == you.x_pos && y == you.y_pos&& mons_player_visible(mon) && !is_sanctuary(x, y))
if (!friendly && !neutral && p == you.pos()&& mons_player_visible(mon) && !is_sanctuary(p))
if (_mons_check_set_foe(mon, x, my - k, friendly, neutral)|| _mons_check_set_foe(mon, x, my + k, friendly, neutral))
if (_mons_check_set_foe(mon, coord_def(x, my - k), friendly, neutral)|| _mons_check_set_foe(mon, coord_def(x, my + k), friendly, neutral))
if (_mons_check_set_foe(mon, mx - k, y, friendly, neutral)|| _mons_check_set_foe(mon, mx + k, y, friendly, neutral))
if (_mons_check_set_foe(mon, coord_def(mx - k, y), friendly, neutral)|| _mons_check_set_foe(mon, coord_def(mx + k, y), friendly, neutral))
if (is_sanctuary(monster->x + mmov_x, monster->y + mmov_y)&& (!is_sanctuary(monster->x, monster->y)|| monster->x + mmov_x == you.x_pos&& monster->y + mmov_y == you.y_pos))
if (is_sanctuary(monster->pos() + mmov)&& (!is_sanctuary(monster->pos())|| monster->pos() + mmov == you.pos()))
static bool _is_trap_safe(const monsters *monster, const int trap_x,const int trap_y, bool just_check)
static bool _is_trap_safe(const monsters *monster, const coord_def& where,bool just_check)
if ((_mon_can_move_to_pos(monster, x-1, y, true)|| _mon_can_move_to_pos(monster, x+1,y, true))&& (_mon_can_move_to_pos(monster, x,y-1, true)|| _mon_can_move_to_pos(monster, x,y+1, true)))
if ((_mon_can_move_to_pos(monster, coord_def(x-1, y), true)|| _mon_can_move_to_pos(monster, coord_def(x+1,y), true))&& (_mon_can_move_to_pos(monster, coord_def(x,y-1), true)|| _mon_can_move_to_pos(monster, coord_def(x,y+1), true)))
if (is_sanctuary(monster->x, monster->y)&& (targ_x == you.x_pos && targ_y == you.y_pos|| mgrd[targ_x][targ_y] != NON_MONSTER))
if (is_sanctuary(monster->pos())&& (targ == you.pos() || mgrd(targ) != NON_MONSTER))
// XXX: Are these bounds still valid? (jpeg)// We should probably use in_bounds() instead.if (targ_x <= 7 || targ_x >= (GXM - 8)|| targ_y <= 7 || targ_y >= (GYM - 8)){
if (!in_bounds(targ))
const int which_trap = trap_at_xy(targ_x,targ_y);if (which_trap >= 0 && !_is_trap_safe(monster, targ_x, targ_y, just_check))
const int which_trap = trap_at_xy(targ);if (which_trap >= 0 && !_is_trap_safe(monster, targ, just_check))
// Let's not even bother with this if mmov_x and mmov_y are zero.if (mmov_x == 0 && mmov_y == 0)
// Let's not even bother with this if mmov.x and mmov.y are zero.if (mmov.x == 0 && mmov.y == 0)
if ((grd[monster->x + mmov_x][monster->y + mmov_y] == DNGN_CLOSED_DOOR|| grd[monster->x + mmov_x][monster->y + mmov_y] == DNGN_OPEN_DOOR)
if ((grd(newpos) == DNGN_CLOSED_DOOR || grd(newpos) == DNGN_OPEN_DOOR)
&& grd[monster->x][monster->y] != DNGN_DEEP_WATER&& grd[monster->x + mmov_x][monster->y + mmov_y] != DNGN_DEEP_WATER&& (monster->x + mmov_x != you.x_pos|| monster->y + mmov_y != you.y_pos)
&& grd(monster->pos()) != DNGN_DEEP_WATER&& grd(newpos) != DNGN_DEEP_WATER&& newpos != you.pos()
grd[monster->x + mmov_x][monster->y + mmov_y] = DNGN_FLOOR;set_terrain_changed(monster->pos() + coord_def(mmov_x, mmov_y));
grd(monster->pos() + mmov) = DNGN_FLOOR;set_terrain_changed(monster->pos() + mmov);
if (mmov_x || mmov_y || (monster->confused() && one_chance_in(6)))return _do_move_monster(monster, mmov_x, mmov_y);
if (mmov.x || mmov.y || (monster->confused() && one_chance_in(6)))return _do_move_monster(monster, mmov);
if (adjacent( menv[mon->foe].x, menv[mon->foe].y, mon->x, mon->y ))targ_adj = true;if (is_sanctuary( menv[mon->foe].x, menv[mon->foe].y ))
if (adjacent(menv[mon->foe].pos(), mon->pos()))targ_adj = true;if (is_sanctuary(menv[mon->foe].pos()))
for (int i = -1; i <= 1; i++)for (int j = -1; j <= 1; j++){if (i == 0 && j == 0) // current squarecontinue;
for ( radius_iterator ri(where, 1, true, false); ri; ++ri ){if ( *ri == where ) // current squarecontinue;
int posx, posy;for (int x = -1; x <= 1; x++)for (int y = -1; y <= 1; y++){posx = cx + x;posy = cy + y;if (!in_bounds(posx, posy))continue;
for ( radius_iterator ri(where, 1, true, false); ri; ++ri ){if (!allow_bleeding_on_square(*ri))continue;
feature_description(luaL_checkint(ls, 1), luaL_checkint(ls, 2), false,dtype, need_stop);
feature_description(coord_def(luaL_checkint(ls, 1),luaL_checkint(ls, 2)),false, dtype, need_stop);
bool move_item_to_grid( int *const obj, int x, int y );void move_item_stack_to_grid( int x, int y, int targ_x, int targ_y );
bool move_item_to_grid( int *const obj, const coord_def& p );void move_item_stack_to_grid( const coord_def& from, const coord_def& to );
mitm[new_item].quantity = quant_drop;mitm[new_item].x = 0;mitm[new_item].y = 0;mitm[new_item].link = NON_ITEM;
new_item.quantity = quant_drop;new_item.x = 0;new_item.y = 0;new_item.link = NON_ITEM;
mitm[new_item].slot = index_to_letter(item.link);mitm[new_item].flags |= ISFLAG_DROPPED;mitm[new_item].flags &= ~ISFLAG_THROWN;origin_set_unknown(mitm[new_item]);
new_item.slot = index_to_letter(item.link);new_item.flags |= ISFLAG_DROPPED;new_item.flags &= ~ISFLAG_THROWN;origin_set_unknown(new_item);
static bool _find_object( int x, int y, int mode, bool need_path, int range );static bool _find_monster( int x, int y, int mode, bool need_path, int range );static bool _find_feature( int x, int y, int mode, bool need_path, int range );
static bool _find_object( const coord_def& where, int mode, bool need_path, int range );static bool _find_monster( const coord_def& where, int mode, bool need_path, int range );static bool _find_feature( const coord_def& where, int mode, bool need_path, int range );
if ((mode == TARG_FRIEND || mode == TARG_ANY)&& x == you.x_pos && y == you.y_pos){
if ((mode == TARG_FRIEND || mode == TARG_ANY) && where == you.pos())
return (in_los(x, y) || Options.target_oos && is_terrain_seen(x, y)&& (is_stash(x, y) || is_mimic));
return (in_los(where) || Options.target_oos && is_terrain_seen(where)&& (is_stash(where.x,where.y) || is_mimic));
_find_square(ctrx, ctry, mfp, direction, find_targ, need_path, mode,range, false, _next_los(direction, los, wrap)): _find_square(minx, maxy, mfp, direction, find_targ, need_path, mode,range, false, _next_los(direction, los, wrap)));
_find_square(coord_def(ctrx, ctry), mfp, direction, find_targ, need_path,mode, range, false, _next_los(direction, los, wrap)): _find_square(coord_def(minx, maxy), mfp, direction, find_targ,need_path, mode, range, false,_next_los(direction, los, wrap)));
const std::string traveldest =_stair_destination_description(coord_def(mx, my));const dungeon_feature_type feat = grd[mx][my];mprf(MSGCH_DIAGNOSTICS, "(%d,%d): %s - %s (%d/%s)%s%s", mx, my,stringize_glyph(get_screen_glyph(mx, my)).c_str(),
const std::string traveldest = _stair_destination_description(where);const dungeon_feature_type feat = grd(where);mprf(MSGCH_DIAGNOSTICS, "(%d,%d): %s - %s (%d/%s)%s%s", where.x, where.y,stringize_glyph(get_screen_glyph(where)).c_str(),
if (!shift_monster(&menv[mon])&& !monster_blink(&menv[mon])){monster_teleport( &menv[mon], true, true );}
if (!shift_monster(m) && !monster_blink(m))monster_teleport( m, true, true );
static void _new_cloud( int cloud, cloud_type type, int x, int y, int decay,kill_category whose, unsigned char spread_rate )
static void _new_cloud( int cloud, cloud_type type, const coord_def& p,int decay, kill_category whose,unsigned char spread_rate )
if (!in_bounds(x, y)|| env.cgrid[x][y] != EMPTY_CLOUD|| grid_is_solid(grd[x][y])|| is_sanctuary(x, y) && !is_harmless_cloud(cloud.type))continue;int newdecay = cloud.decay / 2 + 1;if (newdecay >= cloud.decay)newdecay = cloud.decay - 1;_place_new_cloud( cloud.type, x, y, newdecay, cloud.whose,cloud.spread_rate );
int newdecay = cloud.decay / 2 + 1;if (newdecay >= cloud.decay)newdecay = cloud.decay - 1;_place_new_cloud( cloud.type, *ri, newdecay, cloud.whose,cloud.spread_rate );
static bool _beam_term_on_target(bolt &beam, int x, int y);static void _beam_explodes(bolt &beam, int x, int y);static int _affect_wall(bolt &beam, int x, int y);static int _affect_place_clouds(bolt &beam, int x, int y);static void _affect_place_explosion_clouds(bolt &beam, int x, int y);
static bool _beam_term_on_target(bolt &beam, const coord_def& p);static void _beam_explodes(bolt &beam, const coord_def& p);static int _affect_wall(bolt &beam, const coord_def& p);static int _affect_place_clouds(bolt &beam, const coord_def& p);static void _affect_place_explosion_clouds(bolt &beam, const coord_def& p);
if (tx == pbolt.target_x && ty == pbolt.target_y)beamTerminate = _beam_term_on_target(pbolt, tx, ty);
if (testpos == pbolt.target())beamTerminate = _beam_term_on_target(pbolt, testpos);
if (you.x_pos == x && you.y_pos == y && you.attribute[ATTR_HELD]|| mgrd[x][y] != NON_MONSTER &&mons_is_caught(&menv[mgrd[x][y]]))
if (you.pos() == p && you.attribute[ATTR_HELD]|| mgrd(p) != NON_MONSTER &&mons_is_caught(&menv[mgrd(p)]))
expose_items_to_element(beam.flavour, x, y, burn_power);rangeUsed += _affect_place_clouds(beam, x, y);
expose_items_to_element(beam.flavour, p, burn_power);rangeUsed += _affect_place_clouds(beam, p);
if (grd[x][y] == DNGN_STONE_WALL|| grd[x][y] == DNGN_METAL_WALL|| grd[x][y] == DNGN_PERMAROCK_WALL|| grd[x][y] == DNGN_CLEAR_STONE_WALL|| grd[x][y] == DNGN_CLEAR_PERMAROCK_WALL|| !in_bounds(x, y))
if (grd(p) == DNGN_STONE_WALL|| grd(p) == DNGN_METAL_WALL|| grd(p) == DNGN_PERMAROCK_WALL|| grd(p) == DNGN_CLEAR_STONE_WALL|| grd(p) == DNGN_CLEAR_PERMAROCK_WALL|| !in_bounds(p))
if (beam.flavour == BEAM_COLD && grid_is_watery(grd[x][y]))place_cloud( CLOUD_COLD, x, y, 2 + random2(5), _whose_kill(beam) );
if (beam.flavour == BEAM_COLD && grid_is_watery(grd(p)))place_cloud( CLOUD_COLD, p, 2 + random2(5), _whose_kill(beam) );
explode_map[x+9][y+9] = true;
explode_map(p + coord_def(9,9)) = true;const coord_def spread[] = { coord_def(0, -1), coord_def( 0, 1),coord_def(1, 0), coord_def(-1, 0) };const int opdir[] = { 2, 1, 4, 3 };
const int new_targ_x = you.x_pos + move_x;const int new_targ_y = you.y_pos + move_y;if (!in_bounds(new_targ_x, new_targ_y)|| !you.can_pass_through(new_targ_x, new_targ_y))
const coord_def& new_targ = you.pos() + move;if (!in_bounds(new_targ) || !you.can_pass_through(new_targ))
const int targ_x = you.x_pos + move_x;const int targ_y = you.y_pos + move_y;const dungeon_feature_type targ_grid = grd[ targ_x ][ targ_y ];const unsigned short targ_monst = mgrd[ targ_x ][ targ_y ];const bool targ_pass = you.can_pass_through(targ_x, targ_y);
const coord_def& targ = you.pos() + move;const dungeon_feature_type targ_grid = grd(targ);const unsigned short targ_monst = mgrd(targ);const bool targ_pass = you.can_pass_through(targ);
monsters* mon = &menv[you.beheld_by[i]];coord_def pos = mon->pos();int olddist = grid_distance(you.x_pos, you.y_pos, pos.x, pos.y);int newdist = grid_distance(you.x_pos + move_x, you.y_pos + move_y,pos.x, pos.y);
monsters& mon = menv[you.beheld_by[i]];int olddist = grid_distance(you.pos(), mon.pos());int newdist = grid_distance(targ, mon.pos());
you.prev_move_x = move_x;you.prev_move_y = move_y;move_x = 0;move_y = 0;
you.prev_move = move;move.reset();
move_x = 0;move_y = 0;you.turn_is_over = 0;
move.reset();you.turn_is_over = false;
for (int j = you.y_pos - 10; j <= you.y_pos + 10; j++){if (j < 0 || j >= GYM)continue;const int ipos = 45 + i - you.x_pos;const int jpos = 35 + j - you.y_pos;// Move terrain.grd[ipos][jpos] = grd[i][j];// Move item.
// Move terrain.grd(newpos) = grd(*ri);// Move item.
if (igrd[i][j] != NON_ITEM){mprf(MSGCH_DIAGNOSTICS,"Move item stack from (%d, %d) to (%d, %d)",i, j, ipos, jpos);}
if (igrd(*ri) != NON_ITEM){mprf(MSGCH_DIAGNOSTICS,"Move item stack from (%d, %d) to (%d, %d)",ri->x, ri->y, newpos.x, newpos.y);}
// Move monster.mgrd[ipos][jpos] = mgrd[i][j];if (mgrd[i][j] != NON_MONSTER){menv[mgrd[ipos][jpos]].x = ipos;menv[mgrd[ipos][jpos]].y = jpos;mgrd[i][j] = NON_MONSTER;}
// Move monster.mgrd(newpos) = mgrd(*ri);if (mgrd(*ri) != NON_MONSTER){menv[mgrd(newpos)].x = newpos.x;menv[mgrd(newpos)].y = newpos.y;mgrd(*ri) = NON_MONSTER;}
// Move cloud,if (env.cgrid[i][j] != EMPTY_CLOUD)move_cloud( env.cgrid[i][j], ipos, jpos );}
// Move cloud,if (env.cgrid(*ri) != EMPTY_CLOUD)move_cloud( env.cgrid(*ri), newpos );