RGM7NKVVYCZ653RAS5NFFI6ZJ46WL2CUOK2TY7ESRVXJX2ENQCMAC QSE263YD32L7KR3FDLZ6E54AIVMC52C5AQSZPHRNURLZ26I6MJEQC G7DNYFW745Q567EF3TPR2FCQ4ATPN236ON7X5TLYC7TEPZW3BAFAC TK2DI6PDNMQWV3WGYEFTRNITLFJ6YXSEMKRDP3FIFGS4W4LSPSMQC FIYBXLWALQINNQTHG2KNDUUTAQAZRDDLXW2XOVSKDKBADJ3XCJ4AC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC 5DIBLX3RXK752JKG2BQQM76GYEOMQ5E2YKTLROH3QQGHCVLAGRJQC O3HPZYTEN566YZRQ27OKFJOEOKZOJX3YOTDVYAKTO6T2H2IUNRFAC MHI3OM6VJY6LZUD577O22XREHPOPMWDVR3UT2JWGFDAKD7SO6Y3QC JFDTUUUT6AKIGPBKGYFC7HZKGQUZOMG7EUWU4QYKSDVXXPQBBFHAC QW73U22SVPKFZ367CURWGZCUJZIG73MRKWE2EBRG535N4UUYKMNAC TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC R2DQBWKIW7YUJB5SOQ7J274JIYRVX4H3ISFRPAL5RG2RVVP4G2KAC NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC static bool _valid_monster_location(const mgen_data &mg,const coord_def &mg_pos)
static bool _valid_monster_generation_location(const mgen_data &mg,const coord_def &mg_pos)
const int montype = (mons_class_is_zombified(mg.cls) ? mg.base_type: mg.cls);const dungeon_feature_type feat_preferred =habitat2grid(mons_class_primary_habitat(montype));const dungeon_feature_type feat_nonpreferred =habitat2grid(mons_class_secondary_habitat(montype));if (!in_bounds(mg_pos))return (false);// Occupied?if (actor_at(mg_pos))
if (!in_bounds(mg_pos) || actor_at(mg_pos))
// Is the monster happy where we want to put it?if (!feat_compatible(feat_preferred, grd(mg_pos))&& (feat_nonpreferred == feat_preferred|| !feat_compatible(feat_nonpreferred, grd(mg_pos))))
const int montype = (mons_class_is_zombified(mg.cls) ? mg.base_type: mg.cls);if (!monster_habitable_grid(montype, grd(mg_pos),mons_class_flies(montype), false)|| (mg.behaviour != BEH_FRIENDLY && is_sanctuary(mg_pos)))