don't list the scroll you just read as one to use it on. This fixes the ugly issue where the player, forgetting the slot of the scroll just read, uses identify on itself, thereby wasting the scroll. For enchant armour and recharging it's a moot point as they don't work on scrolls anyway, but this way you can't figure out the subtype.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6251 c06c8d41-db1a-0410-9941-cceddc491573
4PM7YVPELDFA6GYVBXNBNR5WY7IVYOFPQSXJ4CLIT4RT3QHM3BCAC
S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC
QVLB4OZTMS5WWN4WCAKJY6OOUZQZMJU427M67VQSWXMACEPTJP6QC
N5FAAVHNKQZJV2G3JFRW7WKTXB3A4YY6GTVIMBCG5RSA65TKVBGQC
FEKRY3DYIDLWVBLAZN7W2WFNEKZPCAHABXOSM6K5RLTH5WY2NODQC
4RJJ3ZFKNROSHTDWAM4ZCDQGM3R6SWGFRRAMML6GXPZ3466GLL5AC
COLMJH3UIQFF4R5AV642OJK4HHGUIIPLNP5WGKLWWYNJV7ZGPI7AC
BWAQ3FHBBM6G3K3KYP75CRTR343RDQZJRYX5ZGYUEXYBAC3APDLAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
OXHOOJE4XEQKGI3JKURNSITG6CRQFAOFQ2EKKG6M5DCLN7LS4GUAC
EHP6PYCIPYQ3KF4JFGBTZXEUQHN3FVAH4NUWEOWDDNKGPYVOTOJQC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
CE6FLTWU5PYFBSGVTIJXQXRMHOIHQ3VJCKHQVIMUUAIFHQ73X7NAC
7V6TZHBSKK7AKY3SCYSP27QR2HP5N7HI3FI7V2QL7Y44OKKNI6IAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
SNTODFY3H2T4RLJ3BEMURGVHBWFJARLS6CFGZ2CVFFVKIH2DBBQAC
E3X5HVN5UN75OMTJA6JFQBNZ54P37NDZLZZF7EFBZZC45KR73YGAC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
ZGUJWUFJ4NFFJ6PGXLFGQWCWBCZHPWGWI44NJHJEVPRG5L36PADQC
M2HMYLYYXSP5XGX6MCI77IT6UW5K4YSEUJWHPQPYXVSW5L36BJ2AC
YM3U5YZEFIYLRJVDWQCSP75JL56WC36XLQSL5ZBT4IWSXYJRBCBAC
MDAJYB6STTZPNHRQ2X66MMMSONMKXTESLHJSFPGN7H3D3TOVBAVAC
AZ2RCXNVULJUSCBDBK3VARTUCTPEJXHTA7ALP73S4EXLJB6YYB5QC
KNCEMOC5TMWHTKCWF7CMYNHLGCXOLGMTXLEIHMEFBGM5FR26GRXAC
BBT5X7MV6GR4GXLEHYLXSCDKQUJOLQ2AC6MSL7ODR22FQACRGYPQC
ASLW3Z5PAVZSWJEMMMVZT226P44EKSAD47QS72JIFJESAI3RPN3AC
JBZ7NU4BB5PGQWCOSZHD5OQUHQIVOD4XGJLSJQ7BUGQEGPRTVGZQC
4D4U3FNTYBIIM7Q67O4ISUTYBMT5DP746B7VKLXXJDWPTARPAKDQC
LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC
Q4YYTFXYZUDBYWT37U354CJOAQMAAIWM5W72TAEGMEUKZIUZBMGAC
X6JIHUW4GZTWTNA7U6TTHRO4P2I7GNSS7TQDPQWVTIHBIG4NVWXQC
Q5YUZONIIPGRWOIQNL6DHRGLKF4V3K5XSZCBH2SL7DP4WPLDNOSQC
QGVAXJZXG2HUCLELWAN6LJJOBSP2BS6TIZMPJTDOAGI2E2SUCOCQC
NKX44AETZPMMRL4WO3OAVR2PSPTTX5PBEM77JH3L3DIPRZZJ34RQC
57E4T664CXRFPVW2BZBYI33UIHFS4PSEZURZYPSYSZK5DRLJJ5CQC
SBJWTFK2LCN7IIFREIZWTWV3U3LSZA2IPEOVXTN2ZZYHVEOHWBWQC
A7NKTYZ6VZC42TSSSDEWD5ROPE3P3M5I2QSNAVUMCYJ46PCXTDPQC
YBXZWBUWXXLLYKP5IHXU46AHJ4YO55NM5QE34I3DFB25NLPQXZPAC
MT_INVLIST,
OBJ_WANDS,
true, true, true, 0, NULL,
OPER_ZAP );
MT_INVLIST,
OBJ_WANDS,
true, true, true, 0, -1, NULL,
OPER_ZAP );
item_def &item = you.inv[item_slot];
// Get the slot of the item the scroll is to be used on.
// Ban the scroll's own slot from the prompt to avoid the stupid situation
// where you use identify on itself.
item_slot = prompt_invent_item("Use on which item?", MT_INVLIST,
OSEL_ANY, true, true, false, 0, item_slot);
switch (scroll)
{
case SCR_IDENTIFY:
// This can cause a stupid situation where you try to identify the
// very scroll you just read, causing you to waste the scroll.
if (prompt_failed(item_slot))
return (false);
item_def &item = you.inv[item_slot];
switch (scroll.sub_type)
{
case SCR_IDENTIFY:
int item_slot = (slot != -1) ?
slot :
prompt_invent_item(
"Read which item?",
MT_INVLIST,
OBJ_SCROLLS,
true, true, true, 0, NULL,
OPER_READ );
int item_slot = (slot != -1) ? slot
: prompt_invent_item( "Read which item?",
MT_INVLIST,
OBJ_SCROLLS,
true, true, true, 0, -1,
NULL, OPER_READ );
static void _get_inv_items_to_show(
std::vector<const item_def*> &v, int selector);
static void _get_inv_items_to_show( std::vector<const item_def*> &v,
int selector, int excluded_slot = -1);
select = invent_select(NULL, MT_INVLIST, invent_type,
MF_SINGLESELECT);
if ( isalpha(select) )
select = invent_select(NULL, MT_INVLIST, invent_type, -1,
MF_SINGLESELECT);
if (isalpha(select))
int ch = invent_select(
prompt,
mtype,
keyin == '*'? OSEL_ANY : type_expect,
selmode,
titlefn, &items, select_filter, fn,
pre_select );
int ch = invent_select( prompt,
mtype,
keyin == '*' ? OSEL_ANY : type_expect,
-1,
selmode,
titlefn, &items, select_filter, fn,
pre_select );