This commit is contained in:
6arelyFuture 2021-09-29 19:33:45 +01:00
parent 2977800533
commit 2db0b1cd61
6 changed files with 492 additions and 448 deletions

View File

@ -31,38 +31,50 @@ monitorForRewards()
{ {
self endon( "disconnect" ); self endon( "disconnect" );
level endon( "game_ended" ); level endon( "game_ended" );
for ( ;; ) for ( ;; )
{ {
self waittill( "killed_enemy" ); self waittill( "killed_enemy" );
if ( self.pers["team"] == "axis" ) return; // It's infected. Once your team is axis you are done for the game if ( self.pers["team"] == "axis" ) return; // It's infected. Once your team is axis you are done for the game
count = self.kills; count = self.kills;
switch( count )
switch ( count )
{ {
case 1: case 1:
self scripts\_inf_utils::playLeaderDialog( "kill_confirmed" ); self scripts\_inf_utils::playLeaderDialog( "kill_confirmed" );
level thread dropAmmo( self ); level thread dropAmmo( self );
break; break;
case 5: case 5:
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "deployable_vest" ); self maps\mp\killstreaks\_killstreaks::giveKillstreak( "deployable_vest" );
break; break;
case 9: case 9:
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "predator_missile" ); self maps\mp\killstreaks\_killstreaks::giveKillstreak( "predator_missile" );
break; break;
case 18: case 18:
level thread maps\mp\killstreaks\_airdrop::doMegaC130FlyBy( self, self.origin, randomFloat( 360 ), "airdrop_grnd", -360 ); level thread maps\mp\killstreaks\_airdrop::doMegaC130FlyBy( self, self.origin, randomFloat( 360 ), "airdrop_grnd", -360 );
break; break;
case 25: case 25:
self maps\mp\killstreaks\_juggernaut::giveJuggernaut( "juggernaut" ); self maps\mp\killstreaks\_juggernaut::giveJuggernaut( "juggernaut" );
break; break;
case 45: case 45:
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130" ); self maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130" );
break; break;
case 85: case 85:
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_flares" ); self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_flares" );
break; break;
case 100: case 100:
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "osprey_gunner" ); self maps\mp\killstreaks\_killstreaks::giveKillstreak( "osprey_gunner" );
break; break;
case 120: case 120:
level thread maps\mp\killstreaks\_airdrop::dropNuke( self.origin, self, "nuke_drop" ); level thread maps\mp\killstreaks\_airdrop::dropNuke( self.origin, self, "nuke_drop" );
break; break;
@ -102,6 +114,7 @@ dropAmmo( owner )
boomPlayed = false; boomPlayed = false;
minDist = distance2D( c130.origin, dropSite ); minDist = distance2D( c130.origin, dropSite );
for ( ;; ) for ( ;; )
{ {
dist = distance2D( c130.origin, dropSite ); dist = distance2D( c130.origin, dropSite );
@ -116,6 +129,7 @@ dropAmmo( owner )
else if ( dist < 768 ) else if ( dist < 768 )
{ {
earthquake( 0.15, 1.5, dropSite, 1500 ); earthquake( 0.15, 1.5, dropSite, 1500 );
if ( !boomPlayed ) if ( !boomPlayed )
{ {
c130 playSound( "veh_ac130_sonic_boom" ); c130 playSound( "veh_ac130_sonic_boom" );
@ -131,7 +145,7 @@ dropAmmo( owner )
c130 notify ( "drop_crate" ); c130 notify ( "drop_crate" );
wait( 4 ); wait( 4 );
c130 delete(); c130 delete ();
} }
ammoCrateThink( dropType ) ammoCrateThink( dropType )
@ -176,12 +190,13 @@ giveJuggernautStub( juggType )
if ( isDefined( self.hasLightArmor ) && self.hasLightArmor == true ) if ( isDefined( self.hasLightArmor ) && self.hasLightArmor == true )
maps\mp\perks\_perkfunctions::removeLightArmor( self.previousMaxHealth ); maps\mp\perks\_perkfunctions::removeLightArmor( self.previousMaxHealth );
switch( juggType ) switch ( juggType )
{ {
case "juggernaut": case "juggernaut":
self.isJuggernaut = true; self.isJuggernaut = true;
self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], juggType, false, false ); self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], juggType, false, false );
break; break;
case "juggernaut_recon": case "juggernaut_recon":
self.isJuggernautRecon = true; self.isJuggernautRecon = true;
self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], juggType, false, false ); self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], juggType, false, false );

