Compare commits

...
22 Commits
Author SHA1 Message Date
Louvenarde b32875849d Add missing files 2024-01-13 21:21:33 +01:00
Louvenarde fd5a71b32e Fix image categories, among other things 2024-01-13 21:16:49 +01:00
Louve 0b8d678893 Merge pull request #12 from diamante0018/patch-1
fix(str): update localize string value fix menu bug too
2024-01-12 10:17:27 +01:00
Louve 704a69a9ec Merge pull request #15 from diamante0018/develop
gamemode fixes
2024-01-12 00:00:59 +01:00
Louve 671a0a181c Merge pull request #19 from Laupetin/fix/small-serverlist-menu-mistakes
Remove duplicated mouse_click plays on key press macros
2024-01-11 23:42:10 +01:00
Louve d310691343 Merge pull request #17 from diamante0018/patch-3
more fixes for gun
2024-01-11 23:40:43 +01:00
Louve c93351046b Merge pull request #18 from diamante0018/patch-4
precache required scriptmenus
2024-01-11 23:40:22 +01:00
Jan f711722e5b Remove duplicated mouse_click plays on key press macros 2023-12-31 15:39:08 +01:00
Edo 3f2f24ab09 Update _menus.gsc 2023-12-31 14:14:00 +01:00
Edo 9576031f63 more fixes for gun 2023-12-31 14:05:22 +01:00
Edo 75ab8a88cc remove splitscreen code 2023-12-25 11:30:07 +01:00
Diavolo 7744518f3c gamemode fixes 2023-12-25 11:26:35 +01:00
Edo 5c7ba128cc remove double entry 2023-12-24 23:37:25 +01:00
Edo 7dcca93eed Update popup_cac_primary_camo.menu 2023-12-24 12:17:09 +01:00
Edo bb8ba5bea7 Update pc_options_multi.menu 2023-12-24 12:09:37 +01:00
Edo 66bfdf1b06 Update pc_options_multi.menu 2023-12-24 12:04:02 +01:00
Edo e8cf3048c5 Update pc_options_multi.menu 2023-12-24 11:59:31 +01:00
Edo 17f0f49635 Update iw4x_english.str 2023-12-24 11:57:53 +01:00
Edo 32e940e5d4 update gamepad 2023-12-24 11:57:16 +01:00
Edo b3adaada92 better desc 2023-12-24 11:52:05 +01:00
Edo 20a0dc25a7 fix(str): update localize string value 2023-12-24 11:36:10 +01:00
Louvenarde 9696e39099 Remove duplicate images 2023-12-20 00:59:42 +01:00
554 changed files with 10030 additions and 297 deletions

No files matched your search

