the idea on its head.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10209 c06c8d41-db1a-0410-9941-cceddc491573
A4FBEPVX7W4H4R7AMJEGONTJC5N7SC2E3S3CV7RZYS2SAONUQBHQC
N73PR6EHLADBQDS2XACPYB27U6A3JV3UVI7JAFFOJKCMYCH7DDEQC
ZX2BGBBNWBF5NNDT2RXGNQYXC6RV5QIC4N4IFHK6CT6BM7NRCDLAC
KF5BNN42PTO35TBQD5CNMDXFAXHYCSQTBOOXZV7I3ML5VASUUT5AC
HBPUTW5HDHUEPB62DMJ6GGP2D2GLZB53O5VRTWDLQ4Z53NWB3MKQC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
YKUVKAIE3IVK377PRJKAXPM45POXYW3ATAKNI3XWKXVFBDRU5LSQC
PHZTAI6CW7JHKFW77MKDK75UCNWBXFK7VDD3D5ORVXUFWV3C3EVQC
QXJZCH66QBMFHOBQAFP2C5XNTMCUYGLUSOKXQUS5O7TODSVQ6GHAC
33QMQXTWFPR4LUBHEWTFGR74L5QJJDQTT5JZRBFTPDQBPXIHQIUQC
4SUUJM2DQUEWHDG3UKJUDZABLHFVF2CFUX5GVAWKT7BBBGR2ISTQC
JUCA26S3JSQFMZTBL7566ITHCOXXEFTFT7KDOWSUXA5JLZK5QJWAC
YRZBGNKW7PP3UJEKNO22FMMC7W5V52L4LZAWE3C3UKTO2NNSXA4QC
7IERR3KESLBDHEMGSFRYGA66PZBPGKPUGMFDCSFR3WDX7RXD5OTAC
TZLAHS2FQGDWDAO6OQFZIZALQCCRTCRBJZBNZFNQ4G7D5UYAIFQAC
542WW2UJM6XF22442ZD5NFMTS6HTDM74JKJ7GQHBLQ3D6C6T4C3AC
U6ILMKBXTQZYT62IGD2CALYNU4VQGRSTHN6QBFBU7BVUBHWYOEQQC
QON6K747RDVN55UTIJWNGIIGSDS7IHKB24JMHWSIMAQ572D7C3NAC
UX6M56N7WTF6B3OTKUFTONBUFZXNEL4SKQT22Q7IVFOBM25LKQ3AC
22ZPAVDZLX4R66AODFVA56HH4T3XU62UUON6LYZG3GGTXCTD3YVAC
WRDCASRSGOBY5RLVORAMRBSYKEWLLO7VZ4V5NQG2TKBWYNU4OZKAC
QXMDZLLFI565U6MG5VNDZGMHCUU7EE265YRQGTFMCH73ECG2I62AC
BCL6BB7HZXAJCAGKK6MZ7AGWNLFP46FIXRVGJ6LR3QLDE6XFQGVAC
HBXWZNXAJ7LUX7FYUIHQYBTRMWVJC6CAQQL3NNZHK5ETLIFEZJ7QC
ODEILHD5WHXOY5KEBTSUVTSVBUD2GCA5TXWWKIXO7XJY5MFHOKMQC
TZTHE3TEKUDMNLAXWKHO66SYIVCVCIOJLKF3MCHSNJTXCKTWK3LAC
IIUK3DT26O7F4IBKB6QFTPLO4EVKBH55SAEXLNQEQRLDGJ37NDGAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
PRQVFUGUGPKI2Q74ODEI3CYUJQB63CKC6ONQTE3BTOHKXG4JCNLQC
CLCS24K2K33W7OVPPNBQ476FYMY34IBODFEKSVB4UP3SOUHPT4AAC
IBOWTB7TZLGE454RTNFG3L3VCSBSU6A43AZ3TSAH545QFV7OEACAC
V4F3SDV2H4HBH6G6W5M3REN3BDSSE4IDF2RNM7PJMKRW3IDJ7PNAC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
ILOED4VB4I6VPAUTR75ZWX6MXDYXB5DO2EDK2UH67O3HNKWV23RQC
ZCRK2DJ5VKECRQXZTWT4NUDL2VT5ZHUK7NT6NQPLRJ56TDX5PJSAC
4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC
AVCMVFA3MKCXHO6H44UK5KJNIHTGQV7UA7GYXM26VI6TXXU5ZN6QC
S2LIBA2CLTZ6ZU66AUZ2CCNLCDOBSGWQGTZ6HFAFP2XSWAALGLSQC
TILE_FLAG_TRAV_EXCL = 0x00080000,
TILE_FLAG_EXCL_CTR = 0x00100000,
TILE_FLAG_SANCTUARY = 0x00200000,
TILE_FLAG_TUT_CURSOR = 0x00400000,
TILE_FLAG_RAY_OOR = 0x00800000,
TILE_FLAG_OOR = 0x01000000,
TILE_FLAG_WAS_SECRET = 0x00080000,
TILE_FLAG_TRAV_EXCL = 0x00100000,
TILE_FLAG_EXCL_CTR = 0x00200000,
TILE_FLAG_SANCTUARY = 0x00400000,
TILE_FLAG_TUT_CURSOR = 0x00800000,
TILE_FLAG_RAY_OOR = 0x01000000,
TILE_FLAG_OOR = 0x02000000,
tile_flavour &flv = env.tile_flv[x + m_cx_to_gx][y + m_cy_to_gy];
int offset = flv.special % tile_dngn_count(TILE_BLOOD);
m_buf_dngn.add(TILE_BLOOD + offset, x, y);
}
if (bg & TILE_FLAG_BLOOD)
{
tile_flavour &flv = env.tile_flv[x + m_cx_to_gx][y + m_cy_to_gy];
int offset = flv.special % tile_dngn_count(TILE_BLOOD);
m_buf_dngn.add(TILE_BLOOD + offset, x, y);
}
if (bg & TILE_FLAG_SANCTUARY && !(bg & TILE_FLAG_UNSEEN))
m_buf_dngn.add(TILE_SANCTUARY, x, y);
// Apply the travel exclusion under the foreground if the cell is
// visible. It will be applied later if the cell is unseen.
if (bg & TILE_FLAG_EXCL_CTR && !(bg & TILE_FLAG_UNSEEN))
m_buf_dngn.add(TILE_TRAVEL_EXCLUSION_CENTRE_BG, x, y);
else if (bg & TILE_FLAG_TRAV_EXCL && !(bg & TILE_FLAG_UNSEEN))
m_buf_dngn.add(TILE_TRAVEL_EXCLUSION_BG, x, y);
if (!(bg & TILE_FLAG_UNSEEN))
{
if (bg & TILE_FLAG_SANCTUARY)
m_buf_dngn.add(TILE_SANCTUARY, x, y);
if (bg & TILE_FLAG_RAY)
m_buf_dngn.add(TILE_RAY, x, y);
else if (bg & TILE_FLAG_RAY_OOR)
m_buf_dngn.add(TILE_RAY_OUT_OF_RANGE, x, y);
// Apply the travel exclusion under the foreground if the cell is
// visible. It will be applied later if the cell is unseen.
if (bg & TILE_FLAG_EXCL_CTR)
m_buf_dngn.add(TILE_TRAVEL_EXCLUSION_CENTRE_BG, x, y);
else if (bg & TILE_FLAG_TRAV_EXCL)
m_buf_dngn.add(TILE_TRAVEL_EXCLUSION_BG, x, y);
}
if (bg & TILE_FLAG_RAY)
m_buf_dngn.add(TILE_RAY, x, y);
else if (bg & TILE_FLAG_RAY_OOR)
m_buf_dngn.add(TILE_RAY_OUT_OF_RANGE, x, y);
}
return (unsigned int) grid_secret_door_appearance(coord_def(gx, gy));
case DNGN_DETECTED_SECRET_DOOR:
{
const dungeon_feature_type appear
= grid_secret_door_appearance(coord_def(gx, gy));
ASSERT(!grid_is_secret_door(appear));
return tileidx_feature((int) appear, gx, gy);
}
static void _erase_between(std::string& s,
const std::string &left,
const std::string &right)
{
std::string::size_type left_pos;
std::string::size_type right_pos;
while ((left_pos = s.find(left)) != std::string::npos
&& (right_pos = s.find(right, left_pos + left.size())) != std::string::npos)
s.erase(s.begin() + left_pos, s.begin() + right_pos + right.size());
}
case TRAP_ZOT:
return ("Zot trap");
case TRAP_NEEDLE:
return ("needle trap");
case TRAP_ALARM:
return ("alarm trap");