diff options
-rw-r--r-- | crawl-ref/source/delay.cc | 15 | ||||
-rw-r--r-- | crawl-ref/source/delay.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/item_use.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 9 | ||||
-rw-r--r-- | crawl-ref/source/traps.cc | 3 |
5 files changed, 27 insertions, 4 deletions
diff --git a/crawl-ref/source/delay.cc b/crawl-ref/source/delay.cc index e08e74998a..6877e9b598 100644 --- a/crawl-ref/source/delay.cc +++ b/crawl-ref/source/delay.cc @@ -236,7 +236,7 @@ void start_delay( delay_type type, int turns, int parm1, int parm2 ) push_delay( delay ); } -void stop_delay( void ) +void stop_delay( bool stop_stair_travel ) /*********************/ { if ( you.delay_queue.empty() ) @@ -355,10 +355,19 @@ void stop_delay( void ) // and would have to have a prompt... this works just fine. -- bwr break; - case DELAY_WEAPON_SWAP: // one turn... too much trouble - case DELAY_DROP_ITEM: // one turn... only used for easy armour drops case DELAY_ASCENDING_STAIRS: // short... and probably what people want case DELAY_DESCENDING_STAIRS: // short... and probably what people want + if (stop_stair_travel) + { +#ifdef DEBUG_DIAGNOSTICS + mpr("Stop ascending/descending stairs."); +#endif + pop_delay(); + } + break; + + case DELAY_WEAPON_SWAP: // one turn... too much trouble + case DELAY_DROP_ITEM: // one turn... only used for easy armour drops case DELAY_UNINTERRUPTIBLE: // never stoppable case DELAY_JEWELLERY_ON: // one turn default: diff --git a/crawl-ref/source/delay.h b/crawl-ref/source/delay.h index 0e3f57f06c..d82a369d53 100644 --- a/crawl-ref/source/delay.h +++ b/crawl-ref/source/delay.h @@ -71,7 +71,7 @@ struct ait_hp_loss }; void start_delay( delay_type type, int turns, int parm1 = 0, int parm2 = 0 ); -void stop_delay( void ); +void stop_delay( bool stop_stair_travel = false ); bool you_are_delayed( void ); delay_type current_delay_action( void ); int check_recital_audience( void ); diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index 58c6c760fd..463d10a27a 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -617,6 +617,8 @@ void wield_effects(int item_wield_2, bool showMsgs) break; case SPWPN_DISTORTION: + mpr("Space warps around you for a moment!"); + if (!was_known) xom_is_stimulated(32); break; diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 384af756ca..ac09d2fae2 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -2889,6 +2889,15 @@ static bool handle_special_ability(monsters *monster, bolt & beem) case MONS_MERMAID: { + // Don't behold player already half down or up the stairs + if ( !you.delay_queue.empty() && you.delay_queue.front().type ) + { +#ifdef DEBUG_DIAGNOSTICS + mpr("Taking stairs, don't behold.", MSGCH_DIAGNOSTICS); +#endif + break; + } + // won't sing if either of you silenced, or it's friendly or confused if (monster->has_ench(ENCH_CONFUSION) || mons_friendly(monster) || silenced(monster->x, monster->y) || silenced(you.x_pos, you.y_pos)) diff --git a/crawl-ref/source/traps.cc b/crawl-ref/source/traps.cc index 2635663816..ffa51a64e1 100644 --- a/crawl-ref/source/traps.cc +++ b/crawl-ref/source/traps.cc @@ -17,6 +17,7 @@ #include "beam.h" #include "branch.h" +#include "delay.h" #include "direct.h" #include "it_use2.h" #include "items.h" @@ -171,6 +172,8 @@ void player_caught_in_net() mpr("You fall like a stone!"); fall_into_a_pool(you.x_pos, you.y_pos, false, grd(you.pos())); } + + stop_delay(true); // even stair delays } } |