Общие подкаталоги: src_old/asm_ia32 и src/asm_ia32
Общие подкаталоги: src_old/asm_x86_64 и src/asm_x86_64
Общие подкаталоги: src_old/g_doom и src/g_doom
Общие подкаталоги: src_old/g_heretic и src/g_heretic
Общие подкаталоги: src_old/g_hexen и src/g_hexen
Общие подкаталоги: src_old/gl и src/gl
Общие подкаталоги: src_old/g_raven и src/g_raven
Общие подкаталоги: src_old/g_shared и src/g_shared
Общие подкаталоги: src_old/g_strife и src/g_strife
Общие подкаталоги: src_old/huffman и src/huffman
diff -u src_old/lastmanstanding.cpp src/lastmanstanding.cpp
--- src_old/lastmanstanding.cpp	2014-10-05 22:47:04.000000000 +0300
+++ src/lastmanstanding.cpp	2015-01-10 18:26:13.962794054 +0200
@@ -94,6 +94,11 @@
 }
 
 //*****************************************************************************
+//	CVARS
+
+CVAR( Bool, sv_lmsonlyallowedweapons, false, CVAR_ARCHIVE)
+
+//*****************************************************************************
 //
 void LASTMANSTANDING_Tick( void )
 {
@@ -674,62 +679,21 @@
 bool LASTMANSTANDING_IsWeaponDisallowed( const PClass *pType )
 {
 	// [BB] Not in LMS mode, everything is allowed.
-	if (( lastmanstanding == false ) && ( teamlms == false ))
+	if (( lastmanstanding == false ) && ( teamlms == false ) && !sv_lmsonlyallowedweapons)
 		return false;
 
-	if ((( lmsallowedweapons & LMS_AWF_CHAINSAW ) == false ) &&
-		( pType == PClass::FindClass( "Chainsaw" )))
-	{
-		return true;
-	}
-	if ((( lmsallowedweapons & LMS_AWF_PISTOL ) == false ) &&
-		( pType == PClass::FindClass( "Pistol" )))
-	{
-		return true;
-	}
-	if ((( lmsallowedweapons & LMS_AWF_SHOTGUN ) == false ) &&
-		( pType == PClass::FindClass( "Shotgun" )))
-	{
-		return true;
-	}
-	if (( pType == PClass::FindClass( "SuperShotgun" )) &&
-		((( lmsallowedweapons & LMS_AWF_SSG ) == false ) ||
-		(( gameinfo.flags & GI_MAPxx ) == false )))
-	{
-		return true;
-	}
-	if ((( lmsallowedweapons & LMS_AWF_CHAINGUN ) == false ) &&
-		( pType == PClass::FindClass( "Chaingun" )))
-	{
-		return true;
-	}
-	if ((( lmsallowedweapons & LMS_AWF_MINIGUN ) == false ) &&
-		( pType == PClass::FindClass( "Minigun" )))
-	{
-		return true;
-	}
-	if ((( lmsallowedweapons & LMS_AWF_ROCKETLAUNCHER ) == false ) &&
-		( pType == PClass::FindClass( "RocketLauncher" )))
-	{
-		return true;
-	}
-	if ((( lmsallowedweapons & LMS_AWF_GRENADELAUNCHER ) == false ) &&
-		( pType == PClass::FindClass( "GrenadeLauncher" )))
-	{
-		return true;
-	}
-	if ((( lmsallowedweapons & LMS_AWF_PLASMA ) == false ) &&
-		( pType == PClass::FindClass( "PlasmaRifle" )))
-	{
-		return true;
-	}
-	if ((( lmsallowedweapons & LMS_AWF_RAILGUN ) == false ) &&
-		( pType == PClass::FindClass( "Railgun" )))
+	FString weapons(lmsallowedweapons);
+	char *weapon = strtok((char*)weapons.GetChars(), ",");
+
+	while (weapon)
 	{
-		return true;
+		if (pType == PClass::FindClass(weapon))
+			return false;
+
+		weapon = strtok(NULL, ",");
 	}
 
-	return false;
+	return true;
 }
 
 //*****************************************************************************
@@ -830,25 +794,14 @@
 	}
 }
 
