diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-03 23:09:10 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-03 23:09:10 +0000 |
commit | 30e4163e934e8f9dcd201e1cfba1a13a7f3b79c3 (patch) | |
tree | c10066a70df3e56145fc9d36cfc8986415b8d3d1 /crawl-ref/source/effects.cc | |
parent | 610652dba6b72b800879510c3e715c1aeb4e5747 (diff) | |
download | crawl-ref-30e4163e934e8f9dcd201e1cfba1a13a7f3b79c3.tar.gz crawl-ref-30e4163e934e8f9dcd201e1cfba1a13a7f3b79c3.zip |
[FR 1903593] Change identification process of
?recharging, ?enchant armour and ?identify.
If you read one of these scrolls and the type isn't known yet you are
prompted with "Modify which item?" (better message needed!) and get to
choose from the entire inventory.
If the chosen item can be usefully "modified" by the scroll (unID'd item
for identify, wand for recharging, enchantable armour for EA) the usual
effect takes place and the scroll is identified. (Reading other scrolls
of the same type will then only offer a more sensible selection of items.)
Otherwise, nothing happens.
Further, recharging and enchant armour now allow direct choice of the
item in question, and it doesn't even have to be wielded or worn.
I think this change actually makes the id game more interesting and also
improves the interface. Gameplay might dictate that we reintroduce the
"armour needs to be worn" rule, but that remains to be seen until after
some more playtesting.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3514 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/effects.cc')
-rw-r--r-- | crawl-ref/source/effects.cc | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc index ee8c14b65c..00e0b348af 100644 --- a/crawl-ref/source/effects.cc +++ b/crawl-ref/source/effects.cc @@ -27,6 +27,7 @@ #include "dgnevent.h" #include "food.h" #include "hiscores.h" +#include "invent.h" #include "it_use2.h" #include "item_use.h" #include "itemname.h" @@ -1697,12 +1698,37 @@ bool acquirement(object_class_type class_wanted, int agent, return (true); } // end acquirement() -bool recharge_wand(void) +bool recharge_wand(int item_slot) { - if (you.equip[EQ_WEAPON] == -1) + if (item_slot == -1) + item_slot = prompt_invent_item( "Charge which item?", MT_INVLIST, + OSEL_RECHARGE, true, true, false ); + + if (item_slot == PROMPT_ABORT) + { + canned_msg( MSG_OK ); return (false); + } + + item_def &wand = you.inv[ item_slot ]; + + if (wand.base_type == OBJ_WEAPONS + && !is_random_artefact( wand ) + && !is_fixed_artefact( wand ) + && get_weapon_brand( wand ) == SPWPN_ELECTROCUTION) + { + // might fail because of already high enchantment + if (enchant_weapon( ENCHANT_TO_DAM, false, item_slot )) + { + you.wield_change = true; - item_def &wand = you.inv[ you.equip[EQ_WEAPON] ]; + if (!item_ident(wand, ISFLAG_KNOW_TYPE)) + set_ident_flags(wand, ISFLAG_KNOW_TYPE); + + return (true); + } + return (false); + } if (wand.base_type != OBJ_WANDS && !item_is_rod(wand)) return (false); |