==============================================================
Replace InitFrogbots in lists.qc by the following 2 functions:
==============================================================

void() InitFrogbots2 =
{
	test_enemy = find(world, classname, "path_corner");
	while (test_enemy)
	{
		if (!test_enemy.admin_code)
			remove_apply(test_enemy);
		test_enemy = find(test_enemy, classname, "path_corner");
	}

	SpawnRunes();

	LoadMarkers();
};

void() InitFrogbots =
{
	self.nextthink = time + 0.1;
	self.think = InitFrogbots2;

	frogbot_number = 0;
	while (frogbot_number < maxplayers)
	{
		new_bot = spawn();
		if (!first_frogbot)
			first_frogbot = new_bot;
		new_bot.score_pos = frogbot_number;
		frogbot_number = frogbot_number + 1;
		new_bot.colormap = frogbot_number;
	}

	postphysics = frogbot_spawned = spawn();
	postphysics.think = FrogbotPostPhysics;
};


=====================
In world.qc, replace:
=====================

	dropper.nextthink = time + 0.2;
===
by:
===
	dropper.nextthink = time + 0.1;

====================================
Replace DoFriction in botphys.qc by:
====================================

float friction_factor;

void() DoFriction =
{
	if (self.flags & FL_ONGROUND)
	{
		hor_velocity = self.velocity;
		hor_velocity_z = 0;
		hor_speed = vlen(hor_velocity);

		// sv_stopspeed = 100

	#ifdef QUAKE
		if (hor_speed > 100)
		{
			if (double_friction)
			{
				self.velocity_x = self.velocity_x * inv_sv_friction_framtime_2;
				self.velocity_y = self.velocity_y * inv_sv_friction_framtime_2;
				return;
			}
			else
			{
				self.velocity_x = self.velocity_x * inv_sv_friction_framtime;
				self.velocity_y = self.velocity_y * inv_sv_friction_framtime;
				return;
			}
		}
		else
		{
			if (double_friction)
			{
				friction_factor = (1 - (sv_friction_frametime_200 / hor_speed));
				if (friction_factor < 0)
					friction_factor = 0;
			}
			else
			{
				friction_factor = (1 - (sv_friction_frametime_100 / hor_speed));
				if (friction_factor < 0)
					friction_factor = 0;
			}

			self.velocity_x = self.velocity_x * friction_factor;
			self.velocity_y = self.velocity_y * friction_factor;
			return;
		}
	#endif // QUAKE

	#ifdef QUAKEWORLD
		if (hor_speed > 100)
		{
			self.velocity_x = self.velocity_x * inv_sv_friction_framtime;
			self.velocity_y = self.velocity_y * inv_sv_friction_framtime;
			return;
		}
		else
		{
			friction_factor = (1 - (sv_friction_frametime_100 / hor_speed));
			if (friction_factor < 0)
				friction_factor = 0;

			self.velocity_x = self.velocity_x * friction_factor;
			self.velocity_y = self.velocity_y * friction_factor;
			return;
		}
	#endif // QUAKEWORLD
	}
};