diff --git a/secure/login.c b/secure/login.c
index 8eee5f3..c6d28c4 100644
--- a/secure/login.c
+++ b/secure/login.c
@@ -775,7 +775,6 @@
 static int load_player_object( int guestflag )
 {
     object ob;
-    int was_interactive;
 
     if ( sizeof(users()) >= 195 && !IS_WIZARD(loginname) ){
         write( "Die maximale Spielerzahl wurde bereits erreicht!!!\n"
@@ -860,9 +859,7 @@
     }
     else {
         /* Test if we are already playing */
-        was_interactive = 0;
         ob = find_player(loginname) || find_netdead(loginname);
-
         if (ob) {
             write( "Du nimmst schon am Spiel teil!\n" );
             write( "Verwende Deine alte sterbliche Huelle ...\n" );
@@ -872,7 +869,6 @@
                 // The other object is still interactive; disconnect it first
                 // and attach our connection to the player object.
                 remove_interactive(ob);
-                was_interactive = 1;
             }
             // Wenn Invislogin, P_INVIS setzen.
             if ( invis && IS_WIZARD(ob) )
@@ -886,7 +882,7 @@
             if ( (({int})ob->QueryProp(P_LEVEL)) == -1 )
                 ob->start_player( cap_name );
             else
-                ob->Reconnect( was_interactive );
+                ob->Reconnect();
 
             call_out( "remove", 2 );
             return 1;
diff --git a/std/player/base.c b/std/player/base.c
index 347a695..23e1577 100644
--- a/std/player/base.c
+++ b/std/player/base.c
@@ -537,8 +537,8 @@
 
     // Und Meldung ans Environment. Erst an dieser Stelle, weil der Spieler
     // u.U. durch ein BecomesNetAlive() noch bewegt wurde.
-    if ( !(flags & CNP_FLAG_SILENT) && environment()
-         && object_name(environment()) != NETDEAD_ROOM )
+    if (environment()
+        && object_name(environment()) != NETDEAD_ROOM )
     {
         if(query_hc_play()<=1)
           tell_room(environment(),QueryProp(P_NAME)
@@ -578,20 +578,17 @@
         || file_size("/gilden/"+gilde+".c")>0))
     catch(("/gilden/"+gilde)->notify_player_change(ME, rein); publish);
 
-  // und wenn nicht silent: dann noch die anderen Spieler informieren
-  if (!(flags & CNP_FLAG_SILENT))
-  {
-    string wer = getuid(ME);
-    int mag = IS_LEARNER(ME);
-    int invis = QueryProp(P_INVIS);
-    object *u = users() - ({ME}); // sich selber nicht melden 
-    if (mag && invis) {   // Invismagier nur Magiern melden
-        u = filter(u, function int (object o)
-            { return query_wiz_level(o) >= LEARNER_LVL; }
-            );
-    }
-    u->notify_player_change(capitalize(wer),rein,invis);
+  // dann noch die anderen Spieler informieren
+  string wer = getuid(ME);
+  int mag = IS_LEARNER(ME);
+  int invis = QueryProp(P_INVIS);
+  object *u = users() - ({ME}); // sich selber nicht melden 
+  if (mag && invis) {   // Invismagier nur Magiern melden
+    u = filter(u, function int (object o)
+        { return query_wiz_level(o) >= LEARNER_LVL; }
+        );
   }
+  u->notify_player_change(capitalize(wer),rein,invis);
 }
 
 /** Ruft im uebergebenen Objekt ein init() auf, sofern notwendig.
@@ -647,16 +644,9 @@
 /** Belebt einen Netztoten wieder.
   Wird im Login gerufen, wenn der Spieler netztot war. Aequivalent zu
   start_player()
-  @param[in] silent Wenn Flag gesetzt, werden div. Callbacks nicht gerufen und
-    Meldungen nicht ausgegeben. Wird vom Loginobjekt gesetzt, wenn das
-    Spielerobjekt bereits interaktiv ist und nur die Netzverbindung durch
-    Reconnect wechselt. *Nicht* zu verwechseln mit dem 'silent' von move & Co
-    oder durch P_INVIS!
-  @param[in] ip Textuelle Repraesentation der IP-Adresse, von der der Spieler
-    kommt.
   @see start_player()
 */
-varargs void Reconnect( int silent )
+varargs void Reconnect()
 {
     int num;
     string called_from_ip;
@@ -694,8 +684,7 @@
 
     if ( interactive(ME) )
     {
-        call_notify_player_change(
-                       CNP_FLAG_ENTER | (silent ? CNP_FLAG_SILENT : 0 ) );
+        call_notify_player_change(CNP_FLAG_ENTER);
     }
 
     if ( query_once_interactive(ME) )
diff --git a/std/player/moving.c b/std/player/moving.c
index a59d954..8c74e3d 100644
--- a/std/player/moving.c
+++ b/std/player/moving.c
@@ -54,8 +54,6 @@
 {
     // Andere wollen auch informiert werden ueber den (ggf. impliziten)
     // Logout.
-    // Achtung: *kein* CNP_FLAG_SILENT - das hat eine andere Bedeutung als das
-    // argument silent hier!
     if ( interactive(ME) )
         call_notify_player_change(CNP_FLAG_QUIT);
 
diff --git a/sys/player/base.h b/sys/player/base.h
index c460813..dbb2617 100644
--- a/sys/player/base.h
+++ b/sys/player/base.h
@@ -102,9 +102,6 @@
 #define CNP_FLAG_ENTER  0x1    // player enters mud
 #define CNP_FLAG_SLEEP  0x2    // player disconnects/sleeps
 #define CNP_FLAG_QUIT   0x4    // player quits or is removed
-// silent logon, don't call most callbacks, because the player is already
-// online, but net connection is replaced by new one.
-#define CNP_FLAG_SILENT 0x8
 
 // prototypes
 
