confirming answer, and add an option trap_prompt that, if set to true (the default) will prompt the player before stepping on known mechanical traps trapwalk.lua considers unsafe.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3611 c06c8d41-db1a-0410-9941-cceddc491573
SKV6JBDAWUWTFECFSQARSNA3DDPUFCR7N3T7D5J35NYTEDMXLP3QC
F2ZJ55CL3T66DFM34BQWCJNHIT4XJFCGTWTA5KESV6NHWFLTGUYAC
23I5KJ245D43B6QYWS4TDQYJO2W2PKTDCLFBWPVAFDWS6L7NMGKQC
247OW5JFN34ZV3GRVHRE25AXLLISUBPOX5YRGUE64BCM2V7QNEHAC
E3X5HVN5UN75OMTJA6JFQBNZ54P37NDZLZZF7EFBZZC45KR73YGAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
2WRXQTGYDBLV46WRNVIUKGNA5QS563XZNNW3N2L6PVOCHIP2YGHQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
3V52MSSK7QX7FWLLUW63DTWCBAJEK674EFZLKP45FLZ5KZKVARHAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
S2LIBA2CLTZ6ZU66AUZ2CCNLCDOBSGWQGTZ6HFAFP2XSWAALGLSQC
X7X6JKZXOCG6NVLZLGNCQDFFXW4H3S77BVAJ5LS7ZHZ4GQVLMOMAC
MO63IVZZMRHBHHH5BTVC7YHHZ4AZIRJ7BMPPTVBCNJ67TMGJWQUAC
FT5TINI5SOYBAVF6UJAAESSTXKTUIPLOSPZOOZY2DOBK5RNM6TKQC
547JREUJXTZNYVGHNNAET5F5O5JYYGNTDQB6ABZNT7YX5EY64OHAC
3YK4G4IQBXW63HPGU5WRTV6L2FCMKAK4DOTCHFK2FNSB5B3Y3PVQC
TJISAZK5RWKXIIC5UTQNY4KT3UX3ASGBUQQNWZ7ZDULPRYFRZXQQC
72CQFK27NR37P2WQ32U4PEXXKMRIO7JEMJN2ZCPNVPZMT7UPFJJAC
VNIAJEGE3PYE6F6EAMCQDWMAS52EQTKJUPAFXK7ARCITZ326WTTQC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
UF4ODJOCV3ZL7DXRLLOFVWHUKKJX34FO4ZM6VJAWEJ3QVP3XZ2AAC
EHSY6DVGUMI6C67WKET3GDJVLWJWGYBYQONNDK5JVT7BCTHBEZVAC
std::string prompt = "Really step ";
prompt += (trap_type_at_xy(x,y) == TRAP_ALARM ?
"onto" : "into");
prompt += " that ";
prompt += feature_description(new_grid, trap_type_at_xy(x,y),
false, DESC_BASENAME, false);
prompt += '?';
// Zot traps require capital confirmation
bool harmless = (trap_type_at_xy(x,y) != TRAP_ZOT);
if (!yesno(prompt.c_str(), harmless, 'n'))
if (trap_type_at_xy(x,y) == TRAP_ZOT)
{
mpr("Do you really want to step into the Zot trap? "
"(Confirm with \"yes\".) ", MSGCH_PROMPT);
char buf[10];
if (cancelable_get_line(buf, sizeof buf)
|| strcasecmp(buf, "yes"))
{
canned_msg(MSG_OK);
you.turn_is_over = false;
return (false);
}
}
else
#ifdef CLUA_BINDINGS
// prompt for any trap where you might not have enough hp
// as defined in init.txt (see trapwalk.lua)
if (new_grid != DNGN_TRAP_MECHANICAL
|| !clua.callbooleanfn(false, "ch_cross_trap",
"s", trap_name(x, y)))
#endif
you.turn_is_over = false;
return (false);
std::string prompt = "Really step ";
prompt += (trap_type_at_xy(x,y) == TRAP_ALARM ?
"onto" : "into");
prompt += " that ";
prompt += feature_description(new_grid, trap_type_at_xy(x,y),
false, DESC_BASENAME, false);
prompt += '?';
if (!yesno(prompt.c_str(), true, 'n'))
{
canned_msg(MSG_OK);
you.turn_is_over = false;
return (false);
}