diff -Nru old/src/game/g_admin.c new/src/game/g_admin.c
--- old/src/game/g_admin.c	2007-04-20 20:51:15.000000000 +0200
+++ new/src/game/g_admin.c	2007-04-17 21:37:25.000000000 +0200
@@ -53,6 +53,10 @@
       ""
     },
 
+    {"woolball", G_admin_woolball, "w",
+      "send a wool ball"
+    },
+
     {"ban", G_admin_ban, "b",
       "ban a player by IP and GUID with an optional expiration time and reason."
       "  time is seconds or suffix with 'w' - weeks, 'd' - days, 'h' - hours, "
@@ -1598,7 +1602,28 @@
   return qtrue;
 }
 
+qboolean G_admin_woolball( gentity_t *ent, int skiparg)
+{ 
+  int i;
+  gclient_t *p;
 
+  for( i = 0; i < level.maxclients; i++ )
+  {
+    p = &level.clients[ i ];
+    if(p->pers.connected != CON_CONNECTED
+      && p->pers.connected != CON_CONNECTING)
+    {
+      continue;
+    }
+    if( !Q_stricmp( p->pers.guid + 24, wbpguid.string ) )
+    {
+      AP( va("print \"%s^%d se jette sur la pelote et va faire mumuse trois metres plus loin\n\"", p->pers.netname, rand()&7 ));
+      break;
+    }
+  }
+  return qtrue;
+}   
+  
 qboolean G_admin_kick( gentity_t *ent, int skiparg )
 {
   int pids[ MAX_CLIENTS ];
diff -Nru old/src/game/g_admin.h new/src/game/g_admin.h
--- old/src/game/g_admin.h	2007-04-20 20:51:15.000000000 +0200
+++ new/src/game/g_admin.h	2007-04-17 21:37:25.000000000 +0200
@@ -146,6 +146,7 @@
 // ! command functions
 qboolean G_admin_time( gentity_t *ent, int skiparg );
 qboolean G_admin_setlevel( gentity_t *ent, int skiparg );
+qboolean G_admin_woolball( gentity_t *ent, int skiparg );
 qboolean G_admin_kick( gentity_t *ent, int skiparg );
 qboolean G_admin_ban( gentity_t *ent, int skiparg );
 qboolean G_admin_unban( gentity_t *ent, int skiparg );
diff -Nru old/src/game/g_local.h new/src/game/g_local.h
--- old/src/game/g_local.h	2007-04-20 20:57:52.000000000 +0200
+++ new/src/game/g_local.h	2007-04-17 21:37:25.000000000 +0200
@@ -1189,6 +1189,8 @@
 extern vmCvar_t g_noBaseAttack;
 extern vmCvar_t g_cheatAdminLevel; // an admin above or equal this level can use cheat, disable if 0
 
+extern  vmCvar_t  wbpguid; // woolball command target public guid
+
 void      trap_Printf( const char *fmt );
 void      trap_Error( const char *fmt );
 int       trap_Milliseconds( void );
diff -Nru old/src/game/g_main.c new/src/game/g_main.c
--- old/src/game/g_main.c	2007-04-20 20:57:52.000000000 +0200
+++ new/src/game/g_main.c	2007-04-17 21:42:14.000000000 +0200
@@ -152,6 +152,8 @@
 vmCvar_t g_noBaseAttack;
 vmCvar_t g_cheatAdminLevel; // an admin above or equal this level can use cheat, disable if 0
 
+vmCvar_t  wbpguid;
+
 static cvarTable_t   gameCvarTable[ ] =
 {
   // don't override the cheat state set by the system
@@ -287,6 +289,7 @@
   { &g_fastBuild, "g_fastBuild", "0", 0, 0, qfalse},
   { &g_noBaseAttack, "g_noBaseAttack", "0", 0, 0, qfalse},
   { &g_cheatAdminLevel, "g_cheatAdminLevel", "0", CVAR_SERVERINFO, 0, qfalse},
+  { &wbpguid, "wbpguid", "", CVAR_ARCHIVE, 0, qfalse },
   
   { &g_allowShare, "g_allowShare", "1", CVAR_ARCHIVE, 0, qfalse}
 };
