# HG changeset patch # User Adam Kaminski # Date 1631161547 14400 # Thu Sep 09 00:25:47 2021 -0400 # Node ID 1b5de3081fd1f0aac2f51efc43be2c1826fb036e # Parent 348fc8e6d7fc5659200effb2f77426bd6d6b1ec1 lmsallowedweapons and lmsspectatorsettings can now be modified using the GAMEMODE lump. diff -r 348fc8e6d7fc -r 1b5de3081fd1 src/gamemode.cpp --- a/src/gamemode.cpp Wed Sep 08 20:41:36 2021 -0400 +++ b/src/gamemode.cpp Thu Sep 09 00:25:47 2021 -0400 @@ -160,6 +160,10 @@ *GameModeFlagset = &g_GameModes[GameMode].lZaDMFlags[FLAGSET_VALUE]; else if ( flagset == &zacompatflags ) *GameModeFlagset = &g_GameModes[GameMode].lZaCompatFlags[FLAGSET_VALUE]; + else if ( flagset == &lmsallowedweapons ) + *GameModeFlagset = &g_GameModes[GameMode].lLMSAllowedWeapons[FLAGSET_VALUE]; + else if ( flagset == &lmsspectatorsettings ) + *GameModeFlagset = &g_GameModes[GameMode].lLMSSpectatorSettings[FLAGSET_VALUE]; else sc.ScriptError ( "Invalid gameplay or compatibility flag '%s'.", sc.String, sc.Line ); @@ -284,6 +288,8 @@ g_GameModes[gamemode].lCompatFlags2[flagset] = 0; g_GameModes[gamemode].lZaDMFlags[flagset] = 0; g_GameModes[gamemode].lZaCompatFlags[flagset] = 0; + g_GameModes[gamemode].lLMSAllowedWeapons[flagset] = 0; + g_GameModes[gamemode].lLMSSpectatorSettings[flagset] = 0; } } @@ -373,6 +379,10 @@ return ( g_GameModes[GameMode].lZaDMFlags[ulMask] ); else if ( Flagset == &zacompatflags ) return ( g_GameModes[GameMode].lZaCompatFlags[ulMask] ); + else if ( Flagset == &lmsallowedweapons ) + return ( g_GameModes[GameMode].lLMSAllowedWeapons[ulMask] ); + else if ( Flagset == &lmsspectatorsettings ) + return ( g_GameModes[GameMode].lLMSSpectatorSettings[ulMask] ); // [AK] We passed an invalid flagset, just return zero. return ( 0 ); @@ -1350,4 +1360,12 @@ // ...and zacompatflags. value.Int = ( zacompatflags & ~GameMode->lZaCompatFlags[ulMask] ) | ( GameMode->lZaCompatFlags[FLAGSET_VALUE] & GameMode->lZaCompatFlags[ulMask] ); zacompatflags.ForceSet( value, CVAR_Int ); + + // ...and lmsallowedweapons. + value.Int = ( lmsallowedweapons & ~GameMode->lLMSAllowedWeapons[ulMask] ) | ( GameMode->lLMSAllowedWeapons[FLAGSET_VALUE] & GameMode->lLMSAllowedWeapons[ulMask] ); + lmsallowedweapons.ForceSet( value, CVAR_Int ); + + // ...and lmsspectatorsettings. + value.Int = ( lmsspectatorsettings & ~GameMode->lLMSSpectatorSettings[ulMask] ) | ( GameMode->lLMSSpectatorSettings[FLAGSET_VALUE] & GameMode->lLMSSpectatorSettings[ulMask] ); + lmsspectatorsettings.ForceSet( value, CVAR_Int ); } \ No newline at end of file diff -r 348fc8e6d7fc -r 1b5de3081fd1 src/gamemode.h --- a/src/gamemode.h Wed Sep 08 20:41:36 2021 -0400 +++ b/src/gamemode.h Thu Sep 09 00:25:47 2021 -0400 @@ -163,6 +163,12 @@ // [AK] The zacompatflags we set for this gamemode. LONG lZaCompatFlags[3]; + // [AK] The lmsallowedweapons we set for this gamemode. + LONG lLMSAllowedWeapons[3]; + + // [AK] The lmsspectatorsettings we set for this gamemode. + LONG lLMSSpectatorSettings[3]; + } GAMEMODE_s; //***************************************************************************** diff -r 348fc8e6d7fc -r 1b5de3081fd1 src/lastmanstanding.cpp --- a/src/lastmanstanding.cpp Wed Sep 08 20:41:36 2021 -0400 +++ b/src/lastmanstanding.cpp Thu Sep 09 00:25:47 2021 -0400 @@ -781,7 +781,8 @@ } } -CUSTOM_CVAR( Int, lmsallowedweapons, LMS_AWF_ALLALLOWED, CVAR_SERVERINFO ) +// [AK] Added CVAR_GAMEMODELOCK. +CUSTOM_CVAR( Int, lmsallowedweapons, LMS_AWF_ALLALLOWED, CVAR_SERVERINFO | CVAR_GAMEMODELOCK ) { if (( NETWORK_GetState( ) == NETSTATE_SERVER ) && ( gamestate != GS_STARTUP )) { @@ -801,7 +802,8 @@ 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 ) +// [AK] Added CVAR_GAMEMODELOCK. +CUSTOM_CVAR( Int, lmsspectatorsettings, LMS_SPF_VIEW, CVAR_SERVERINFO | CVAR_GAMEMODELOCK ) { SERVER_FlagsetChanged( self ); }