|
From: <gi...@cr...> - 2012-02-28 15:49:53
|
via cb4b11c835793ce8c0be024c32e6a53e177d60c5 (commit)
via 20f5c9dfeb90926582f883df1e35e21c8616015b (commit)
from 3173c5e96bf67ff8a23c018c8fae88e9f45837c5 (commit)
-----------------------------------------------------------------------
commit cb4b11c835793ce8c0be024c32e6a53e177d60c5
Author: Raphael Langella <rap...@gm...>
Date: Tue Feb 28 16:45:09 2012 +0100
Make fleeing monster blink_away when reading the scroll.
Instead of doing a random blink.
commit 20f5c9dfeb90926582f883df1e35e21c8616015b
Author: Raphael Langella <rap...@gm...>
Date: Tue Feb 28 16:11:43 2012 +0100
Simplify.
-----------------------------------------------------------------------
Summary of changes:
crawl-ref/source/mon-act.cc | 17 +++++++++--------
crawl-ref/source/teleport.cc | 10 ++++------
crawl-ref/source/teleport.h | 2 +-
3 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/crawl-ref/source/mon-act.cc b/crawl-ref/source/mon-act.cc
index fc0703a..2457824 100644
--- a/crawl-ref/source/mon-act.cc
+++ b/crawl-ref/source/mon-act.cc
@@ -53,6 +53,7 @@
#include "spl-book.h"
#include "spl-util.h"
#include "state.h"
+#include "teleport.h"
#include "terrain.h"
#include "traps.h"
#include "hints.h"
@@ -886,16 +887,16 @@ static bool _handle_scroll(monster* mons)
break;
case SCR_BLINKING:
- if (mons->caught() || mons_is_fleeing(mons)
- || mons->pacified())
+ if ((mons->caught() || mons_is_fleeing(mons) || mons->pacified())
+ && mons_near(mons))
{
- if (mons_near(mons))
- {
- simple_monster_message(mons, " reads a scroll.");
+ simple_monster_message(mons, " reads a scroll.");
+ if (mons->caught())
monster_blink(mons);
- read = true;
- ident = ID_KNOWN_TYPE;
- }
+ else if (!blink_away(mons))
+ break;
+ read = true;
+ ident = ID_KNOWN_TYPE;
}
break;
diff --git a/crawl-ref/source/teleport.cc b/crawl-ref/source/teleport.cc
index 8f794e9..1e61de7 100644
--- a/crawl-ref/source/teleport.cc
+++ b/crawl-ref/source/teleport.cc
@@ -134,19 +134,17 @@ void blink_other_close(actor* victim, const coord_def &target)
}
// Blink the monster away from its foe.
-void blink_away(monster* mon)
+bool blink_away(monster* mon)
{
actor* foe = mon->get_foe();
if (!foe || !mon->can_see(foe))
- return;
+ return false;
coord_def dest = random_space_weighted(mon, foe, false, false);
if (dest.origin())
- return;
+ return false;
bool success = mon->blink_to(dest);
ASSERT(success);
-#ifndef DEBUG
- UNUSED(success);
-#endif
+ return success;
}
// Blink the monster within range but at distance to its foe.
diff --git a/crawl-ref/source/teleport.h b/crawl-ref/source/teleport.h
index 9c28520..3c0e5ae 100644
--- a/crawl-ref/source/teleport.h
+++ b/crawl-ref/source/teleport.h
@@ -5,7 +5,7 @@ class actor;
class monster;
void blink_other_close(actor* victim, const coord_def& target);
-void blink_away(monster* mon);
+bool blink_away(monster* mon);
void blink_range(monster* mon);
void blink_close(monster* mon);
--
Dungeon Crawl Stone Soup
|