diff --git a/Source/Client/VGUI.c b/Source/Client/VGUI.c
index d872f9fd..d8f3c87f 100755
--- a/Source/Client/VGUI.c
+++ b/Source/Client/VGUI.c
@@ -76,30 +76,28 @@ Initialize all there is
*/
void CSQC_VGUI_Init( void ) {
string sTemp;
+ int iMOTDLength;
+ filestream fmMapDescr;
// First load the MESSAGE OF THE DAY
// TODO: Move this to the server and put strings into infokeys
- filestream fmMOTD = fopen( "motd.txt", FILE_READ );
- for ( int i = 0; i < 25; i++ ) {
- sTemp = fgets( fmMOTD );
- if not ( sTemp ) {
- break;
- }
- sMOTDString[ i ] = sTemp;
+
+ iMOTDLength = stof( serverkey( "motdlength" ) );
+ for ( int i = 0; i < iMOTDLength; i++ ) {
+ sMOTDString[ i ] = serverkey( sprintf( "motdline%i", i ) );
}
- fclose( fmMOTD );
// Now load the MAP DESCRIPTION
- fmMOTD = fopen( sprintf( "maps/%s.txt", mapname ), FILE_READ );
- if ( fmMOTD != -1 ) {
+ fmMapDescr = fopen( sprintf( "maps/%s.txt", mapname ), FILE_READ );
+ if ( fmMapDescr != -1 ) {
for ( int i = 0; i < 35; i++ ) {
- sTemp = fgets( fmMOTD );
+ sTemp = fgets( fmMapDescr );
if not ( sTemp ) {
break;
}
sMapString[ i ] = sTemp;
}
- fclose( fmMOTD );
+ fclose( fmMapDescr );
}
// We start on the MOTD, always
diff --git a/Source/FreeCS-CE.prj b/Source/FreeCS-CE.prj
index b8ccffcd..73b8c46a 100644
--- a/Source/FreeCS-CE.prj
+++ b/Source/FreeCS-CE.prj
@@ -60,7 +60,7 @@
-
+
@@ -72,7 +72,7 @@
-
+
@@ -114,18 +114,19 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Server/Footsteps.c b/Source/Server/Footsteps.c
index aadf5afc..8f689284 100755
--- a/Source/Server/Footsteps.c
+++ b/Source/Server/Footsteps.c
@@ -36,11 +36,15 @@ void Footsteps_Update( void ) {
return;
}
+ if ( self.movement_x < 200 || self.flags & FL_CROUCHING ) {
+ return;
+ }
+
vStep_x = fabs( self.velocity_x );
vStep_y = fabs( self.velocity_y );
fForce = ( vStep_x + vStep_y );
- fDelay = clamp( 0.1, 1 / ( fForce / 100 ), 1 );
+ fDelay = clamp( 0.1, 1 / ( fForce / 90 ), 1 );
traceline( self.origin + self.view_ofs, self.origin + '0 0 -48', FALSE, self );
diff --git a/Source/Server/Main.c b/Source/Server/Main.c
index f6348006..b14209ba 100755
--- a/Source/Server/Main.c
+++ b/Source/Server/Main.c
@@ -52,7 +52,7 @@ void SV_ParseClientCommand( string sCommand ) {
}
return;
} else if ( argv( 0 ) == "say_team" ) {
- localcmd( sprintf( "echo %s: %s\n", self.netname, argv( 1 ) ) );
+ localcmd( sprintf( "echo [TEAM %d] %s: %s\n", self.team, self.netname, argv( 1 ) ) );
for ( entity eFind = world; ( eFind = find( eFind, classname, "player" ) ); ) {
if ( eFind.team == self.team ) {
SV_SendChat( self, argv( 1 ), eFind, 1 );
@@ -125,6 +125,7 @@ It's the map entity, literally
=================
*/
void worldspawn( void ) {
+ int iMOTDLines = 0;
// Let's load materials.txt because someone thought this was the best idea
string sTemp;
filestream fileMaterial = fopen( "sound/materials.txt", FILE_READ );
@@ -140,6 +141,19 @@ void worldspawn( void ) {
fclose( fileMaterial );
}
+ // The message of the day.
+ filestream fmMOTD = fopen( "motd.txt", FILE_READ );
+ for ( int i = 0; i < 25; i++ ) {
+ sTemp = fgets( fmMOTD );
+ if not ( sTemp ) {
+ break;
+ }
+ localcmd( sprintf( "serverinfo motdline%i %s\n", iMOTDLines, sTemp ) );
+ iMOTDLines++;
+ }
+ localcmd( sprintf( "serverinfo motdlength %i\n", iMOTDLines ) );
+ fclose( fmMOTD );
+
for ( int i = 1; i < CS_WEAPON_COUNT; i++ ) {
precache_model( sWeaponModels[ i ] );
}
diff --git a/Source/Server/Player.c b/Source/Server/Player.c
index 21c4da66..d0527468 100755
--- a/Source/Server/Player.c
+++ b/Source/Server/Player.c
@@ -324,7 +324,7 @@ void PlayerPostThink( void ) {
}
if ( self.fFallVelocity > 200 ) {
- self.velocity = '0 0 0';
+ self.velocity *= 0.25;
}
self.fFallVelocity = 0;
}
diff --git a/freecs/csprogs.dat b/freecs/csprogs.dat
index c2a4941a..13bad44a 100644
Binary files a/freecs/csprogs.dat and b/freecs/csprogs.dat differ
diff --git a/freecs/progs.dat b/freecs/progs.dat
index 31deecf4..f6f8d562 100644
Binary files a/freecs/progs.dat and b/freecs/progs.dat differ