-CUSTOM_CVAR( Int, lmsallowedweapons, LMS_AWF_ALLALLOWED, CVAR_SERVERINFO )
+CUSTOM_CVAR( String, lmsallowedweapons, LMS_ALLOWED_WEAPONS, CVAR_SERVERINFO )
 {
 	if (( NETWORK_GetState( ) == NETSTATE_SERVER ) && ( gamestate != GS_STARTUP ))
 	{
-		SERVER_Printf( PRINT_HIGH, "%s changed to: %d\n", self.GetName( ), (LONG)self );
 		if ( lastmanstanding || teamlms )
 			SERVERCOMMANDS_SetLMSAllowedWeapons( );
 	}
 }
-CVAR( Flag, lms_allowpistol, lmsallowedweapons, LMS_AWF_PISTOL );
-CVAR( Flag, lms_allowshotgun, lmsallowedweapons, LMS_AWF_SHOTGUN );
-CVAR( Flag, lms_allowssg, lmsallowedweapons, LMS_AWF_SSG );
-CVAR( Flag, lms_allowchaingun, lmsallowedweapons, LMS_AWF_CHAINGUN );
-CVAR( Flag, lms_allowminigun, lmsallowedweapons, LMS_AWF_MINIGUN );
-CVAR( Flag, lms_allowrocketlauncher, lmsallowedweapons, LMS_AWF_ROCKETLAUNCHER );
-CVAR( Flag, lms_allowgrenadelauncher, lmsallowedweapons, LMS_AWF_GRENADELAUNCHER );
-CVAR( Flag, lms_allowplasma, lmsallowedweapons, LMS_AWF_PLASMA );
-CVAR( Flag, lms_allowrailgun, lmsallowedweapons, LMS_AWF_RAILGUN );
-CVAR( Flag, lms_allowchainsaw, lmsallowedweapons, LMS_AWF_CHAINSAW );
 
 CUSTOM_CVAR( Int, lmsspectatorsettings, LMS_SPF_VIEW, CVAR_SERVERINFO )
 {
diff -u src_old/lastmanstanding.h src/lastmanstanding.h
--- src_old/lastmanstanding.h	2014-10-05 22:47:04.000000000 +0300
+++ src/lastmanstanding.h	2014-11-16 17:20:15.155587829 +0200
@@ -65,24 +65,12 @@
 
 } LMSSTATE_e;
 
-#define	LMS_AWF_PISTOL				0x00000001
-#define	LMS_AWF_SHOTGUN				0x00000002
-#define	LMS_AWF_SSG					0x00000004
-#define	LMS_AWF_CHAINGUN			0x00000008
-#define	LMS_AWF_MINIGUN				0x00000010
-#define	LMS_AWF_ROCKETLAUNCHER		0x00000020
-#define	LMS_AWF_GRENADELAUNCHER		0x00000040
-#define	LMS_AWF_PLASMA				0x00000080
-#define	LMS_AWF_RAILGUN				0x00000100
-#define	LMS_AWF_CHAINSAW			0x00000200
-
-#define	LMS_AWF_ALLALLOWED			( LMS_AWF_PISTOL|LMS_AWF_SHOTGUN|LMS_AWF_SSG|LMS_AWF_CHAINGUN| \
-									  LMS_AWF_MINIGUN|LMS_AWF_ROCKETLAUNCHER|LMS_AWF_GRENADELAUNCHER|LMS_AWF_PLASMA| \
-									  LMS_AWF_RAILGUN|LMS_AWF_CHAINSAW )
-
 #define	LMS_SPF_CHAT				0x00000001
 #define	LMS_SPF_VIEW				0x00000002
 
+#define LMS_ALLOWED_WEAPONS "Chainsaw,Fist,Pistol,Shotgun,SuperShotgun,Chaingun,RocketLauncher,PlasmaRifle"
+#define LMS_START_INVENTORY (gameinfo.gametype == GAME_Heretic) ? "SilverArmor" : "GreenArmor,PowerStrength"
+
 //*****************************************************************************
 //	PROTOTYPES
 
@@ -117,7 +105,7 @@
 //	EXTERNAL CONSOLE VARIABLES
 
 EXTERN_CVAR( Int, sv_lmscountdowntime )
