diff -ru Pingus.orig/src/Entrance.cc Pingus/src/Entrance.cc
--- Pingus.orig/src/Entrance.cc	Fri Aug 10 12:56:13 2001
+++ Pingus/src/Entrance.cc	Thu Nov 29 03:09:07 2001
@@ -99,9 +99,12 @@
 void
 Entrance::update(float delta)
 {
-  if (pingu_ready ())
+  if (pingu_ready () 
+      && (world->get_released_pingus() < world->get_allowed_pingus())
+      && (! world->check_armageddon()))
     {
       world->get_pingu_p()->add (boost::shared_ptr<Pingu>(get_pingu ()));
+      world->inc_released_pingus();
     }
 }
 
diff -ru Pingus.orig/src/TrueServer.cc Pingus/src/TrueServer.cc
--- Pingus.orig/src/TrueServer.cc	Fri Aug 10 12:56:13 2001
+++ Pingus/src/TrueServer.cc	Thu Nov 29 03:13:03 2001
@@ -48,19 +48,23 @@
   if (enough_time_passed()) 
     {
       client_needs_redraw = true;
-      GameTime::increase();
 
       if (fast_forward)
 	{
 	  // To let the game run faster we just update it multiple
 	  // times
+          GameTime::increase();
 	  Server::update(delta);
 	  world->update(delta);
+          GameTime::increase();
 	  Server::update(delta);
 	  world->update(delta);
+          GameTime::increase();
 	  Server::update(delta);
 	  world->update(delta);
 	}
+
+      GameTime::increase();
       Server::update(delta);
       world->update(delta);
     }
diff -ru Pingus.orig/src/World.hh Pingus/src/World.hh
--- Pingus.orig/src/World.hh	Thu Nov 22 21:08:35 2001
+++ Pingus/src/World.hh	Thu Nov 29 03:10:32 2001
@@ -132,6 +132,8 @@
   boost::shared_ptr<PLF> get_plf();
 
   unsigned int get_released_pingus() { return released_pingus; }
+  void         inc_released_pingus() { ++released_pingus; }
+  unsigned int check_armageddon() { return do_armageddon; }
   unsigned int get_allowed_pingus() { return allowed_pingus; }
   unsigned int get_pingus_out();
   unsigned int get_saved_pingus();
