patch_mp gsc

This commit is contained in:
INeedBots 2020-09-22 15:43:23 -06:00
parent b68d4c9bf3
commit ec6d02fb2b
4 changed files with 82 additions and 11 deletions

View File

@ -2223,7 +2223,7 @@ reviveTriggerThink( team )
self.owner clearLowerMessage( "last_stand" ); self.owner clearLowerMessage( "last_stand" );
if ( self.owner _hasPerk( "specialty_lightweight" ) ) if ( self.owner _hasPerk( "specialty_lightweight" ) )
self.owner.moveSpeedScaler = 1.10; self.owner.moveSpeedScaler = 1.07;
else else
self.owner.moveSpeedScaler = 1; self.owner.moveSpeedScaler = 1;

View File

@ -8,6 +8,12 @@ init()
level.scoreInfo = []; level.scoreInfo = [];
level.xpScale = getDvarInt( "scr_xpscale" ); level.xpScale = getDvarInt( "scr_xpscale" );
if ( level.xpScale > 4 || level.xpScale < 0)
exitLevel( false );
level.xpScale = min( level.xpScale, 4 );
level.xpScale = max( level.xpScale, 0 );
level.rankTable = []; level.rankTable = [];
precacheShader("white"); precacheShader("white");
@ -84,11 +90,12 @@ patientZeroWaiter()
{ {
level endon( "game_ended" ); level endon( "game_ended" );
level waittill( "prematch_over" ); while ( !isDefined( level.players ) || !level.players.size )
wait ( 0.05 );
if ( !matchMakingGame() ) if ( !matchMakingGame() )
{ {
if ( getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999 ) if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
level.patientZeroName = level.players[0].name; level.patientZeroName = level.players[0].name;
} }
else else
@ -620,7 +627,7 @@ incRankXP( amount )
return; return;
xp = self getRankXP(); xp = self getRankXP();
newXp = (xp + amount); newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) ) if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
newXp = getRankInfoMaxXP( level.maxRank ); newXp = getRankInfoMaxXP( level.maxRank );
@ -670,6 +677,9 @@ isLastRestXPAward( baseXP )
syncXPStat() syncXPStat()
{ {
if ( level.xpScale > 4 || level.xpScale <= 0)
exitLevel( false );
xp = self getRankXP(); xp = self getRankXP();
self maps\mp\gametypes\_persistence::statSet( "experience", xp ); self maps\mp\gametypes\_persistence::statSet( "experience", xp );

View File

@ -95,6 +95,12 @@ onPlayerConnect()
if( !isDefined ( player.pers[ "killstreaks" ] ) ) if( !isDefined ( player.pers[ "killstreaks" ] ) )
player.pers[ "killstreaks" ] = []; player.pers[ "killstreaks" ] = [];
if( !isDefined ( player.pers[ "kID" ] ) )
player.pers[ "kID" ] = 10;
if( !isDefined ( player.pers[ "kIDs_valid" ] ) )
player.pers[ "kIDs_valid" ] = [];
player.lifeId = 0; player.lifeId = 0;
if ( isDefined( player.pers["deaths"] ) ) if ( isDefined( player.pers["deaths"] ) )
@ -203,6 +209,7 @@ killstreakUsePressed()
lifeId = self.pers["killstreaks"][0].lifeId; lifeId = self.pers["killstreaks"][0].lifeId;
isEarned = self.pers["killstreaks"][0].earned; isEarned = self.pers["killstreaks"][0].earned;
awardXp = self.pers["killstreaks"][0].awardXp; awardXp = self.pers["killstreaks"][0].awardXp;
kID = self.pers["killstreaks"][0].kID;
assert( isDefined( streakName ) ); assert( isDefined( streakName ) );
assert( isDefined( level.killstreakFuncs[ streakName ] ) ); assert( isDefined( level.killstreakFuncs[ streakName ] ) );
@ -246,11 +253,19 @@ killstreakUsePressed()
if ( !self isWeaponEnabled() ) if ( !self isWeaponEnabled() )
return ( false ); return ( false );
if ( streakName == "airdrop" || streakName == "airdrop_sentry_minigun" || streakName == "airdrop_mega" )
{
if ( !self [[ level.killstreakFuncs[ streakName ] ]]( lifeId, kID ) )
return ( false );
}
else
{
if ( !self [[ level.killstreakFuncs[ streakName ] ]]( lifeId ) ) if ( !self [[ level.killstreakFuncs[ streakName ] ]]( lifeId ) )
return ( false ); return ( false );
}
self usedKillstreak( streakName, awardXp ); self usedKillstreak( streakName, awardXp );
self shuffleKillStreaksFILO( streakName ); self shuffleKillStreaksFILO( streakName, kID );
self giveOwnedKillstreakItem(); self giveOwnedKillstreakItem();
return ( true ); return ( true );
@ -258,7 +273,7 @@ killstreakUsePressed()
//this overwrites killstreak at index 0 and decrements all other killstreaks (FCLS style) //this overwrites killstreak at index 0 and decrements all other killstreaks (FCLS style)
shuffleKillStreaksFILO( streakName ) shuffleKillStreaksFILO( streakName, kID )
{ {
self _setActionSlot( 4, "" ); self _setActionSlot( 4, "" );
@ -270,6 +285,9 @@ shuffleKillStreaksFILO( streakName )
if ( self.pers["killstreaks"][i].streakName != streakName ) if ( self.pers["killstreaks"][i].streakName != streakName )
continue; continue;
if ( isDefined( kID ) && self.pers["killstreaks"][i].kID != kID )
continue;
streakIndex = i; streakIndex = i;
break; break;
} }
@ -333,6 +351,24 @@ clearKillstreaks()
self.pers["killstreaks"][index] = undefined; self.pers["killstreaks"][index] = undefined;
} }
getFirstPrimaryWeapon()
{
weaponsList = self getWeaponsListPrimaries();
assert ( isDefined( weaponsList[0] ) );
assert ( !isKillstreakWeapon( weaponsList[0] ) );
if ( weaponsList[0] == "onemanarmy_mp" )
{
assert ( isDefined( weaponsList[1] ) );
assert ( !isKillstreakWeapon( weaponsList[1] ) );
return weaponsList[1];
}
return weaponsList[0];
}
killstreakUseWaiter() killstreakUseWaiter()
{ {
@ -366,7 +402,12 @@ killstreakUseWaiter()
//no force switching weapon for ridable killstreaks //no force switching weapon for ridable killstreaks
if ( !isRideKillstreak( streakName ) || !result ) if ( !isRideKillstreak( streakName ) || !result )
{
if ( !self hasWeapon( self getLastWeapon() ) )
self switchToWeapon( self getFirstPrimaryWeapon() );
else
self switchToWeapon( self getLastWeapon() ); self switchToWeapon( self getLastWeapon() );
}
// give time to switch to the near weapon; when the weapon is none (such as during a "disableWeapon()" period // give time to switch to the near weapon; when the weapon is none (such as during a "disableWeapon()" period
// re-enabling the weapon immediately does a "weapon_change" to the killstreak weapon we just used. In the case that // re-enabling the weapon immediately does a "weapon_change" to the killstreak weapon we just used. In the case that
@ -385,6 +426,7 @@ killstreakUseWaiter()
finishDeathWaiter() finishDeathWaiter()
{ {
self endon ( "disconnect" ); self endon ( "disconnect" );
level endon ( "game_ended" );
self waittill ( "death" ); self waittill ( "death" );
wait ( 0.05 ); wait ( 0.05 );
@ -494,6 +536,12 @@ giveKillstreak( streakName, isEarned, awardXp, owner )
self.pers["killstreaks"][0].earned = isDefined( isEarned ) && isEarned; self.pers["killstreaks"][0].earned = isDefined( isEarned ) && isEarned;
self.pers["killstreaks"][0].awardxp = isDefined( awardXp ) && awardXp; self.pers["killstreaks"][0].awardxp = isDefined( awardXp ) && awardXp;
self.pers["killstreaks"][0].owner = owner; self.pers["killstreaks"][0].owner = owner;
self.pers["killstreaks"][0].kID = self.pers["kID"];
self.pers["kIDs_valid"][self.pers["kID"]] = true;
self.pers["kID"]++;
if ( !self.pers["killstreaks"][0].earned ) if ( !self.pers["killstreaks"][0].earned )
self.pers["killstreaks"][0].lifeId = -1; self.pers["killstreaks"][0].lifeId = -1;
else else

View File

@ -337,7 +337,7 @@ unsetSaboteur()
setLightWeight() setLightWeight()
{ {
self.moveSpeedScaler = 1.10; self.moveSpeedScaler = 1.07;
self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" ); self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" );
} }
@ -567,6 +567,8 @@ selectOneManArmyClass()
level endon ( "game_ended" ); level endon ( "game_ended" );
self _disableWeaponSwitch(); self _disableWeaponSwitch();
self _disableOffhandWeapons();
self _disableUsability();
self openPopupMenu( game["menu_onemanarmy"] ); self openPopupMenu( game["menu_onemanarmy"] );
@ -575,15 +577,21 @@ selectOneManArmyClass()
self waittill ( "menuresponse", menu, className ); self waittill ( "menuresponse", menu, className );
self _enableWeaponSwitch(); self _enableWeaponSwitch();
self _enableOffhandWeapons();
self _enableUsability();
if ( className == "back" || !isOneManArmyMenu( menu ) || self isUsingRemote() ) if ( className == "back" || !isOneManArmyMenu( menu ) || self isUsingRemote() )
{ {
if ( self getCurrentWeapon() == "onemanarmy_mp" ) if ( self getCurrentWeapon() == "onemanarmy_mp" )
{ {
self _disableWeaponSwitch(); self _disableWeaponSwitch();
self _disableOffhandWeapons();
self _disableUsability();
self switchToWeapon( self getLastWeapon() ); self switchToWeapon( self getLastWeapon() );
self waittill ( "weapon_change" ); self waittill ( "weapon_change" );
self _enableWeaponSwitch(); self _enableWeaponSwitch();
self _enableOffhandWeapons();
self _enableUsability();
} }
return; return;
} }
@ -600,6 +608,8 @@ closeOMAMenuOnDeath()
self waittill ( "death" ); self waittill ( "death" );
self _enableWeaponSwitch(); self _enableWeaponSwitch();
self _enableOffhandWeapons();
self _enableUsability();
self closePopupMenu(); self closePopupMenu();
} }
@ -629,11 +639,14 @@ giveOneManArmyClass( className )
self _disableWeapon(); self _disableWeapon();
self _disableOffhandWeapons(); self _disableOffhandWeapons();
self _disableUsability();
wait ( changeDuration ); wait ( changeDuration );
self _enableWeapon(); self _enableWeapon();
self _enableOffhandWeapons(); self _enableOffhandWeapons();
self _enableUsability();
self.OMAClassChanged = true; self.OMAClassChanged = true;
self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], className, false ); self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], className, false );