summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/delay.cc
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2009-09-14 15:20:59 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2009-09-14 15:20:59 +0000
commit33bfc8a3d44515f59a0f2ad840ac03fe55606bab (patch)
treef3669ecc533ea3f2fc791d5ac401046f5c4d872d /crawl-ref/source/delay.cc
parenta58a5788137ad5c8e81286c534ade1e82840041c (diff)
downloadcrawl-ref-33bfc8a3d44515f59a0f2ad840ac03fe55606bab.tar.gz
crawl-ref-33bfc8a3d44515f59a0f2ad840ac03fe55606bab.zip
Fix multiple mouseclicks causing the same spell to be memorised several
times. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10676 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/delay.cc')
-rw-r--r--crawl-ref/source/delay.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/crawl-ref/source/delay.cc b/crawl-ref/source/delay.cc
index 9244f4e5da..c8a73876fb 100644
--- a/crawl-ref/source/delay.cc
+++ b/crawl-ref/source/delay.cc
@@ -301,6 +301,9 @@ void start_delay( delay_type type, int turns, int parm1, int parm2 )
ASSERT(!crawl_state.arena);
ASSERT(!crawl_state.is_repeating_cmd() || type == DELAY_MACRO);
+ if (type == DELAY_MEMORISE && already_learning_spell(parm1))
+ return;
+
_interrupts_blocked = 0; // Just to be safe
delay_queue_item delay;
@@ -701,6 +704,22 @@ bool player_stair_delay()
|| delay.type == DELAY_DESCENDING_STAIRS);
}
+bool already_learning_spell(int spell)
+{
+ if (!you_are_delayed())
+ return (false);
+
+ for (unsigned int i = 0; i < you.delay_queue.size(); ++i)
+ {
+ if (you.delay_queue[i].type != DELAY_MEMORISE)
+ continue;
+
+ if (you.delay_queue[i].parm1 == spell)
+ return (true);
+ }
+ return (false);
+}
+
// Check whether there are monsters who might be influenced by Recite.
// Returns 0, if no monsters found
// Returns 1, if eligible audience found