diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-07-15 12:15:52 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-07-15 12:15:52 +0000 |
commit | d3c9ed21e760065a2faad5b371efdccf5fdace78 (patch) | |
tree | 6fa6a8fdd9516b3ab5c655d3490561033aa580a6 /crawl-ref/source | |
parent | 4d8f70826f5165f0098e427e8ccc35cf4d164693 (diff) | |
download | crawl-ref-d3c9ed21e760065a2faad5b371efdccf5fdace78.tar.gz crawl-ref-d3c9ed21e760065a2faad5b371efdccf5fdace78.zip |
Drop Control Teleport and Controlled Blink by one spell level each.
[1750729] Controlled Blink (the spell) now decays to semi-controlled blink on
levels that block teleport control and is less likely to be blocked by the
Abyss.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1873 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/acr.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/decks.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/item_use.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/spells1.cc | 19 | ||||
-rw-r--r-- | crawl-ref/source/spells1.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/spl-cast.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/spl-data.h | 4 |
7 files changed, 23 insertions, 10 deletions
diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc index abb5544e27..d85a080e7e 100644 --- a/crawl-ref/source/acr.cc +++ b/crawl-ref/source/acr.cc @@ -556,7 +556,7 @@ static void handle_wizard_command( void ) break; case 'b': - blink(); // wizards can always blink + blink(1000, true); // wizards can always blink break; case '~': diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc index 8b257d4d94..aca8099098 100644 --- a/crawl-ref/source/decks.cc +++ b/crawl-ref/source/decks.cc @@ -502,7 +502,7 @@ static void warp_card(int power, deck_rarity_type rarity) { const int control_level = get_power_level(power, rarity); if ( control_level >= 2 ) - blink(); + blink(1000, false); else if ( control_level == 1 ) cast_semi_controlled_blink(power / 4); else diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index a27ec3ae27..8e308e77c9 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -3501,7 +3501,7 @@ void read_scroll(void) break; case SCR_BLINKING: - blink(); + blink(1000, false); break; case SCR_TELEPORTATION: diff --git a/crawl-ref/source/spells1.cc b/crawl-ref/source/spells1.cc index d850fe9692..85107a9165 100644 --- a/crawl-ref/source/spells1.cc +++ b/crawl-ref/source/spells1.cc @@ -47,20 +47,33 @@ #include "stuff.h" #include "view.h" -int blink(void) +static bool abyss_blocks_teleport(bool cblink) { - struct dist beam; + // Lugonu worshippers get their perks. + if (you.religion == GOD_LUGONU) + return (false); + + // Controlled Blink (the spell) works quite reliably in the Abyss. + return (cblink? one_chance_in(3) : !one_chance_in(3)); +} + +int blink(int pow, bool high_level_controlled_blink) +{ + dist beam; // yes, there is a logic to this ordering {dlb}: if (scan_randarts(RAP_PREVENT_TELEPORTATION)) mpr("You feel a weird sense of stasis."); - else if (you.level_type == LEVEL_ABYSS && !one_chance_in(3)) + else if (you.level_type == LEVEL_ABYSS + && abyss_blocks_teleport(high_level_controlled_blink)) mpr("The power of the Abyss keeps you in your place!"); else if (you.duration[DUR_CONF]) random_blink(false); else if (!allow_control_teleport(true)) { mpr("A powerful magic interferes with your control of the blink."); + if (high_level_controlled_blink) + return (cast_semi_controlled_blink(pow)); random_blink(false); } else diff --git a/crawl-ref/source/spells1.h b/crawl-ref/source/spells1.h index e1f333b07a..0f6e1756b3 100644 --- a/crawl-ref/source/spells1.h +++ b/crawl-ref/source/spells1.h @@ -64,7 +64,7 @@ void big_cloud(cloud_type cl_type, kill_category whose, int cl_x, int cl_y, /* *********************************************************************** * called from: acr (WIZARD only) - item_use - spell * *********************************************************************** */ -int blink(void); +int blink(int pow, bool high_level_controlled_blink); /* *********************************************************************** diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc index 16c5287227..473f450fd0 100644 --- a/crawl-ref/source/spl-cast.cc +++ b/crawl-ref/source/spl-cast.cc @@ -1089,7 +1089,7 @@ spret_type your_spells( spell_type spell, int powc, bool allow_fail ) break; case SPELL_CONTROLLED_BLINK: - if (blink() == -1) + if (blink(powc, true) == -1) return (SPRET_ABORT); break; diff --git a/crawl-ref/source/spl-data.h b/crawl-ref/source/spl-data.h index 2dea41640e..a2b0e4509e 100644 --- a/crawl-ref/source/spl-data.h +++ b/crawl-ref/source/spl-data.h @@ -395,7 +395,7 @@ SPELL_CONTROLLED_BLINK, "Controlled Blink", SPTYP_TRANSLOCATION, SPFLAG_NONE, - 8, + 7, 0, NULL, false, @@ -1409,7 +1409,7 @@ SPELL_CONTROL_TELEPORT, "Control Teleport", SPTYP_ENCHANTMENT | SPTYP_TRANSLOCATION, SPFLAG_NONE, - 5, + 4, 200, NULL, false, |