-EXTERN_CVAR( Int, lmsallowedweapons );
+EXTERN_CVAR( String, lmsallowedweapons );
 EXTERN_CVAR( Int, lmsspectatorsettings );
 EXTERN_CVAR( Int, winlimit )
 
Общие подкаталоги: src_old/Linux и src/Linux
Общие подкаталоги: src_old/network и src/network
Общие подкаталоги: src_old/oplsynth и src/oplsynth
diff -u src_old/p_user.cpp src/p_user.cpp
--- src_old/p_user.cpp	2014-10-05 22:47:04.000000000 +0300
+++ src/p_user.cpp	2015-01-10 18:31:51.562808371 +0200
@@ -80,6 +80,14 @@
 // Note: ZDoom's limit is chosen such that the sky is rendered properly.
 CVAR (Bool, cl_oldfreelooklimit, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
 
+// LMS
+CUSTOM_CVAR( Int, sv_lmsstarthealth, 200, CVAR_ARCHIVE )
+{
+	if (self <= 0)
+		self = 100;
+}
+CVAR( String, sv_lmsstartinventory, LMS_START_INVENTORY, CVAR_ARCHIVE )
+
 static FRandom pr_skullpop ("SkullPop");
 
 
@@ -1428,21 +1436,17 @@
 				}
 			}
 
-			// Also give the player berserk.
-			player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "Berserk" ) );
-			pBerserk = static_cast<APowerStrength *>( player->mo->FindInventory( PClass::FindClass( "PowerStrength" )));
-			if ( pBerserk )
-			{
-				pBerserk->EffectTics = 768;
-				// [BB] This is a workaround to set the EffectTics property of the powerup on the clients.
-				// Note: The server already tells the clients that they got PowerStrength, because
-				// Berserk uses A_GiveInventory("PowerStrength").
-				if ( NETWORK_GetState( ) == NETSTATE_SERVER )
-					SERVERCOMMANDS_GivePowerup( static_cast<ULONG>(player - players), pBerserk );
+			player->health = sv_lmsstarthealth;
+
+			FString items(sv_lmsstartinventory);
+			char *item = strtok((char*)items.GetChars(), ",");
+
+			while (item)
+			{
+				player->mo->GiveInventoryTypeRespectingReplacements(PClass::FindClass(item));
+				item = strtok(NULL, ",");
 			}
 
-			player->health = deh.MegasphereHealth;
-			player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "GreenArmor" ) );
 			player->health -= player->userinfo.lHandicap;
 
 			// Don't allow player to be DOA.
@@ -1554,8 +1558,17 @@
 				}
 			}
 
-			player->health = deh.MegasphereHealth;
-			player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "SilverShield" ) );
+			player->health = sv_lmsstarthealth;
+
+			FString items(sv_lmsstartinventory);
+			char *item = strtok((char*)items.GetChars(), ",");
+
+			while (item)
+			{
+				player->mo->GiveInventoryTypeRespectingReplacements(PClass::FindClass(item));
+				item = strtok(NULL, ",");
+			}
+
 			player->health -= player->userinfo.lHandicap;
 
 			// Don't allow player to be DOA.
Общие подкаталоги: src_old/sdl и src/sdl
Общие подкаталоги: src_old/sfmt и src/sfmt
Общие подкаталоги: src_old/sound и src/sound
diff -u src_old/sv_commands.cpp src/sv_commands.cpp
--- src_old/sv_commands.cpp	2014-10-05 22:47:04.000000000 +0300
+++ src/sv_commands.cpp	2014-11-16 12:52:15.710905932 +0200
@@ -3515,7 +3515,7 @@
 
 		SERVER_CheckClientBuffer( ulIdx, 5, true );
 		NETWORK_WriteHeader( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, SVC_SETLMSALLOWEDWEAPONS );
-		NETWORK_WriteLong( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, lmsallowedweapons );
+		NETWORK_WriteString(&SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, lmsallowedweapons);
     }
 }
 
Только в src/: svnrevision.h
Общие подкаталоги: src_old/textures и src/textures
Общие подкаталоги: src_old/thingdef и src/thingdef
Общие подкаталоги: src_old/timidity и src/timidity
Общие подкаталоги: src_old/win32 и src/win32
Общие подкаталоги: src_old/xlat и src/xlat
