diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-08-13 10:25:22 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-08-13 10:25:22 +0000 |
commit | 2de657642dded89bf7f04024b5e7f6eb4a00a18a (patch) | |
tree | cfd04b8277b524ab8ed1c4fc8ba5635a7ba05983 /crawl-ref/source/item_use.cc | |
parent | 3f3afe7a266723d33b84c19b09b45854dee24ebd (diff) | |
download | crawl-ref-2de657642dded89bf7f04024b5e7f6eb4a00a18a.tar.gz crawl-ref-2de657642dded89bf7f04024b5e7f6eb4a00a18a.zip |
FR 2819565: Abort when trying to read a known ?blinking or ?teleportation
or when zapping a known /teleportation at yourself if you know
you have a -TELE artefact equipped.
In the same situation, prompt when trying to evoke Blink or
cast one of the teleportation spells, in case the player
insists on training Evoc/Spellcasting/Translocations that way.
Also, automatically update the autoinscriptions when tweaking artefact
properties in wizard mode.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10532 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/item_use.cc')
-rw-r--r-- | crawl-ref/source/item_use.cc | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index 6f9739d703..ab92e696e2 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -3932,7 +3932,7 @@ void zap_wand(int slot) } int tracer_range = (alreadyknown && wand.sub_type != WAND_RANDOM_EFFECTS) ? - _wand_range(type_zapped) : _max_wand_range(); + _wand_range(type_zapped) : _max_wand_range(); message_current_target(); direction(zap_wand, DIR_NONE, targ_mode, tracer_range); @@ -3943,6 +3943,14 @@ void zap_wand(int slot) return; } + if (alreadyknown && wand.sub_type == WAND_TELEPORTATION + && zap_wand.target == you.pos() + && scan_artefacts(ARTP_PREVENT_TELEPORTATION, false)) + { + mpr("You cannot teleport right now."); + return; + } + if (!has_charges) { canned_msg(MSG_NOTHING_HAPPENS); @@ -4838,6 +4846,16 @@ void read_scroll(int slot) // Decrement and handle inventory if any scroll other than paper {dlb}: const scroll_type which_scroll = static_cast<scroll_type>(scroll.sub_type); + const bool alreadyknown = item_type_known(scroll); + + if (alreadyknown + && (which_scroll == SCR_BLINKING || which_scroll == SCR_TELEPORTATION) + && scan_artefacts(ARTP_PREVENT_TELEPORTATION, false)) + { + mpr("You cannot teleport right now."); + return; + } + if (which_scroll != SCR_PAPER && (which_scroll != SCR_IMMOLATION || you.confused())) { @@ -4845,8 +4863,7 @@ void read_scroll(int slot) // Actual removal of scroll done afterwards. -- bwr } - const bool alreadyknown = item_type_known(scroll); - const bool dangerous = player_in_a_dangerous_place(); + const bool dangerous = player_in_a_dangerous_place(); // Scrolls of paper are also exempted from this handling {dlb}: if (which_scroll != SCR_PAPER) |