View File

@ -28,9 +28,11 @@ connected()
{ {
self endon( "disconnect" ); self endon( "disconnect" );
level endon( "game_ended" ); level endon( "game_ended" );
for ( ;; ) for ( ;; )
{ {
self waittill( "spawned_player" ); self waittill( "spawned_player" );
if ( self.pers["team"] != "allies" ) if ( self.pers["team"] != "allies" )
self.anti_camp = false; self.anti_camp = false;
} }
@ -46,9 +48,11 @@ startAntiCamp()
oldPosition = self.origin; oldPosition = self.origin;
self iPrintLnBold( "^1Run ^:For Your Life^7!" ); self iPrintLnBold( "^1Run ^:For Your Life^7!" );
self scripts\_inf_utils::playLeaderDialog( "pushforward" ); self scripts\_inf_utils::playLeaderDialog( "pushforward" );
for ( ;; ) for ( ;; )
{ {
wait( 7.5 ); wait( 7.5 );
if ( !self.anti_camp ) return; if ( !self.anti_camp ) return;
if ( self isUsingRemote() ) continue; if ( self isUsingRemote() ) continue;
@ -58,6 +62,7 @@ startAntiCamp()
if ( distance2D( oldPosition, newPosition ) < ANTI_CAMP_RADIUS ) if ( distance2D( oldPosition, newPosition ) < ANTI_CAMP_RADIUS )
{ {
dmg = 80; dmg = 80;
if ( self.health > 100 ) dmg = 300; // Jugg ? if ( self.health > 100 ) dmg = 300; // Jugg ?
radiusDamage( newPosition, 36, dmg, dmg * 0.75, undefined, "MOD_TRIGGER_HURT" ); radiusDamage( newPosition, 36, dmg, dmg * 0.75, undefined, "MOD_TRIGGER_HURT" );
@ -72,10 +77,12 @@ monitorKillStreak()
{ {
level endon( "game_ended" ); level endon( "game_ended" );
self endon ( "disconnect" ); self endon ( "disconnect" );
for ( ;; ) for ( ;; )
{ {
self waittill( "killed_enemy" ); self waittill( "killed_enemy" );
count = self getPlayerData( "killstreaksState", "count" ); count = self getPlayerData( "killstreaksState", "count" );
if ( count > 24 && self.pers["team"] != "axis" ) if ( count > 24 && self.pers["team"] != "axis" )
{ {
self.anti_camp = true; self.anti_camp = true;

View File

@ -20,10 +20,11 @@ antiRageQuit()
for ( ;; ) for ( ;; )
{ {
wait( .5 ); wait( .5 );
// If it's only 2 people let them quit
if (level.players.size < 3) continue;
foreach( player in level.players ) // If it's only 2 people let them quit
if ( level.players.size < 3 ) continue;
foreach ( player in level.players )
{ {
if ( player.pers["team"] == "axis" ) if ( player.pers["team"] == "axis" )
{ {

View File

@ -35,10 +35,12 @@ connected()
{ {
self endon( "disconnect" ); self endon( "disconnect" );
level endon( "game_ended" ); level endon( "game_ended" );
for ( ;; ) for ( ;; )
{ {
self waittill( "spawned_player" ); self waittill( "spawned_player" );
waittillframeend; waittillframeend;
if ( self.pers["team"] == "allies" ) if ( self.pers["team"] == "allies" )
{ {
self giveAllPerks(); self giveAllPerks();
@ -81,12 +83,13 @@ giveAllPerks()
perks[ perks.size ] = "specialty_reducedsway"; perks[ perks.size ] = "specialty_reducedsway";
perks[ perks.size ] = "specialty_lightweight"; perks[ perks.size ] = "specialty_lightweight";
foreach( perkName in perks ) foreach ( perkName in perks )
{ {
if( !self _hasPerk( perkName ) ) if ( !self _hasPerk( perkName ) )
{ {
self givePerk( perkName, false ); self givePerk( perkName, false );
if( maps\mp\gametypes\_class::isPerkUpgraded( perkName ) )
if ( maps\mp\gametypes\_class::isPerkUpgraded( perkName ) )
{ {
perkUpgrade = tablelookup( "mp/perktable.csv", 1, perkName, 8 ); perkUpgrade = tablelookup( "mp/perktable.csv", 1, perkName, 8 );
self givePerk( perkUpgrade, false ); self givePerk( perkUpgrade, false );
@ -112,6 +115,7 @@ playerModelForWeaponStub( weapon, secondary )
[[game[ team + "_model" ]["GHILLIE"]]](); [[game[ team + "_model" ]["GHILLIE"]]]();
else else
[[game[ team + "_model" ]["SNIPER"]]](); [[game[ team + "_model" ]["SNIPER"]]]();
return; return;
} }
@ -122,26 +126,33 @@ playerModelForWeaponStub( weapon, secondary )
case "weapon_smg": case "weapon_smg":
[[game[ team + "_model" ]["SMG"]]](); [[game[ team + "_model" ]["SMG"]]]();
break; break;
case "weapon_assault": case "weapon_assault":
[[game[ team + "_model" ]["ASSAULT"]]](); [[game[ team + "_model" ]["ASSAULT"]]]();
break; break;
case "weapon_sniper": case "weapon_sniper":
if ( level.environment != "" && self isItemUnlocked( "ghillie_" + level.environment ) ) if ( level.environment != "" && self isItemUnlocked( "ghillie_" + level.environment ) )
[[game[ team + "_model" ]["GHILLIE"]]](); [[game[ team + "_model" ]["GHILLIE"]]]();
else else
[[game[ team + "_model" ]["SNIPER"]]](); [[game[ team + "_model" ]["SNIPER"]]]();
break; break;
case "weapon_lmg": case "weapon_lmg":
[[game[ team + "_model" ]["LMG"]]](); [[game[ team + "_model" ]["LMG"]]]();
break; break;
case "weapon_riot": case "weapon_riot":
[[game[ team + "_model" ]["RIOT"]]](); [[game[ team + "_model" ]["RIOT"]]]();
break; break;
case "weapon_shotgun": case "weapon_shotgun":
[[game[ team + "_model" ]["SHOTGUN"]]](); [[game[ team + "_model" ]["SHOTGUN"]]]();
break; break;
default: default:
[[game[team+"_model"]["ASSAULT"]]](); [[game[team + "_model"]["ASSAULT"]]]();
break; break;
} }

View File

@ -29,6 +29,7 @@ domeDyn()
for ( i = 0; i < animated.size; i++ ) for ( i = 0; i < animated.size; i++ )
{ {
model_name = animated[i].model; model_name = animated[i].model;
if ( isSubStr( model_name, "fence_tarp_" ) ) if ( isSubStr( model_name, "fence_tarp_" ) )
{ {
// print( "domeDyn fence_tarp_" ); // print( "domeDyn fence_tarp_" );
@ -70,7 +71,7 @@ doBoxEffect( effect )
forward = AnglesToForward( self.angles ); forward = AnglesToForward( self.angles );
up = AnglesToUp( self.angles ); up = AnglesToUp( self.angles );
effect delete(); effect delete ();
PlayFX( getfx( "box_explode_mp" ), self.origin, forward, up ); PlayFX( getfx( "box_explode_mp" ), self.origin, forward, up );
self self_func( "scriptModelClearAnim" ); self self_func( "scriptModelClearAnim" );
@ -98,8 +99,8 @@ windsockLarge()
{ {
self self_func( "scriptModelClearAnim" ); self self_func( "scriptModelClearAnim" );
self.origin += ( 0, 0, 20 ); self.origin += ( 0, 0, 20 );
bounds_1 = spawn("script_model", self.origin + ( 15, -7, 0 ) ); bounds_1 = spawn( "script_model", self.origin + ( 15, -7, 0 ) );
bounds_2 = spawn("script_model", self.origin + ( 70, -38, 0 ) ); bounds_2 = spawn( "script_model", self.origin + ( 70, -38, 0 ) );
bounds_1 setModel( "com_plasticcase_friendly" ); bounds_1 setModel( "com_plasticcase_friendly" );
bounds_2 setModel( "com_plasticcase_friendly" ); bounds_2 setModel( "com_plasticcase_friendly" );
@ -125,6 +126,7 @@ nukeDeath()
{ {
level endon( "game_ended" ); level endon( "game_ended" );
gameFlagWait( "prematch_done" ); gameFlagWait( "prematch_done" );
if ( getDvar( "mapname" ) != "mp_dome" ) return; if ( getDvar( "mapname" ) != "mp_dome" ) return;
for ( ;; ) for ( ;; )
@ -135,6 +137,7 @@ nukeDeath()
for ( i = 0; i < dynamic.size; i++ ) for ( i = 0; i < dynamic.size; i++ )
{ {
model_name = dynamic[i].model; model_name = dynamic[i].model;
if ( isSubStr( model_name, "fence_tarp_" ) ) if ( isSubStr( model_name, "fence_tarp_" ) )
{ {
// print( "Doing fenceEffect" ); // print( "Doing fenceEffect" );
@ -168,12 +171,12 @@ nukeDeath()
} }
wait( 5 ); wait( 5 );
ents_to_blowup = getentarray("destructable", "targetname"); ents_to_blowup = getentarray( "destructable", "targetname" );
ents_to_blowup = array_combine( ents_to_blowup, getentarray( "destructible_toy", "targetname" ) ); ents_to_blowup = array_combine( ents_to_blowup, getentarray( "destructible_toy", "targetname" ) );
ents_to_blowup = array_combine( ents_to_blowup, getentarray( "destructible_vehicle", "targetname" ) ); ents_to_blowup = array_combine( ents_to_blowup, getentarray( "destructible_vehicle", "targetname" ) );
ents_to_blowup = array_combine( ents_to_blowup, getentarray( "explodable_barrel", "targetname" ) ); ents_to_blowup = array_combine( ents_to_blowup, getentarray( "explodable_barrel", "targetname" ) );
for (i = 0; i < ents_to_blowup.size; i++) for ( i = 0; i < ents_to_blowup.size; i++ )
{ {
ents_to_blowup[i] thread maps\mp\_destructables::destructable_destruct(); ents_to_blowup[i] thread maps\mp\_destructables::destructable_destruct();
} }

View File

@ -25,6 +25,7 @@ init()
thread gameStart(); thread gameStart();
if ( getDvarInt( "sv_fallDamage" ) != 0 ) return; if ( getDvarInt( "sv_fallDamage" ) != 0 ) return;
level.prevCallbackPlayerDamage = level.callbackPlayerDamage; level.prevCallbackPlayerDamage = level.callbackPlayerDamage;
level.callbackPlayerDamage = ::codeCallbackPlayerDamage; level.callbackPlayerDamage = ::codeCallbackPlayerDamage;
} }
@ -32,15 +33,19 @@ init()
gameEnded() gameEnded()
{ {
gameFlagWait( "prematch_done" ); gameFlagWait( "prematch_done" );
for ( ;; ) for ( ;; )
{ {
level waittill( "game_ended", team ); level waittill( "game_ended", team );
foreach ( player in level.players ) foreach ( player in level.players )
{ {
player setClientDvar ( "cg_thirdperson", true ); player setClientDvar ( "cg_thirdperson", true );
player setClientDvar ( "cg_thirdPersonRange", 170 ); player setClientDvar ( "cg_thirdPersonRange", 170 );
} }
wait( 1.5 ); wait( 1.5 );
foreach ( player in level.players ) foreach ( player in level.players )
{ {
player freezecontrols( false ); player freezecontrols( false );
@ -52,6 +57,7 @@ gameEnded()
gameStart() gameStart()
{ {
gameFlagWait( "prematch_done" ); gameFlagWait( "prematch_done" );
foreach ( player in level.players ) foreach ( player in level.players )
{ {
player setClientDvar ( "cg_thirdperson", false ); player setClientDvar ( "cg_thirdperson", false );
@ -111,6 +117,7 @@ GlowStickDamageListenerStub( owner )
if ( !isdefined( self ) ) if ( !isdefined( self ) )
return; return;
// Can only be damaged by knife // Can only be damaged by knife
if ( type == "MOD_MELEE" ) if ( type == "MOD_MELEE" )
{ {
@ -118,7 +125,7 @@ GlowStickDamageListenerStub( owner )
self.wasDamaged = true; self.wasDamaged = true;
} }
if( isPlayer( attacker ) ) if ( isPlayer( attacker ) )
{ {
attacker maps\mp\gametypes\_damagefeedback::updateDamageFeedback( "tactical_insertion" ); attacker maps\mp\gametypes\_damagefeedback::updateDamageFeedback( "tactical_insertion" );
} }