diff --git a/src/ai.c b/src/ai.c
index 910d3fd..16d4e42 100644
--- a/src/ai.c
+++ b/src/ai.c
@@ -111,6 +111,8 @@ static int ai_isstopped(lua_State* L);          /* Boolean isstopped() */
 static int ai_isenemy(lua_State* L);            /* boolean isenemy(number). */
 static int ai_isally(lua_State* L);             /* boolean isally(number). */
 static int ai_incombat(lua_State* L);           /* boolean incombat([number]) */
+static int ai_haslockon(lua_State* L);          /* boolean haslockon() */
+
 /* Movement. */
 static int ai_accel(lua_State* L);              /* accel(number); nuimber <= 1. */
 static int ai_turn(lua_State* L);               /* turn(number); abs(number) <= 1. */
@@ -153,6 +155,7 @@ static const luaL_Reg ai_methods[] = {
   { "isally",               ai_isally           },
   /* Get's. */
   { "incombat",             ai_incombat         },
+  { "haslockon",            ai_haslockon        },
   { "target",               ai_gettarget        },
   { "targetid",             ai_gettargetid      },
   { "rndpilot",             ai_getrndpilot      },
@@ -652,6 +655,11 @@ static int ai_incombat(lua_State* L) {
   return 1;
 }
 
+static int ai_haslockon(lua_State* L) {
+  lua_pushboolean(L, cur_pilot->lockons > 0);
+  return 1;
+}
+
 /* Accelerate the pilot based on a param. */
 static int ai_accel(lua_State* L) {
   double n;