Allow using the special sequence {!more} in macros to disable -more- prompts while processing the macro expansion.
Fixed a couple of off-by-one errors in the level-map.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1557 c06c8d41-db1a-0410-9941-cceddc491573
JYCMD6WMNHXA53K4LLKVTNX6PLRLU25F6J2TYMPQXM2ENAE66NIAC CJNZ5CQY3OZ42EAVJCHT34QU5YA5W2VPAZ5BPXVRG734FGLRROXAC A3Q3DA3ZMEA3HZQ544YSRK3GPLWGCU7MWR4JLTXULEP2O2ECLKOQC PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC GCIZIUXO5TYROKDUYB3HAY7H7MRDTJNM7HR7DGSH7KXDIZC2LCDAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC ASFH3NFXSJ6AWVLIBJNTIC35HCOSHY42YQG2ELGPEYAULZUIRRRQC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC YHSVOROKPYS33Y4RYZRVZTE3G5LXOFX52HEDNLV6HIXOJYNOKH3QC if (Options.tutorial_left)message_out(crawl_view.msgsz.y - 1,LIGHTGREY,"--more-- ""Press Ctrl-P to reread old messages",2, false);elsemessage_out(crawl_view.msgsz.y - 1,LIGHTGREY, "--more--", 2, false);dokeypress = getch();while (keypress != ' ' && keypress != '\r' && keypress != '\n');
if (Options.tutorial_left)message_out(crawl_view.msgsz.y - 1,LIGHTGREY,"--more-- ""Press Ctrl-P to reread old messages",2, false);elsemessage_out(crawl_view.msgsz.y - 1,LIGHTGREY, "--more--", 2, false);
if (c == '}') {v.push_back(num);state = 0;} else if (c >= '0' && c <= '9') {num = num * 10 + c - '0';}// XXX Error handling
{const std::string::size_type clb = s.find('}', i);if (clb == std::string::npos)break;const std::string arg = s.substr(i, clb - i);if (!more_reset && (arg == "!more" || arg == "!m")){more_reset = true;v.push_back(KEY_MACRO_MORE_PROTECT);}else{const int key = read_key_code(arg);if (key)v.push_back(key);}state = 0;i = clb;
for (keyseq::iterator i = actions.begin(); i != actions.end(); i++)Buffer.push_back(*i);
keyseq act(actions.size());bool need_more_reset = false;for (keyseq::const_iterator i = actions.begin(); i != actions.end();++i){int key = *i;if (key == KEY_MACRO_MORE_PROTECT){key = KEY_MACRO_DISABLE_MORE;need_more_reset = true;}act.push_back(key);}if (need_more_reset)act.push_back(KEY_MACRO_ENABLE_MORE);Buffer.insert( reverse? Buffer.begin() : Buffer.end(),act.begin(), act.end() );
// Add macro to front:for (keyseq::reverse_iterator k = result.rbegin(); k != result.rend(); k++)Buffer.push_front(*k);
macro_buf_add(result, true);
bool is_synthetic_key(int key){switch (key){case KEY_MACRO_ENABLE_MORE:case KEY_MACRO_DISABLE_MORE:case KEY_MACRO_MORE_PROTECT:return (true);default:return (false);}}