summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/l_mons.cc
diff options
context:
space:
mode:
authorDarshan Shaligram <dshaligram@users.sourceforge.net>2010-06-08 00:20:38 +0530
committerDarshan Shaligram <dshaligram@users.sourceforge.net>2010-06-08 00:22:21 +0530
commit156635a1e9723b107d8d20d0207d5c01a86a4a7a (patch)
treebb3c8f5553a1191c77949753e4ddccfd45c9787e /crawl-ref/source/l_mons.cc
parentfa4d29f457d4e7b1aed794dca063a68a32486009 (diff)
downloadcrawl-ref-156635a1e9723b107d8d20d0207d5c01a86a4a7a.tar.gz
crawl-ref-156635a1e9723b107d8d20d0207d5c01a86a4a7a.zip
[591] Test case to fail if a monster behind plants jumps back and forth between a set of locations when trying to move to the player.
Diffstat (limited to 'crawl-ref/source/l_mons.cc')
-rw-r--r--crawl-ref/source/l_mons.cc26
1 files changed, 25 insertions, 1 deletions
diff --git a/crawl-ref/source/l_mons.cc b/crawl-ref/source/l_mons.cc
index 7eacb20e35..bae5b3dc74 100644
--- a/crawl-ref/source/l_mons.cc
+++ b/crawl-ref/source/l_mons.cc
@@ -7,6 +7,8 @@
#include "dlua.h"
#include "initfile.h"
#include "libutil.h"
+#include "mon-act.h"
+#include "mon-behv.h"
#include "mon-util.h"
#include "mon-stuff.h"
@@ -228,9 +230,29 @@ static int l_mons_do_dismiss(lua_State *ls)
}
return (0);
}
-
MDEFN(dismiss, do_dismiss)
+// Run the monster AI code.
+static int l_mons_do_run_ai(lua_State *ls)
+{
+ ASSERT_DLUA;
+ monsters *mons = clua_get_lightuserdata<monsters>(ls, lua_upvalueindex(1));
+ if (mons->alive())
+ handle_monster_move(mons);
+ return (0);
+}
+MDEFN(run_ai, do_run_ai)
+
+static int l_mons_do_handle_behaviour(lua_State *ls)
+{
+ ASSERT_DLUA;
+ monsters *mons = clua_get_lightuserdata<monsters>(ls, lua_upvalueindex(1));
+ if (mons->alive())
+ handle_behaviour(mons);
+ return (0);
+}
+MDEFN(handle_behaviour, do_handle_behaviour)
+
static int l_mons_do_random_teleport(lua_State *ls)
{
// We should only be able to teleport monsters from dlua.
@@ -393,6 +415,8 @@ static MonsAccessor mons_attrs[] =
{ "energy", l_mons_energy },
{ "add_energy", l_mons_add_energy },
{ "dismiss", l_mons_dismiss },
+ { "run_ai", l_mons_run_ai },
+ { "handle_behaviour",l_mons_handle_behaviour },
{ "experience", l_mons_experience },
{ "random_teleport", l_mons_random_teleport },
{ "set_prop", l_mons_set_prop },