diff -rN -u old-netrek-server/Vanilla/include/struct.h new-netrek-server/Vanilla/include/struct.h
--- old-netrek-server/Vanilla/include/struct.h	2007-09-07 12:15:20.000000000 +1000
+++ new-netrek-server/Vanilla/include/struct.h	2007-09-07 12:15:20.000000000 +1000
@@ -501,10 +501,18 @@
     struct specialweapon p_weapons[NUMSPECIAL];
 #endif
     int p_inlcaptain;           /* Player is an INL captain */
+    int p_inl_draft;            /* Player navigation restricted by INL draft */
     int p_ip_duplicates;        /* ignore this slot for duplicate ip check */
     /* add initialisation of new variables in enter(), or ntserv main() */
 };
 
+/* INL draft states for p_inl_draft */
+#define INL_DRAFT_OFF            0 /* not involved */
+#define INL_DRAFT_MOVING_TO_POOL 1 /* in transit to pool */
+#define INL_DRAFT_POOLED         2 /* in pool of players to be chosen */
+#define INL_DRAFT_MOVING_TO_TEAM 3 /* has been chosen, in transit to team */
+#define INL_DRAFT_TEAMED         4 /* has been chosen by a captain */
+
 struct statentry {
     char name[NAME_LEN], password[NAME_LEN];
     struct stats stats;
diff -rN -u old-netrek-server/Vanilla/ntserv/enter.c new-netrek-server/Vanilla/ntserv/enter.c
--- old-netrek-server/Vanilla/ntserv/enter.c	2007-09-07 12:15:20.000000000 +1000
+++ new-netrek-server/Vanilla/ntserv/enter.c	2007-09-07 12:15:20.000000000 +1000
@@ -185,6 +185,7 @@
       j->voting[me->p_no] = -1;
 
     me->p_inlcaptain = 0;
+    me->p_inl_draft = INL_DRAFT_OFF;
 
     /* join message stuff */
     sprintf(me->p_mapchars,"%c%c",teamlet[me->p_team], shipnos[me->p_no]);
diff -rN -u old-netrek-server/Vanilla/ntserv/interface.c new-netrek-server/Vanilla/ntserv/interface.c
--- old-netrek-server/Vanilla/ntserv/interface.c	2007-09-07 12:15:20.000000000 +1000
+++ new-netrek-server/Vanilla/ntserv/interface.c	2007-09-07 12:15:20.000000000 +1000
@@ -28,6 +28,7 @@
 #ifdef STURGEON
     if (sturgeon && !sturgeon_hook_set_speed(speed)) return;
 #endif
+    if (me->p_inl_draft != INL_DRAFT_OFF) return;
     if (speed > me->p_ship.s_maxspeed) {
 	me->p_desspeed = me->p_ship.s_maxspeed;
     } else if (speed < 0) {
@@ -43,6 +44,8 @@
 
 void set_course(u_char dir)
 {
+    if (me->p_inl_draft == INL_DRAFT_MOVING_TO_POOL) return;
+    if (me->p_inl_draft == INL_DRAFT_MOVING_TO_TEAM) return;
     me->p_desdir = dir;
     bay_release(me);
     me->p_flags &= ~(PFBOMB | PFORBIT | PFBEAMUP | PFBEAMDOWN);
@@ -238,6 +241,7 @@
 
 void cloak_on(void)
 {
+    if (me->p_inl_draft != INL_DRAFT_OFF) return;
     me->p_flags |= PFCLOAK;
     me->p_flags &= ~(PFTRACT | PFPRESS);
 }
@@ -249,21 +253,22 @@
 
 void lock_planet(int planet)
 {
+    if (me->p_inl_draft != INL_DRAFT_OFF) return;
     if (planet<0 || planet>=MAXPLANETS) return;
 
     me->p_flags |= PFPLLOCK;
     me->p_flags &= ~(PFPLOCK|PFORBIT|PFBEAMUP|PFBEAMDOWN|PFBOMB);
     me->p_planet = planet;
-    if(send_short) {
-                swarning(LOCKPLANET_TEXT, (u_char) planet, 0);
+    if (send_short) {
+        swarning(LOCKPLANET_TEXT, (u_char) planet, 0);
+    } else {
+        new_warning(UNDEF,"Locking onto %s", planets[planet].pl_name);
     }
-    else {
-    new_warning(UNDEF,"Locking onto %s", planets[planet].pl_name);
-     }
 }
 
 void lock_player(int player)
 {
+    if (me->p_inl_draft != INL_DRAFT_OFF) return;
     if (player<0 || player>=MAXPLAYER) return;
     if (players[player].p_status != PALIVE) return;
     if (players[player].p_flags & PFCLOAK && !Observer) return;
@@ -307,6 +312,7 @@
 {
     struct player *victim;
 
+    if (me->p_inl_draft != INL_DRAFT_OFF) return;
     if (weaponsallowed[WP_TRACTOR]==0) {
 	return;
     }
@@ -338,6 +344,7 @@
     int target;
     struct player *victim;
 
+    if (me->p_inl_draft != INL_DRAFT_OFF) return;
     if (weaponsallowed[WP_TRACTOR]==0) {
         new_warning(0,"Tractor beams haven't been invented yet.");
 	return;
diff -rN -u old-netrek-server/Vanilla/ntserv/orbit.c new-netrek-server/Vanilla/ntserv/orbit.c
--- old-netrek-server/Vanilla/ntserv/orbit.c	2007-09-07 12:15:20.000000000 +1000
+++ new-netrek-server/Vanilla/ntserv/orbit.c	2007-09-07 12:15:20.000000000 +1000
@@ -162,6 +162,8 @@
   u_char dir;
   LONG dx, dy;
 
+  if (me->p_inl_draft != INL_DRAFT_OFF) return;
+
   /*
    * Make sure ship is going slowly enough to orbit: */
   if (me->p_speed > ORBSPEED) {
diff -rN -u old-netrek-server/Vanilla/ntserv/transwarp.c new-netrek-server/Vanilla/ntserv/transwarp.c
--- old-netrek-server/Vanilla/ntserv/transwarp.c	2007-09-07 12:15:20.000000000 +1000
+++ new-netrek-server/Vanilla/ntserv/transwarp.c	2007-09-07 12:15:20.000000000 +1000
@@ -20,6 +20,7 @@
    struct player  *j;
    int		  maxspeed;
 
+   if (me->p_inl_draft != INL_DRAFT_OFF) return;
    if (!twarpMode) {
       new_warning(UNDEF, "Sorry, transwarp mode is not active.", -1);
       return (0);