Binary file not shown.
Binary file not shown.
+20 -4
View File
@@ -360,7 +360,7 @@ REFERENCE MENU_FRIENDNOTIFY
LANG_ENGLISH "Friend Notifications"
REFERENCE MPUI_DESC_FRIENDNOTIFY
LANG_ENGLISH "When should the friend status notifications be displayed?"
LANG_ENGLISH "Should you send status notifications to your friends?"
REFERENCE MPUI_DESC_OPTIONS
LANG_ENGLISH "Set your game options."
@@ -620,9 +620,6 @@ LANG_ENGLISH "CHANGELOG"
REFERENCE MPUI_DESC_CHANGELOG
LANG_ENGLISH "See what's new."
REFERENCE MPUI_DESC_CHANGELOG
LANG_ENGLISH "See what's new."
REFERENCE MPUI_DESC_NOBORDER
LANG_ENGLISH "Do not use a border in windowed mode."
@@ -1304,6 +1301,25 @@ LANG_ENGLISH "SAS eliminated"
REFERENCE MP_SAS_FORFEITED
LANG_ENGLISH "SAS forfeited"
REFERENCE MENU_DESC_BUTTON_LAYOUT
LANG_ENGLISH "Change the button layout for the gamepad"
REFERENCE MENU_DESC_THUMBSTICK_LAYOUT
LANG_ENGLISH "Change the thumbstick layout for the gamepad"
REFERENCE MENU_DESC_LOOK_SENSITIVITY_PRESET
LANG_ENGLISH "Choose different sensitivity presets"
REFERENCE MENU_DESC_MAXPACKETS
LANG_ENGLISH "Maximum number of packets sent per frame"
REFERENCE MENU_DESC_SNAPS
LANG_ENGLISH "Snapshot rate"
REFERENCE MENU_DESC_DRAWFPS
LANG_ENGLISH "Draw frames per second"
REFERENCE MENU_DESC_FPSLABELS
LANG_ENGLISH "Draw viewpos"
ENDMARKER
@@ -33,10 +33,13 @@ getLosingPlayers()
}
givePlayerScore( event, player, victim, overridePointsPopup )
givePlayerScore( event, player, victim, overrideCheckPlayerScoreLimitSoon, overridePointsPopup )
{
if ( isDefined( level.nukeIncoming ) )
return;
if ( !isDefined( overrideCheckPlayerScoreLimitSoon ) )
overrideCheckPlayerScoreLimitSoon = false;
if ( !isDefined( overridePointsPopup ) )
overridePointsPopup = false;
@@ -58,7 +61,11 @@ givePlayerScore( event, player, victim, overridePointsPopup )
if ( !level.teambased )
thread sendUpdatedDMScores();
player maps\mp\gametypes\_gamelogic::checkPlayerScoreLimitSoon();
// player score and team score aren't always the same values towards winning the match
// checkScoreLimit() checks team score correctly, checkPlayerScoreLimitSoon() uses player score
if ( !overrideCheckPlayerScoreLimitSoon )
player maps\mp\gametypes\_gamelogic::checkPlayerScoreLimitSoon();
scoreEndedMatch = player maps\mp\gametypes\_gamelogic::checkScoreLimit();
if ( scoreEndedMatch && event == "kill" )
@@ -32,7 +32,11 @@ init()
if ( !level.console )
{
game["menu_callvote"] = "callvote";
game["menu_kickplayer"] = "kickplayer";
game["menu_muteplayer"] = "muteplayer";
precacheMenu(game["menu_callvote"]);
precacheMenu(game["menu_kickplayer"]);
precacheMenu(game["menu_muteplayer"]);
}
else
+10 -4
View File
@@ -115,7 +115,7 @@ onStartGameType()
allowed = [];
maps\mp\gametypes\_gameobjects::main(allowed);
// Prevent class and team change
// Prevent class and team change. TODO: Must be disabled in _menus.gsc as well
setDvar( "ui_allow_classchange", 0 );
setdvar( "ui_allow_teamchange", 0 );
@@ -189,11 +189,10 @@ waitLoadoutDone()
self waittill( "spawned_player" );
self _setPerk( "specialty_bling" );
self giveNextGun( true );
}
onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration )
onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration, lifeId )
{
if ( sMeansOfDeath == "MOD_FALLING" || ( isDefined( attacker ) && isPlayer( attacker ) ) )
{
@@ -382,6 +381,8 @@ refillSingleCountAmmo()
initGunHUD()
{
if ( self isTestClient() ) return;
self.gun_progressDisplay[0] = self createFontString( "small", 1.6 );
self.gun_progressDisplay[0] setPoint( "TOP LEFT", "TOP LEFT", 115, 5 );
self.gun_progressDisplay[0] setText( &"MP_WEAPON" );
@@ -402,11 +403,14 @@ initGunHUD()
updateGunHUD()
{
if ( self isTestClient() ) return;
self.gun_progressDisplay[1] setText( (self.gunGameGunIndex+1) + " / " + level.gun_guns.size );
}
hideInKillCam()
{
if ( self isTestClient() ) return;
self endon( "disconnect" );
var_0 = 1;
@@ -431,6 +435,8 @@ hideInKillCam()
hideOnGameEnd()
{
if ( self isTestClient() ) return;
self endon( "disconnect" );
level waittill( "game_ended" );
@@ -574,4 +580,4 @@ setSpecialLoadout()
// FFA games don't have teams, but players are allowed to choose team on the way in
// just for character model and announcer voice variety. Same loadout for both.
level.gun_loadouts["allies"] = level.gun_loadouts["axis"];
}
}
+236 -274
View File
@@ -21,12 +21,13 @@ main()
// don't sit there waiting for both teams to contain players,
// as everyone starts a survivor
level.prematchWaitForTeams = false;
level.onPrecacheGameType = ::onPrecacheGameType;
level.onStartGameType = ::onStartGameType;
level.onSpawnPlayer = ::onSpawnPlayer;
level.getSpawnPoint = ::getSpawnPoint;
level.onPlayerKilled = ::onPlayerKilled;
level.onTimeLimit = ::onTimeLimit;
level.onPrecacheGameType = ::onPrecacheGameType;
level.onStartGameType = ::onStartGameType;
level.onSpawnPlayer = ::onSpawnPlayer;
level.getSpawnPoint = ::getSpawnPoint;
level.onPlayerKilled = ::onPlayerKilled;
level.onDeadEvent = ::onDeadEvent;
level.onTimeLimit = ::onTimeLimit;
level.infect_perks = [];
level.infect_perks[level.infect_perks.size] = "specialty_marathon";
@@ -54,21 +55,22 @@ determineWinningTeam()
onPrecacheGameType()
{
precachestring( &"MP_CONSCRIPTION_STARTS_IN" );
precacheString( &"MP_CONSCRIPTION_STARTS_IN" );
}
onStartGameType()
{
setclientnamemode( "auto_change" );
setObjectiveText( "allies", &"OBJECTIVES_INFECT" );
setObjectiveText( "axis", &"OBJECTIVES_INFECT" );
setClientNameMode("auto_change");
setObjectiveScoreText( "allies", &"OBJECTIVES_INFECT_SCORE" );
setObjectiveScoreText( "axis", &"OBJECTIVES_INFECT_SCORE" );
setObjectiveText( "allies", &"OBJECTIVES_INFECT" );
setObjectiveText( "axis", &"OBJECTIVES_INFECT" );
setObjectiveScoreText( "allies", &"OBJECTIVES_INFECT_SCORE" );
setObjectiveScoreText( "axis", &"OBJECTIVES_INFECT_SCORE" );
setObjectiveHintText( "allies", &"OBJECTIVES_INFECT_HINT" );
setObjectiveHintText( "axis", &"OBJECTIVES_INFECT_HINT" );
setObjectiveHintText( "allies", &"OBJECTIVES_INFECT_HINT" );
setObjectiveHintText( "axis", &"OBJECTIVES_INFECT_HINT" );
level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" );
@@ -85,7 +87,7 @@ onStartGameType()
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 50 );
maps\mp\gametypes\_rank::registerScoreInfo( "draft_rogue", 200 );
maps\mp\gametypes\_rank::registerScoreInfo( "survivor", 50 );
level.QuickMessageToAll = true;
level.blockWeaponDrops = true;
level.infect_allowSuicide = false;
@@ -98,19 +100,18 @@ onStartGameType()
level.infect_timerDisplay.label = &"MP_DRAFT_STARTS_IN";
level.infect_timerDisplay.alpha = 0;
level.infect_timerDisplay.archived = false;
level.infect_timerDisplay.hideWhenInMenu = true;
level.infect_timerDisplay.hideWhenInMenu = true;
level.infect_choseFirstInfected = false;
level.infect_choosingFirstInfected = false;
level.infect_awardedFinalSurvivor = false;
level.infect_countdownInProgress = false;
level.infect_teamScores["axis"] = 0;
level.infect_teamScores["axis"] = 0;
level.infect_teamScores["allies"] = 0;
level.infect_players = [];
level thread onPlayerConnect();
level thread watchInfectForfeit();
level thread onPlayerConnect();
level thread watchInfectForfeit();
}
onPlayerConnect()
@@ -118,50 +119,40 @@ onPlayerConnect()
for (;;)
{
level waittill( "connected", player );
player.infect_firstSpawn = true;
player.infected_Rejoined = false;
player.infect_JoinedAtStart = true;
if( gameFlag( "prematch_done" ) )
{
player.infect_JoinedAtStart = false;
}
// infected who quit and rejoined same game
if( IsDefined( level.infect_players[player.name] ) )
{
player.infected_Rejoined = true;
}
if ( gameFlag( "prematch_done" ) )
player.infect_joinedatstart = false;
else
player.infect_joinedatstart = true;
if ( isDefined( level.infect_players[player.name] ) )
player.infect_rejoined = true;
}
}
getSpawnPoint()
{
// first time here?
{
// first time here?
if ( self.infect_firstSpawn )
{
{
self.infect_firstSpawn = false;
// everyone is a gamemode class in infect, no class selection
self.pers["class"] = "gamemode";
self.pers["lastClass"] = "";
self.class = self.pers["class"];
self.lastClass = self.pers["lastClass"];
self.lastClass = self.pers["lastClass"];
// survivors are allies
teamChoice = "allies";
// everyone starts as survivors, unless an infected quit and rejoined same game
if( self.infected_Rejoined )
{
teamChoice = "axis";
}
self maps\mp\gametypes\_menus::addToTeam( teamChoice, true );
if ( isDefined( self.infect_rejoined ) )
maps\mp\gametypes\_menus::addToTeam( "axis", true );
else
maps\mp\gametypes\_menus::addToTeam( "allies", true );
thread onPlayerDisconnect();
}
}
if ( level.inGracePeriod )
{
spawnPoints = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_tdm_spawn" );
@@ -172,64 +163,59 @@ getSpawnPoint()
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
}
return spawnPoint;
return spawnPoint;
}
onSpawnPlayer()
{
self.teamChangedThisFrame = undefined;
self.infect_spawnPos = self.origin;
// resynch teams
self.teamchangedthisframe = undefined;
self.infect_spawnpos = self.origin;
updateTeamScores();
// let the first spawned player kick this off
if ( !level.infect_choosingFirstInfected )
{
level.infect_choosingFirstInfected = true;
level thread chooseFirstInfected();
}
}
// infected who quit and rejoined same game?
if( self.infected_Rejoined )
if ( isDefined( self.infect_rejoined ) )
{
self.infect_rejoined = undefined;
// stop initial infect countdown (if quit/join player was initial and a new coutdown is underway)
if ( !level.infect_allowSuicide )
{
level notify( "infect_stopCountdown" );
level.infect_choseFirstInfected = true;
level.infect_allowSuicide = true;
foreach( player in level.players )
{
if ( isDefined( player.infect_isBeingChosen ) )
player.infect_isBeingChosen = undefined;
}
}
if ( !level.infect_allowsuicide )
{
level notify( "infect_stopCountdown" );
level.infect_choseFirstInfected = 1;
level.infect_allowsuicide = 1;
// if an initial was already chosen while they were gone and they are still initial, set them to normal
foreach( player in level.players )
{
if ( isDefined( player.isInitialInfected ) )
player thread setInitialToNormalInfected();
}
foreach ( player in level.players )
{
if ( isDefined( player.infect_isBeingChosen ) )
player.infect_isBeingChosen = undefined;
}
}
// if they're the only infected, then set them as initial infected
if ( level.infect_teamScores["axis"] == 1 )
self.isInitialInfected = true;
foreach ( player in level.players )
{
if ( isDefined( player.isInitialInfected ) )
player thread setInitialToNormalInfected();
}
if ( level.infect_teamscores["axis"] == 1 )
self.isInitialInfected = 1;
}
// onSpawnPlayer() is called before giveLoadout()
// set self.pers["gamemodeLoadout"] for giveLoadout() to use
if ( isDefined( self.isInitialInfected ) )
self.pers["gamemodeLoadout"] = level.infect_loadouts["axis_initial"];
else
self.pers["gamemodeLoadout"] = level.infect_loadouts[self.pers["team"]];
self thread onSpawnFinished();
if ( isDefined( self.isInitialInfected ) )
self.pers["gamemodeLoadout"] = level.infect_loadouts["axis_initial"];
else
self.pers["gamemodeLoadout"] = level.infect_loadouts[self.pers["team"]];
thread onSpawnFinished();
level notify ( "spawned_player" );
}
@@ -320,63 +306,53 @@ setInfectedMsg()
chooseFirstInfected()
{
level endon( "game_ended" );
level endon( "infect_stopCountdown" );
level endon( "game_ended" );
level endon( "infect_stopCountdown" );
level.infect_allowSuicide = false;
gameFlagWait( "prematch_done" );
level.infect_allowsuicide = false;
level.infect_timerDisplay.label = &"MP_DRAFT_STARTS_IN";
level.infect_timerDisplay setTimer( 15 );
level.infect_timerDisplay.alpha = 1;
gameFlagWait( "prematch_done" );
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause( 15.0 );
level.infect_timerDisplay.label = &"MP_DRAFT_STARTS_IN";
level.infect_timerDisplay settimer( 8 );
level.infect_timerDisplay.alpha = 1;
level.infect_timerDisplay.alpha = 0;
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause( 8.0 );
possibleInfected = [];
level.infect_timerDisplay.alpha = 0;
foreach( player in level.players )
{
if ( player.team == "spectator" )
continue;
if ( !player.hasSpawned )
continue;
possibleInfected[possibleInfected.size] = player;
}
firstInfectedPlayer = possibleInfected[ randomInt( possibleInfected.size ) ];
firstInfectedPlayer setFirstInfected( true );
level.players[randomint( level.players.size )] setFirstInfected( true );
}
setFirstInfected( wasChosen )
{
self endon( "disconnect" );
if ( wasChosen )
self.infect_isBeingChosen = true;
{
self endon( "disconnect" );
if ( wasChosen )
self.infect_isBeingChosen = true;
// wait alive
while( !isReallyAlive( self ) || self isUsingRemote() )
wait( 0.05 );
while ( !isReallyAlive( self ) || isUsingRemote() )
wait 0.05;
// remove placement item if carrying
if ( IsDefined( self.isCarrying ) && self.isCarrying == true )
{
self notify( "force_cancel_placement" );
wait( 0.05 );
}
if ( isDefined( self.isCarrying ) && self.isCarrying == 1 )
{
self notify( "force_cancel_placement" );
wait 0.05;
}
// not while mantling
while ( self IsMantling() )
wait( 0.05 );
wait( 0.05 );
// not while in air
while ( !self isOnGround() && !self IsOnLadder() )
wait( 0.05 );
while ( !isAlive( self ) )
waitframe();
// move to other team
if ( wasChosen )
{
@@ -385,22 +361,21 @@ setFirstInfected( wasChosen )
self.infect_isBeingChosen = undefined;
// resynch teams
level notify( "update_game_time" );
updateTeamScores();
// allow suicides now
level.infect_allowSuicide = true;
}
// store initial
self.isInitialInfected = true;
// set the gamemodeloadout for giveLoadout() to use
self.pers["gamemodeLoadout"] = level.infect_loadouts["axis_initial"];
// store initial
self.isInitialInfected = true;
// set the gamemodeloadout for giveLoadout() to use
self.pers["gamemodeLoadout"] = level.infect_loadouts["axis_initial"];
// remove old TI if it exists
if ( isDefined ( self.setSpawnpoint ) )
self maps\mp\perks\_perkfunctions::deleteTI( self.setSpawnpoint );
if ( isDefined( self.setSpawnpoint ) )
maps\mp\perks\_perkfunctions::deleteTI( self.setSpawnpoint );
// set faux TI to respawn in place
spawnPoint = spawn( "script_model", self.origin );
@@ -412,15 +387,14 @@ setFirstInfected( wasChosen )
// faux spawn
self notify( "faux_spawn" );
self.faux_spawn_stance = self getStance();
thread maps\mp\gametypes\_playerlogic::spawnPlayer( true );
self thread maps\mp\gametypes\_playerlogic::spawnPlayer( true );
// store infected
if ( wasChosen )
level.infect_players[self.name] = true;
// tell the world!
thread teamPlayerCardSplash( "callout_first_mercenary", self );
playSoundOnPlayers( "mp_enemy_obj_captured" );
playSoundOnPlayers( "mp_enemy_obj_captured" );
}
setInitialToNormalInfected( gotKill )
@@ -441,8 +415,8 @@ setInitialToNormalInfected( gotKill )
{
self notify( "force_cancel_placement" );
wait( 0.05 );
}
}
// not while mantling
while ( self IsMantling() )
wait( 0.05 );
@@ -450,18 +424,18 @@ setInitialToNormalInfected( gotKill )
// not while in air
while ( !self isOnGround() )
wait( 0.05 );
// Gotta check again, more time has passed, wait till we spawn if we died at the same time
while ( !isReallyAlive( self ) )
wait( 0.05 );
// set the gamemodeloadout for giveLoadout() to use
// set the gamemodeloadout for giveLoadout() to use
self.pers["gamemodeLoadout"] = level.infect_loadouts["axis"];
// remove old TI if it exists
if ( isDefined ( self.setSpawnpoint ) )
self maps\mp\perks\_perkfunctions::deleteTI( self.setSpawnpoint );
// set faux TI to respawn in place
spawnPoint = spawn( "script_model", self.origin );
spawnPoint.angles = self.angles;
@@ -472,15 +446,15 @@ setInitialToNormalInfected( gotKill )
// faux spawn
self notify( "faux_spawn" );
self.faux_spawn_stance = self getStance();
thread maps\mp\gametypes\_playerlogic::spawnPlayer( true );
}
onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration )
onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration, lifeId )
{
processKill = false;
wasSuicide = false;
if ( self.team == "allies" && isDefined( attacker ) )
{
if ( isPlayer( attacker ) && attacker != self )
@@ -501,10 +475,10 @@ onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHi
self maps\mp\gametypes\_menus::addToTeam( "axis" );
// resynch teams
updateTeamScores();
updateTeamScores();
// store infected
level.infect_players[self.name] = true;
// store infected
level.infect_players[self.name] = true;
if ( wasSuicide )
{
@@ -518,37 +492,31 @@ onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHi
}
}
}
else
{
else if ( isDefined( attacker.isInitialInfected ) )
// set attacker to regular infected if they were the first infected
if ( isDefined( attacker.isInitialInfected ) )
attacker thread setInitialToNormalInfected( true );
else
{
// regular attacker reward
attacker thread maps\mp\gametypes\_rank::xpEventPopup( &"SPLASHES_DRAFTED" );
maps\mp\gametypes\_gamescore::givePlayerScore( "draft_rogue", attacker, self, true );
attacker thread maps\mp\gametypes\_rank::giveRankXP( "draft_rogue" );
}
}
attacker thread setInitialToNormalInfected( true );
else
{
// regular attacker reward
attacker thread maps\mp\gametypes\_rank::xpEventPopup( &"SPLASHES_DRAFTED" );
maps\mp\gametypes\_gamescore::givePlayerScore( "draft_rogue", attacker, self, true );
attacker thread maps\mp\gametypes\_rank::giveRankXP( "draft_rogue" );
}
// generic messages/sounds, and reward survivors
if ( level.infect_teamScores["allies"] > 1 )
{
playSoundOnPlayers( "mp_enemy_obj_captured", "allies" );
playSoundOnPlayers( "mp_war_objective_taken", "axis" );
thread teamPlayerCardSplash( "callout_got_drafted", self, "allies" );
if ( level.infect_teamScores["allies"] > 1 )
{
playSoundOnPlayers( "mp_enemy_obj_captured", "allies" );
playSoundOnPlayers( "mp_war_objective_taken", "axis" );
thread teamPlayerCardSplash( "callout_got_drafted", self, "allies" );
if ( !wasSuicide )
{
thread teamPlayerCardSplash( "callout_drafted_rogue", attacker, "axis" );
if ( !wasSuicide )
{
thread teamPlayerCardSplash( "callout_drafted_rogue", attacker, "axis" );
foreach ( player in level.players )
{
if( !isReallyAlive( player ) || self.sessionstate == "spectator" )
continue;
if ( player.team == "allies" && player != self && distance( player.infect_spawnPos, player.origin ) > 32 )
foreach ( player in level.players )
{
if ( player.team == "allies" && player != self && distance( player.infect_spawnpos, player.origin ) > 32 )
{
player thread maps\mp\gametypes\_rank::xpEventPopup( &"SPLASHES_SURVIVOR" );
maps\mp\gametypes\_gamescore::givePlayerScore( "survivor", player, undefined, true );
@@ -558,23 +526,18 @@ onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHi
}
}
// inform/reward last
else if ( level.infect_teamScores["allies"] == 1 )
{
onFinalSurvivor();
}
else if ( level.infect_teamScores["allies"] == 1 )
onFinalSurvivor();
// infected win
else if ( level.infect_teamScores["allies"] == 0 )
{
onSurvivorsEliminated();
}
else if ( level.infect_teamScores["allies"] == 0 )
onSurvivorsEliminated();
}
}
onFinalSurvivor()
{
playSoundOnPlayers( "mp_obj_captured" );
foreach ( player in level.players )
playSoundOnPlayers( "mp_obj_captured" );
foreach ( player in level.players )
{
if( !isDefined(player) )
continue;
@@ -582,66 +545,63 @@ onFinalSurvivor()
if ( player.team == "allies" )
{
player thread maps\mp\gametypes\_rank::xpEventPopup( &"SPLASHES_FINAL_ROGUE" );
if ( !level.infect_awardedFinalSurvivor )
{
if ( player.gameModeJoinedAtStart && isDefined( player.infect_spawnPos ) && distance( player.infect_spawnPos, player.origin ) > 32 )
if ( player.infect_joinedatstart && distance( player.infect_spawnpos, player.origin ) > 32 )
{
maps\mp\gametypes\_gamescore::givePlayerScore( "final_rogue", player, undefined, true );
player thread maps\mp\gametypes\_rank::giveRankXP( "final_rogue" );
}
level.infect_awardedFinalSurvivor = true;
}
thread teamplayercardsplash( "callout_final_rogue", player );
if (matchMakingGame() )
level thread finalsurvivoruav( player );
thread maps\mp\_utility::teamPlayerCardSplash( "callout_final_rogue", player );
if ( matchMakingGame() )
level thread finalSurvivorUAV( player );
break;
}
}
}
finalSurvivorUAV( finalPlayer )
{
level endon( "game_ended" );
finalPlayer endon( "disconnect" );
finalPlayer endon( "eliminated" );
level endon( "infect_lateJoiner" );
level thread endUAVonLateJoiner( finalPlayer );
level endon( "game_ended" );
finalPlayer endon( "disconnect" );
finalPlayer endon( "eliminated" );
level endon( "infect_lateJoiner" );
level thread endUAVonLateJoiner( finalPlayer );
removeUAV = false;
level.radarMode["axis"] = "normal_radar";
foreach ( player in level.players )
{
if ( player.team == "axis" )
player.radarMode = "normal_radar";
}
//setTeamRadarStrength( "axis", 1 );
while( true )
{
prevPos = finalPlayer.origin;
wait( 4 );
if ( removeUAV )
{
setTeamRadar( "axis", 0 );
removeUAV = false;
}
wait( 6 );
if ( distance( prevPos, finalPlayer.origin ) < 200 )
{
setTeamRadar( "axis", 1 );
removeUAV = true;
foreach ( player in level.players )
player playLocalSound( "recondrone_tag" );
}
}
removeUAV = false;
level.radarmode["axis"] = "normal_radar";
foreach ( player in level.players )
{
if ( player.team == "axis" )
player.radarmode = "normal_radar";
}
for (;;)
{
prevPos = finalPlayer.origin;
wait 4;
if ( removeUAV )
{
setTeamRadar( "axis", 0 );
removeUAV = false;
}
wait 6;
if ( distance( prevPos, finalPlayer.origin ) < 200 )
{
setTeamRadar( "axis", 1 );
removeUAV = true;
}
}
}
endUAVonLateJoiner( finalPlayer )
@@ -649,32 +609,32 @@ endUAVonLateJoiner( finalPlayer )
level endon( "game_ended" );
finalPlayer endon( "disconnect" );
finalPlayer endon( "eliminated" );
while( true )
{
if ( level.infect_teamScores["allies"] > 1 )
{
level notify( "infect_lateJoiner" );
wait( 0.05 );
setTeamRadar( "axis", 0 );
break;
}
wait( 0.05 );
}
for (;;)
{
if ( level.infect_teamScores["allies"] > 1 )
{
level notify( "infect_lateJoiner" );
wait 0.05;
setTeamRadar( "axis", 0 );
break;
}
wait 0.05;
}
}
onPlayerDisconnect()
{
level endon( "game_ended" );
self endon( "eliminated" );
self waittill( "disconnect" );
self waittill( "disconnect" );
// resynch teams
updateTeamScores();
updateTeamScores();
// team actions or win condition necessary?
if ( isDefined( self.infect_isBeingChosen ) || level.infect_choseFirstInfected )
if ( isDefined( self.infect_isBeingChosen ) || level.infect_choseFirstInfected )
{
if ( level.infect_teamScores["axis"] && level.infect_teamScores["allies"] )
{
@@ -692,12 +652,12 @@ onPlayerDisconnect()
player setFirstInfected( false );
}
}
}
}
else if ( level.infect_teamScores["allies"] == 0 )
{
// no more survivors, infected win
onSurvivorsEliminated();
}
}
else if ( level.infect_teamScores["axis"] == 0 )
{
if ( level.infect_teamScores["allies"] == 1 )
@@ -712,11 +672,10 @@ onPlayerDisconnect()
level.infect_choseFirstInfected = false;
level thread chooseFirstInfected();
}
}
}
}
// clear this regardless on the way out
self.isInitialInfected = undefined;
// clear this regardless on the way out
self.isInitialInfected = undefined;
}
watchInfectForfeit()
@@ -741,9 +700,8 @@ onDeadEvent( team )
onTimeLimit()
{
// survivors win
level.finalKillCam_winner = "allies";
level thread maps\mp\gametypes\_gamelogic::endGame( "allies", game[ "end_reason" ][ "time_limit_reached" ] );
level thread maps\mp\gametypes\_gamelogic::endGame( "allies", game["strings"]["time_limit_reached"] );
}
onSurvivorsEliminated()
@@ -753,33 +711,37 @@ onSurvivorsEliminated()
level thread maps\mp\gametypes\_gamelogic::endGame( "axis", game[ "end_reason" ][ "allies_eliminated" ] );
}
getTeamSize( team )
getNumInfected()
{
size = 0;
foreach( player in level.players )
numInfected = 0;
foreach ( player in level.players )
{
// Make sure we don't check for spectators
// Also need to check for if they are in killcam, because player session states are set to spectator when killcam happens
if ( player.sessionstate == "spectator" && !player.spectatekillcam )
continue;
if( player.team == team )
size++;
if ( isdefined( player.team ) && player.team == "axis" )
numInfected++;
}
return size;
return numInfected;
}
getNumSurvivors()
{
numSurvivors = 0;
foreach ( player in level.players )
{
if ( isdefined( player.team ) && player.team == "allies" )
numSurvivors++;
}
return numSurvivors;
}
updateTeamScores()
{
// survivors
level.infect_teamScores["allies"] = getTeamSize( "allies" );
level.infect_teamScores["allies"] = getNumSurvivors();
game["teamScores"]["allies"] = level.infect_teamScores["allies"];
setTeamScore( "allies", level.infect_teamScores["allies"] );
// infected
level.infect_teamScores["axis"] = getTeamSize( "axis" );
level.infect_teamScores["axis"] = getNumInfected();
game["teamScores"]["axis"] = level.infect_teamScores["axis"];
setTeamScore( "axis", level.infect_teamScores["axis"] );
}
@@ -802,11 +764,11 @@ setSpecialLoadouts()
level.infect_loadouts["axis"]["loadoutKillstreak1"] = "none";
level.infect_loadouts["axis"]["loadoutKillstreak2"] = "none";
level.infect_loadouts["axis"]["loadoutKillstreak3"] = "none";
level.infect_loadouts["axis"]["loadoutDeathstreak"] = "specialty_grenadepulldeath";
level.infect_loadouts["axis"]["loadoutDeathstreak"] = "none";
level.infect_loadouts["axis_initial"]["loadoutPrimary"] = "scar";
level.infect_loadouts["axis_initial"]["loadoutPrimaryAttachment"] = "reflex";
level.infect_loadouts["axis_initial"]["loadoutPrimaryAttachment2"] = "xmags";
level.infect_loadouts["axis_initial"]["loadoutPrimary"] = "throwingknife";
level.infect_loadouts["axis_initial"]["loadoutPrimaryAttachment"] = "none";
level.infect_loadouts["axis_initial"]["loadoutPrimaryAttachment2"] = "none";
level.infect_loadouts["axis_initial"]["loadoutPrimaryCamo"] = "none";
level.infect_loadouts["axis_initial"]["loadoutSecondary"] = "none";
level.infect_loadouts["axis_initial"]["loadoutSecondaryAttachment"] = "none";
@@ -820,7 +782,7 @@ setSpecialLoadouts()
level.infect_loadouts["axis_initial"]["loadoutKillstreak1"] = "none";
level.infect_loadouts["axis_initial"]["loadoutKillstreak2"] = "none";
level.infect_loadouts["axis_initial"]["loadoutKillstreak3"] = "none";
level.infect_loadouts["axis_initial"]["loadoutDeathstreak"] = "specialty_grenadepulldeath";
level.infect_loadouts["axis_initial"]["loadoutDeathstreak"] = "none";
level.infect_loadouts["allies"]["loadoutPrimary"] = "spas12";
level.infect_loadouts["allies"]["loadoutPrimaryAttachment"] = "xmags";
@@ -836,4 +798,4 @@ setSpecialLoadouts()
level.infect_loadouts["allies"]["loadoutPerk2"] = "specialty_lightweight";
level.infect_loadouts["allies"]["loadoutPerk3"] = "specialty_heartbreaker";
level.infect_loadouts["allies"]["loadoutDeathstreak"] = "specialty_null";
}
}
+21
View File
@@ -0,0 +1,21 @@
r_sunsprite_shader "sun"
r_sunsprite_size "1000"
r_sunflare_shader "sun_flare_icbm"
r_sunflare_min_size "192"
r_sunflare_min_angle "90"
r_sunflare_max_size "192"
r_sunflare_max_angle "90"
r_sunflare_max_alpha "1"
r_sunflare_fadein "0"
r_sunflare_fadeout "0.5"
r_sunblind_min_angle "25.555"
r_sunblind_max_angle "5"
r_sunblind_max_darken "0"
r_sunblind_fadein "0.5"
r_sunblind_fadeout "3"
r_sunglare_min_angle "30.4016"
r_sunglare_max_angle "5.069"
r_sunglare_max_lighten "0.0352871"
r_sunglare_fadein "0.5"
r_sunglare_fadeout "2.5"
r_sun_fx_position "-15 51.5 0"
+1 -2
View File
@@ -153,8 +153,7 @@
ON_MENU_KEY_K_APAD_RIGHT
#define ON_MENU_KEY_K_F1 \
open "popup_summary"; \
play CHOICE_CLICK_SOUND;
open "popup_summary";
{
menuDef
-1
View File
@@ -24,7 +24,6 @@
close self;
#define ON_MENU_KEY_F5 \
play CHOICE_CLICK_SOUND; \
uiScript "RefreshServers";
#define ON_MENU_KEY_ENTER \
+3 -3
View File
@@ -110,7 +110,7 @@
{"@MENU_DEFAULT"; "thumbstick_default";
"@MENU_SOUTHPAW"; "thumbstick_southpaw";
"@MENU_LEGACY"; "thumbstick_legacy";
"@MENU_LEGACY_SOUTHPAW"; "thumbstick_legacysouthpaw"}, execNow "bindgpsticksconfigs";, ;, ON_GPAD_DISABLED, ON_GPAD_ENABLED)
"@MENU_LEGACY_SOUTHPAW"; "thumbstick_legacysouthpaw"}, execNow "bindgpsticksconfigs";, "@MENU_DESC_THUMBSTICK_LAYOUT", ON_GPAD_DISABLED, ON_GPAD_ENABLED)
PC_OPTIONS_STRLIST_RAW(3, "@MENU_BUTTON_LAYOUT", "gpad_buttonConfig",
{"@MENU_DEFAULT"; "buttons_default";
"@MENU_TACTICAL"; "buttons_tactical";
@@ -119,7 +119,7 @@
"@MENU_DEFAULT_ALT"; "buttons_default_alt";
"@MENU_TACTICAL_ALT"; "buttons_tactical_alt";
"@MENU_LEFTY_ALT"; "buttons_lefty_alt";
"@MENU_NOMAD_ALT"; "buttons_nomad_alt"}, execNow "bindgpbuttonsconfigs";, ;, ON_GPAD_DISABLED, ON_GPAD_ENABLED)
"@MENU_NOMAD_ALT"; "buttons_nomad_alt"}, execNow "bindgpbuttonsconfigs";, "@MENU_DESC_BUTTON_LAYOUT", ON_GPAD_DISABLED, ON_GPAD_ENABLED)
PC_OPTIONS_FLOATLIST_RAW(4, "@MENU_GPAD_STYLE", "gpad_style", {"@MENU_GPAD_XBOX_CAPS" 0 "@MENU_GPAD_PS_CAPS" 1}, ;, "@MPUI_DESC_GPAD_STYLE", ON_GPAD_DISABLED, ON_GPAD_ENABLED)
PC_OPTIONS_DVARYESNO_RAW(5, "@MENU_SLOWDOWN_ENABLED", "gpad_slowdown_enabled", ;, "@MPUI_DESC_SLOWDOWN_ENABLED", ON_GPAD_DISABLED, ON_GPAD_ENABLED)
PC_OPTIONS_DVARYESNO_RAW(6, "@MENU_LOCKON_ENABLED", "gpad_lockon_enabled", ;, "@MPUI_DESC_LOCKON_ENABLED", ON_GPAD_DISABLED, ON_GPAD_ENABLED)
@@ -129,6 +129,6 @@
{"@MENU_SENSITIVITY_LOW_CAPS" SENSITIVITY_1 "@MENU_SENSITIVITY_MEDIUM_CAPS" SENSITIVITY_2 "3" SENSITIVITY_3
"@MENU_SENSITIVITY_HIGH_CAPS" SENSITIVITY_4 "5" SENSITIVITY_5 "6" SENSITIVITY_6
"@MENU_SENSITIVITY_VERY_HIGH_CAPS" SENSITIVITY_7 "8" SENSITIVITY_8 "9" SENSITIVITY_9 "@MENU_SENSITIVITY_INSANE_CAPS" SENSITIVITY_10},
;, ;, ON_GPAD_DISABLED, ON_GPAD_ENABLED)
;, "@MENU_DESC_LOOK_SENSITIVITY_PRESET", ON_GPAD_DISABLED, ON_GPAD_ENABLED)
}
}
+5 -5
View File
@@ -84,18 +84,18 @@
PC_OPTIONS_SEPERATOR(0)
PC_OPTIONS_FLOATLIST_RAW(1, "@MENU_MAXPACKETS", "cl_maxpackets", {"30" 30 "100" 100 "125" 125}, ;, ;, when(0), 1)
PC_OPTIONS_FLOATLIST_RAW(2, "@MENU_SNAPS", "snaps", {"20" 20 "30" 30}, ;, ;, when(0), 1)
PC_OPTIONS_FLOATLIST_RAW(1, "@MENU_MAXPACKETS", "cl_maxpackets", {"30" 30 "100" 100 "125" 125}, ;, "@MENU_DESC_MAXPACKETS", when(0), 1)
PC_OPTIONS_FLOATLIST_RAW(2, "@MENU_SNAPS", "snaps", {"20" 20 "30" 30}, ;, "@MENU_DESC_SNAPS", when(0), 1)
PC_OPTIONS_SEPERATOR(2)
PC_OPTIONS_DVARYESNO(3, "@MENU_LAGOMETER", "drawLagometer", ;, when(0))
PC_OPTIONS_STRLIST_RAW(4, "@MENU_DRAWFPS", "cg_drawFPS", {"Off"; "Off"; "Simple"; "Simple"; "SimpleRanges"; "SimpleRanges"; "Verbose"; "Verbose"; "Verbose+Viewpos"; "Verbose+Viewpos"}, ;, ;, when(0), 1)
PC_OPTIONS_DVARYESNO(5, "@MENU_FPSLABELS", "cg_drawFPSLabels", ;, when(0))
PC_OPTIONS_STRLIST_RAW(4, "@MENU_DRAWFPS", "cg_drawFPS", {"Off"; "Off"; "Simple"; "Simple"; "SimpleRanges"; "SimpleRanges"; "Verbose"; "Verbose"; "Verbose+Viewpos"; "Verbose+Viewpos"}, ;, "@MENU_DESC_DRAWFPS", when(0), 1)
PC_OPTIONS_DVARYESNO(5, "@MENU_FPSLABELS", "cg_drawFPSLabels", "@MENU_DESC_FPSLABELS", when(0))
PC_OPTIONS_SEPERATOR(5)
PC_OPTIONS_DVARYESNO_RAW(6, "@MENU_STREAMFRIENDLY_UI", "ui_streamFriendly", ;, "@MPUI_DESC_STREAM_FRIENDLY_UI", when(0), 1)
PC_OPTIONS_FLOATLIST_RAW(7, "@MENU_FRIENDNOTIFY", "cl_notifyFriendState", {"Always" -1 "Never" 0 "in Menu" 1}, ;, "@MPUI_DESC_FRIENDNOTIFY", when(dvarBool("ui_streamFriendly")), 1)
PC_OPTIONS_DVARYESNO(7, "@MENU_FRIENDNOTIFY", "cl_notifyFriendState", "@MPUI_DESC_FRIENDNOTIFY", when(0))
}
}
@@ -15,7 +15,7 @@
allowedBinding "+talk"
visible when ( localvarint( "ui_tabDepth" ) == localvarint( "ui_popup_cac_primary_camo_tabDepth" ) )
exp rect y ( localvarfloat( "ui_popupYPos" ) + localvarint( "ui_tabDepth" ) * 20 )
execKey 168
execKeyInt 168
{
if ( localvarstring( "ui_selected_ref" ) != "none" && !isitemunlocked( getplayerdata( "customClasses" , localvarint( "classIndex" ) , "weaponSetups" , 0 , "weapon" ) + " " + localvarstring( "ui_selected_ref" ) ) )
{
@@ -2220,4 +2220,4 @@
visible when ( !isitemunlocked( getplayerdata( "customClasses" , localvarint( "classIndex" ) , "weaponSetups" , 0 , "weapon" ) + " " + localvarstring( "ui_selected_ref" ) ) )
}
}
}
}
+14
View File
@@ -0,0 +1,14 @@
r_glow "0"
r_glowRadius0 "0"
r_glowBloomCutoff "0.231778"
r_glowBloomDesaturation "0"
r_glowBloomIntensity0 "0"
r_filmEnable "1"
r_filmContrast "0.87104"
r_filmBrightness "0"
r_filmDesaturation "0.352396"
r_filmInvert "0"
r_filmLightTint "1.10838 1.10717 1.15409"
r_filmDarkTint "0.7 0.928125 1"
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loaded 100 of 554 files, more files were not shown because too many files have changed in this diff. Show more