Use dungeon_terrain_changed() in dgn_place_monster() instead of doing "grd(pos) = FOO".
V6JNE5PJK7FQ5FPSFHXOBQHMBBYD2WSICQFSCY2OWBDP6BNMOWLAC
O3HPZYTEN566YZRQ27OKFJOEOKZOJX3YOTDVYAKTO6T2H2IUNRFAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
3IUPEZKGA22SJUYY6662PQHCBCBGKUAEOSXDWPCOQEJA6I42TBWAC
JDM27QE4HR52AYFSQE763BFF57ANOTF5MXKMO377PP5EXMN7SAOAC
grd(where) = habitat2grid(habitat);
dungeon_terrain_changed(where, habitat2grid(habitat));