mirror of
https://github.com/diamante0018/InfectedGSC.git
synced 2025-04-20 20:35:43 +00:00
Style
This commit is contained in:
parent
2977800533
commit
2db0b1cd61
@ -20,52 +20,64 @@ init()
|
||||
|
||||
onConnect()
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "connected", player );
|
||||
player thread monitorForRewards();
|
||||
}
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "connected", player );
|
||||
player thread monitorForRewards();
|
||||
}
|
||||
}
|
||||
|
||||
monitorForRewards()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "killed_enemy" );
|
||||
|
||||
if ( self.pers["team"] == "axis" ) return; // It's infected. Once your team is axis you are done for the game
|
||||
|
||||
count = self.kills;
|
||||
switch( count )
|
||||
|
||||
switch ( count )
|
||||
{
|
||||
case 1:
|
||||
self scripts\_inf_utils::playLeaderDialog( "kill_confirmed" );
|
||||
level thread dropAmmo( self );
|
||||
break;
|
||||
case 5:
|
||||
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "deployable_vest" );
|
||||
break;
|
||||
case 9:
|
||||
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "predator_missile" );
|
||||
break;
|
||||
case 18:
|
||||
level thread maps\mp\killstreaks\_airdrop::doMegaC130FlyBy( self, self.origin, randomFloat( 360 ), "airdrop_grnd", -360 );
|
||||
break;
|
||||
case 25:
|
||||
self maps\mp\killstreaks\_juggernaut::giveJuggernaut( "juggernaut" );
|
||||
break;
|
||||
case 45:
|
||||
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130" );
|
||||
break;
|
||||
case 85:
|
||||
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_flares" );
|
||||
break;
|
||||
case 100:
|
||||
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "osprey_gunner" );
|
||||
break;
|
||||
case 120:
|
||||
level thread maps\mp\killstreaks\_airdrop::dropNuke( self.origin, self, "nuke_drop" );
|
||||
break;
|
||||
case 1:
|
||||
self scripts\_inf_utils::playLeaderDialog( "kill_confirmed" );
|
||||
level thread dropAmmo( self );
|
||||
break;
|
||||
|
||||
case 5:
|
||||
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "deployable_vest" );
|
||||
break;
|
||||
|
||||
case 9:
|
||||
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "predator_missile" );
|
||||
break;
|
||||
|
||||
case 18:
|
||||
level thread maps\mp\killstreaks\_airdrop::doMegaC130FlyBy( self, self.origin, randomFloat( 360 ), "airdrop_grnd", -360 );
|
||||
break;
|
||||
|
||||
case 25:
|
||||
self maps\mp\killstreaks\_juggernaut::giveJuggernaut( "juggernaut" );
|
||||
break;
|
||||
|
||||
case 45:
|
||||
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "ac130" );
|
||||
break;
|
||||
|
||||
case 85:
|
||||
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "helicopter_flares" );
|
||||
break;
|
||||
|
||||
case 100:
|
||||
self maps\mp\killstreaks\_killstreaks::giveKillstreak( "osprey_gunner" );
|
||||
break;
|
||||
|
||||
case 120:
|
||||
level thread maps\mp\killstreaks\_airdrop::dropNuke( self.origin, self, "nuke_drop" );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -102,6 +114,7 @@ dropAmmo( owner )
|
||||
|
||||
boomPlayed = false;
|
||||
minDist = distance2D( c130.origin, dropSite );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
dist = distance2D( c130.origin, dropSite );
|
||||
@ -116,6 +129,7 @@ dropAmmo( owner )
|
||||
else if ( dist < 768 )
|
||||
{
|
||||
earthquake( 0.15, 1.5, dropSite, 1500 );
|
||||
|
||||
if ( !boomPlayed )
|
||||
{
|
||||
c130 playSound( "veh_ac130_sonic_boom" );
|
||||
@ -131,7 +145,7 @@ dropAmmo( owner )
|
||||
c130 notify ( "drop_crate" );
|
||||
|
||||
wait( 4 );
|
||||
c130 delete();
|
||||
c130 delete ();
|
||||
}
|
||||
|
||||
ammoCrateThink( dropType )
|
||||
@ -176,24 +190,25 @@ giveJuggernautStub( juggType )
|
||||
if ( isDefined( self.hasLightArmor ) && self.hasLightArmor == true )
|
||||
maps\mp\perks\_perkfunctions::removeLightArmor( self.previousMaxHealth );
|
||||
|
||||
switch( juggType )
|
||||
switch ( juggType )
|
||||
{
|
||||
case "juggernaut":
|
||||
self.isJuggernaut = true;
|
||||
self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], juggType, false, false );
|
||||
break;
|
||||
case "juggernaut_recon":
|
||||
self.isJuggernautRecon = true;
|
||||
self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], juggType, false, false );
|
||||
case "juggernaut":
|
||||
self.isJuggernaut = true;
|
||||
self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], juggType, false, false );
|
||||
break;
|
||||
|
||||
portable_radar = spawn( "script_model", self.origin );
|
||||
portable_radar.team = self.team;
|
||||
case "juggernaut_recon":
|
||||
self.isJuggernautRecon = true;
|
||||
self maps\mp\gametypes\_class::giveLoadout( self.pers["team"], juggType, false, false );
|
||||
|
||||
portable_radar makePortableRadar( self );
|
||||
self.personalRadar = portable_radar;
|
||||
portable_radar = spawn( "script_model", self.origin );
|
||||
portable_radar.team = self.team;
|
||||
|
||||
self thread maps\mp\killstreaks\_juggernaut::radarMover( portable_radar );
|
||||
break;
|
||||
portable_radar makePortableRadar( self );
|
||||
self.personalRadar = portable_radar;
|
||||
|
||||
self thread maps\mp\killstreaks\_juggernaut::radarMover( portable_radar );
|
||||
break;
|
||||
}
|
||||
|
||||
if ( !getDvarInt( "camera_thirdPerson" ) )
|
||||
|
@ -11,76 +11,83 @@ ANTI_CAMP_RADIUS = 350;
|
||||
|
||||
init()
|
||||
{
|
||||
thread onConnect();
|
||||
thread onConnect();
|
||||
}
|
||||
|
||||
onConnect()
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "connected", player );
|
||||
player thread monitorKillStreak();
|
||||
player thread connected();
|
||||
}
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "connected", player );
|
||||
player thread monitorKillStreak();
|
||||
player thread connected();
|
||||
}
|
||||
}
|
||||
|
||||
connected()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "spawned_player" );
|
||||
if ( self.pers["team"] != "allies" )
|
||||
self.anti_camp = false;
|
||||
}
|
||||
self endon( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "spawned_player" );
|
||||
|
||||
if ( self.pers["team"] != "allies" )
|
||||
self.anti_camp = false;
|
||||
}
|
||||
}
|
||||
|
||||
startAntiCamp()
|
||||
{
|
||||
assert( self.pers["team"] == "allies" );
|
||||
assert( self.pers["team"] == "allies" );
|
||||
|
||||
level endon( "game_ended" );
|
||||
self endon ( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
self endon ( "disconnect" );
|
||||
|
||||
oldPosition = self.origin;
|
||||
self iPrintLnBold( "^1Run ^:For Your Life^7!" );
|
||||
self scripts\_inf_utils::playLeaderDialog( "pushforward" );
|
||||
for ( ;; )
|
||||
{
|
||||
wait( 7.5 );
|
||||
if ( !self.anti_camp ) return;
|
||||
oldPosition = self.origin;
|
||||
self iPrintLnBold( "^1Run ^:For Your Life^7!" );
|
||||
self scripts\_inf_utils::playLeaderDialog( "pushforward" );
|
||||
|
||||
if ( self isUsingRemote() ) continue;
|
||||
for ( ;; )
|
||||
{
|
||||
wait( 7.5 );
|
||||
|
||||
newPosition = self.origin;
|
||||
if ( !self.anti_camp ) return;
|
||||
|
||||
if ( distance2D( oldPosition, newPosition ) < ANTI_CAMP_RADIUS )
|
||||
{
|
||||
dmg = 80;
|
||||
if ( self.health > 100 ) dmg = 300; // Jugg ?
|
||||
if ( self isUsingRemote() ) continue;
|
||||
|
||||
radiusDamage( newPosition, 36, dmg, dmg * 0.75, undefined, "MOD_TRIGGER_HURT" );
|
||||
self scripts\_inf_utils::playLeaderDialog( "new_positions" );
|
||||
}
|
||||
newPosition = self.origin;
|
||||
|
||||
oldPosition = self.origin;
|
||||
}
|
||||
if ( distance2D( oldPosition, newPosition ) < ANTI_CAMP_RADIUS )
|
||||
{
|
||||
dmg = 80;
|
||||
|
||||
if ( self.health > 100 ) dmg = 300; // Jugg ?
|
||||
|
||||
radiusDamage( newPosition, 36, dmg, dmg * 0.75, undefined, "MOD_TRIGGER_HURT" );
|
||||
self scripts\_inf_utils::playLeaderDialog( "new_positions" );
|
||||
}
|
||||
|
||||
oldPosition = self.origin;
|
||||
}
|
||||
}
|
||||
|
||||
monitorKillStreak()
|
||||
{
|
||||
level endon( "game_ended" );
|
||||
self endon ( "disconnect" );
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "killed_enemy" );
|
||||
count = self getPlayerData( "killstreaksState", "count" );
|
||||
if ( count > 24 && self.pers["team"] != "axis" )
|
||||
{
|
||||
self.anti_camp = true;
|
||||
self thread startAntiCamp();
|
||||
return;
|
||||
}
|
||||
}
|
||||
level endon( "game_ended" );
|
||||
self endon ( "disconnect" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "killed_enemy" );
|
||||
count = self getPlayerData( "killstreaksState", "count" );
|
||||
|
||||
if ( count > 24 && self.pers["team"] != "axis" )
|
||||
{
|
||||
self.anti_camp = true;
|
||||
self thread startAntiCamp();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,27 +9,28 @@
|
||||
|
||||
init()
|
||||
{
|
||||
thread antiRageQuit();
|
||||
thread antiRageQuit();
|
||||
}
|
||||
|
||||
antiRageQuit()
|
||||
{
|
||||
level endon( "game_ended" );
|
||||
gameFlagWait( "prematch_done" );
|
||||
level endon( "game_ended" );
|
||||
gameFlagWait( "prematch_done" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
wait( .5 );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
wait( .5 );
|
||||
// If it's only 2 people let them quit
|
||||
if (level.players.size < 3) continue;
|
||||
if ( level.players.size < 3 ) continue;
|
||||
|
||||
foreach( player in level.players )
|
||||
{
|
||||
if ( player.pers["team"] == "axis" )
|
||||
{
|
||||
player closepopupmenu( "" );
|
||||
player closeingamemenu();
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach ( player in level.players )
|
||||
{
|
||||
if ( player.pers["team"] == "axis" )
|
||||
{
|
||||
player closepopupmenu( "" );
|
||||
player closeingamemenu();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,143 +10,154 @@
|
||||
|
||||
init()
|
||||
{
|
||||
replaceFunc( maps\mp\gametypes\_teams::playerModelForWeapon, ::playerModelForWeaponStub );
|
||||
replaceFunc( maps\mp\gametypes\_teams::playerModelForWeapon, ::playerModelForWeaponStub );
|
||||
|
||||
thread onConnect();
|
||||
thread onConnect();
|
||||
|
||||
preCacheShader( "specialty_carepackage_crate" );
|
||||
preCacheShader( "iw5_cardicon_medkit" );
|
||||
preCacheShader( "iw5_cardicon_juggernaut_a" );
|
||||
preCacheShader( "specialty_carepackage_crate" );
|
||||
preCacheShader( "iw5_cardicon_medkit" );
|
||||
preCacheShader( "iw5_cardicon_juggernaut_a" );
|
||||
|
||||
preCacheItem( "at4_mp" );
|
||||
precacheItem( "uav_strike_marker_mp" );
|
||||
preCacheItem( "at4_mp" );
|
||||
precacheItem( "uav_strike_marker_mp" );
|
||||
}
|
||||
|
||||
onConnect()
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "connected", player );
|
||||
player thread connected();
|
||||
}
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "connected", player );
|
||||
player thread connected();
|
||||
}
|
||||
}
|
||||
|
||||
connected()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "spawned_player" );
|
||||
waittillframeend;
|
||||
if ( self.pers["team"] == "allies" )
|
||||
{
|
||||
self giveAllPerks();
|
||||
}
|
||||
else
|
||||
{
|
||||
self giveAllPerks();
|
||||
self SetOffhandPrimaryClass( "other" );
|
||||
self giveWeapon( "bouncingbetty_mp" );
|
||||
}
|
||||
}
|
||||
self endon( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "spawned_player" );
|
||||
waittillframeend;
|
||||
|
||||
if ( self.pers["team"] == "allies" )
|
||||
{
|
||||
self giveAllPerks();
|
||||
}
|
||||
else
|
||||
{
|
||||
self giveAllPerks();
|
||||
self SetOffhandPrimaryClass( "other" );
|
||||
self giveWeapon( "bouncingbetty_mp" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
giveAllPerks()
|
||||
{
|
||||
perks = [];
|
||||
perks[ perks.size ] = "specialty_longersprint";
|
||||
perks[ perks.size ] = "specialty_fastreload";
|
||||
perks[ perks.size ] = "specialty_scavenger";
|
||||
perks[ perks.size ] = "specialty_blindeye";
|
||||
perks[ perks.size ] = "specialty_paint";
|
||||
perks[ perks.size ] = "specialty_hardline";
|
||||
perks[ perks.size ] = "specialty_coldblooded";
|
||||
perks[ perks.size ] = "specialty_quickdraw";
|
||||
perks = [];
|
||||
perks[ perks.size ] = "specialty_longersprint";
|
||||
perks[ perks.size ] = "specialty_fastreload";
|
||||
perks[ perks.size ] = "specialty_scavenger";
|
||||
perks[ perks.size ] = "specialty_blindeye";
|
||||
perks[ perks.size ] = "specialty_paint";
|
||||
perks[ perks.size ] = "specialty_hardline";
|
||||
perks[ perks.size ] = "specialty_coldblooded";
|
||||
perks[ perks.size ] = "specialty_quickdraw";
|
||||
|
||||
perks[ perks.size ] = "_specialty_blastshield";
|
||||
perks[ perks.size ] = "specialty_detectexplosive";
|
||||
perks[ perks.size ] = "specialty_autospot";
|
||||
perks[ perks.size ] = "specialty_bulletaccuracy";
|
||||
perks[ perks.size ] = "_specialty_blastshield";
|
||||
perks[ perks.size ] = "specialty_detectexplosive";
|
||||
perks[ perks.size ] = "specialty_autospot";
|
||||
perks[ perks.size ] = "specialty_bulletaccuracy";
|
||||
|
||||
perks[ perks.size ] = "specialty_quieter";
|
||||
perks[ perks.size ] = "specialty_stalker";
|
||||
perks[ perks.size ] = "specialty_quieter";
|
||||
perks[ perks.size ] = "specialty_stalker";
|
||||
|
||||
perks[ perks.size ] = "specialty_bulletpenetration";
|
||||
perks[ perks.size ] = "specialty_marksman";
|
||||
perks[ perks.size ] = "specialty_sharp_focus";
|
||||
perks[ perks.size ] = "specialty_holdbreathwhileads";
|
||||
perks[ perks.size ] = "specialty_longerrange";
|
||||
perks[ perks.size ] = "specialty_fastermelee";
|
||||
perks[ perks.size ] = "specialty_reducedsway";
|
||||
perks[ perks.size ] = "specialty_lightweight";
|
||||
perks[ perks.size ] = "specialty_bulletpenetration";
|
||||
perks[ perks.size ] = "specialty_marksman";
|
||||
perks[ perks.size ] = "specialty_sharp_focus";
|
||||
perks[ perks.size ] = "specialty_holdbreathwhileads";
|
||||
perks[ perks.size ] = "specialty_longerrange";
|
||||
perks[ perks.size ] = "specialty_fastermelee";
|
||||
perks[ perks.size ] = "specialty_reducedsway";
|
||||
perks[ perks.size ] = "specialty_lightweight";
|
||||
|
||||
foreach( perkName in perks )
|
||||
{
|
||||
if( !self _hasPerk( perkName ) )
|
||||
{
|
||||
self givePerk( perkName, false );
|
||||
if( maps\mp\gametypes\_class::isPerkUpgraded( perkName ) )
|
||||
{
|
||||
perkUpgrade = tablelookup( "mp/perktable.csv", 1, perkName, 8 );
|
||||
self givePerk( perkUpgrade, false );
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach ( perkName in perks )
|
||||
{
|
||||
if ( !self _hasPerk( perkName ) )
|
||||
{
|
||||
self givePerk( perkName, false );
|
||||
|
||||
if ( maps\mp\gametypes\_class::isPerkUpgraded( perkName ) )
|
||||
{
|
||||
perkUpgrade = tablelookup( "mp/perktable.csv", 1, perkName, 8 );
|
||||
self givePerk( perkUpgrade, false );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
playerModelForWeaponStub( weapon, secondary )
|
||||
{
|
||||
team = self.team;
|
||||
team = self.team;
|
||||
|
||||
if ( isDefined( game[ team + "_model" ][weapon] ) )
|
||||
{
|
||||
[[game[ team + "_model" ][weapon]]]();
|
||||
return;
|
||||
}
|
||||
if ( isDefined( game[ team + "_model" ][weapon] ) )
|
||||
{
|
||||
[[game[ team + "_model" ][weapon]]]();
|
||||
return;
|
||||
}
|
||||
|
||||
// Hack for infected players
|
||||
if ( self.pers["team"] == "axis" )
|
||||
{
|
||||
if ( level.environment != "" && self isItemUnlocked( "ghillie_" + level.environment ) )
|
||||
[[game[ team + "_model" ]["GHILLIE"]]]();
|
||||
else
|
||||
[[game[ team + "_model" ]["SNIPER"]]]();
|
||||
return;
|
||||
}
|
||||
if ( self.pers["team"] == "axis" )
|
||||
{
|
||||
if ( level.environment != "" && self isItemUnlocked( "ghillie_" + level.environment ) )
|
||||
[[game[ team + "_model" ]["GHILLIE"]]]();
|
||||
else
|
||||
[[game[ team + "_model" ]["SNIPER"]]]();
|
||||
|
||||
weaponClass = tablelookup( "mp/statstable.csv", 4, weapon, 2 );
|
||||
return;
|
||||
}
|
||||
|
||||
switch ( weaponClass )
|
||||
{
|
||||
case "weapon_smg":
|
||||
[[game[ team + "_model" ]["SMG"]]]();
|
||||
break;
|
||||
case "weapon_assault":
|
||||
[[game[ team + "_model" ]["ASSAULT"]]]();
|
||||
break;
|
||||
case "weapon_sniper":
|
||||
if ( level.environment != "" && self isItemUnlocked( "ghillie_" + level.environment ) )
|
||||
[[game[ team + "_model" ]["GHILLIE"]]]();
|
||||
else
|
||||
[[game[ team + "_model" ]["SNIPER"]]]();
|
||||
break;
|
||||
case "weapon_lmg":
|
||||
[[game[ team + "_model" ]["LMG"]]]();
|
||||
break;
|
||||
case "weapon_riot":
|
||||
[[game[ team + "_model" ]["RIOT"]]]();
|
||||
break;
|
||||
case "weapon_shotgun":
|
||||
[[game[ team + "_model" ]["SHOTGUN"]]]();
|
||||
break;
|
||||
default:
|
||||
[[game[team+"_model"]["ASSAULT"]]]();
|
||||
break;
|
||||
}
|
||||
weaponClass = tablelookup( "mp/statstable.csv", 4, weapon, 2 );
|
||||
|
||||
if ( self isJuggernaut() )
|
||||
{
|
||||
[[game[ team + "_model" ]["JUGGERNAUT"]]]();
|
||||
}
|
||||
switch ( weaponClass )
|
||||
{
|
||||
case "weapon_smg":
|
||||
[[game[ team + "_model" ]["SMG"]]]();
|
||||
break;
|
||||
|
||||
case "weapon_assault":
|
||||
[[game[ team + "_model" ]["ASSAULT"]]]();
|
||||
break;
|
||||
|
||||
case "weapon_sniper":
|
||||
if ( level.environment != "" && self isItemUnlocked( "ghillie_" + level.environment ) )
|
||||
[[game[ team + "_model" ]["GHILLIE"]]]();
|
||||
else
|
||||
[[game[ team + "_model" ]["SNIPER"]]]();
|
||||
|
||||
break;
|
||||
|
||||
case "weapon_lmg":
|
||||
[[game[ team + "_model" ]["LMG"]]]();
|
||||
break;
|
||||
|
||||
case "weapon_riot":
|
||||
[[game[ team + "_model" ]["RIOT"]]]();
|
||||
break;
|
||||
|
||||
case "weapon_shotgun":
|
||||
[[game[ team + "_model" ]["SHOTGUN"]]]();
|
||||
break;
|
||||
|
||||
default:
|
||||
[[game[team + "_model"]["ASSAULT"]]]();
|
||||
break;
|
||||
}
|
||||
|
||||
if ( self isJuggernaut() )
|
||||
{
|
||||
[[game[ team + "_model" ]["JUGGERNAUT"]]]();
|
||||
}
|
||||
}
|
||||
|
@ -9,176 +9,179 @@
|
||||
|
||||
init()
|
||||
{
|
||||
level._effect[ "nolight_burst_mp" ] = loadfx( "fire/firelp_huge_pm_nolight_burst" );
|
||||
precacheMpAnim( "windmill_spin_med" );
|
||||
precacheMpAnim( "foliage_desertbrush_1_sway" );
|
||||
precacheMpAnim( "oilpump_pump01" );
|
||||
precacheMpAnim( "oilpump_pump02" );
|
||||
precacheMpAnim( "windsock_large_wind_medium" );
|
||||
level._effect[ "nolight_burst_mp" ] = loadfx( "fire/firelp_huge_pm_nolight_burst" );
|
||||
precacheMpAnim( "windmill_spin_med" );
|
||||
precacheMpAnim( "foliage_desertbrush_1_sway" );
|
||||
precacheMpAnim( "oilpump_pump01" );
|
||||
precacheMpAnim( "oilpump_pump02" );
|
||||
precacheMpAnim( "windsock_large_wind_medium" );
|
||||
|
||||
thread domeDyn();
|
||||
thread nukeDeath();
|
||||
thread domeDyn();
|
||||
thread nukeDeath();
|
||||
}
|
||||
|
||||
domeDyn()
|
||||
{
|
||||
if ( getDvar( "mapname" ) != "mp_dome" ) return;
|
||||
if ( getDvar( "mapname" ) != "mp_dome" ) return;
|
||||
|
||||
animated = getentarray( "animated_model", "targetname" );
|
||||
animated = getentarray( "animated_model", "targetname" );
|
||||
|
||||
for ( i = 0; i < animated.size; i++ )
|
||||
{
|
||||
model_name = animated[i].model;
|
||||
if ( isSubStr( model_name, "fence_tarp_" ) )
|
||||
{
|
||||
for ( i = 0; i < animated.size; i++ )
|
||||
{
|
||||
model_name = animated[i].model;
|
||||
|
||||
if ( isSubStr( model_name, "fence_tarp_" ) )
|
||||
{
|
||||
// print( "domeDyn fence_tarp_" );
|
||||
animated[i].targetname = "dynamic_model";
|
||||
precacheMpAnim( model_name + "_med_01" );
|
||||
animated[i] ScriptModelPlayAnim( model_name + "_med_01" );
|
||||
}
|
||||
else if ( model_name == "machinery_windmill" )
|
||||
{
|
||||
animated[i].targetname = "dynamic_model";
|
||||
precacheMpAnim( model_name + "_med_01" );
|
||||
animated[i] ScriptModelPlayAnim( model_name + "_med_01" );
|
||||
}
|
||||
else if ( model_name == "machinery_windmill" )
|
||||
{
|
||||
// print( "domeDyn machinery_windmill" );
|
||||
animated[i].targetname = "dynamic_model";
|
||||
animated[i] ScriptModelPlayAnim( "windmill_spin_med" );
|
||||
}
|
||||
else if ( isSubStr( model_name, "foliage" ) )
|
||||
{
|
||||
animated[i].targetname = "dynamic_model";
|
||||
animated[i] ScriptModelPlayAnim( "windmill_spin_med" );
|
||||
}
|
||||
else if ( isSubStr( model_name, "foliage" ) )
|
||||
{
|
||||
// print( "domeDyn foliage" );
|
||||
animated[i].targetname = "dynamic_model";
|
||||
animated[i] ScriptModelPlayAnim( "foliage_desertbrush_1_sway" );
|
||||
}
|
||||
else if ( isSubStr( model_name, "oil_pump_jack" ) )
|
||||
{
|
||||
animated[i].targetname = "dynamic_model";
|
||||
animated[i] ScriptModelPlayAnim( "foliage_desertbrush_1_sway" );
|
||||
}
|
||||
else if ( isSubStr( model_name, "oil_pump_jack" ) )
|
||||
{
|
||||
// print( "domeDyn oil_pump_jack" );
|
||||
animated[i].targetname = "dynamic_model";
|
||||
animation = "oilpump_pump0" + ( randomint( 2 ) + 1 );
|
||||
animated[i] ScriptModelPlayAnim( animation );
|
||||
}
|
||||
else if ( model_name == "accessories_windsock_large" )
|
||||
{
|
||||
animated[i].targetname = "dynamic_model";
|
||||
animation = "oilpump_pump0" + ( randomint( 2 ) + 1 );
|
||||
animated[i] ScriptModelPlayAnim( animation );
|
||||
}
|
||||
else if ( model_name == "accessories_windsock_large" )
|
||||
{
|
||||
// print( "domeDyn accessories_windsock_large" );
|
||||
animated[i].targetname = "dynamic_model";
|
||||
animated[i] ScriptModelPlayAnim( "windsock_large_wind_medium" );
|
||||
}
|
||||
}
|
||||
animated[i].targetname = "dynamic_model";
|
||||
animated[i] ScriptModelPlayAnim( "windsock_large_wind_medium" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
doBoxEffect( effect )
|
||||
{
|
||||
wait ( 3 );
|
||||
forward = AnglesToForward( self.angles );
|
||||
up = AnglesToUp( self.angles );
|
||||
wait ( 3 );
|
||||
forward = AnglesToForward( self.angles );
|
||||
up = AnglesToUp( self.angles );
|
||||
|
||||
effect delete();
|
||||
PlayFX( getfx( "box_explode_mp" ), self.origin, forward, up );
|
||||
effect delete ();
|
||||
PlayFX( getfx( "box_explode_mp" ), self.origin, forward, up );
|
||||
|
||||
self self_func( "scriptModelClearAnim" );
|
||||
self Hide();
|
||||
self self_func( "scriptModelClearAnim" );
|
||||
self Hide();
|
||||
}
|
||||
|
||||
fenceEffect()
|
||||
{
|
||||
forward = AnglesToForward( self.angles );
|
||||
up = AnglesToUp( self.angles );
|
||||
forward = AnglesToForward( self.angles );
|
||||
up = AnglesToUp( self.angles );
|
||||
|
||||
fxEnt = SpawnFx( getfx( "nolight_burst_mp" ), self.origin, forward, up );
|
||||
TriggerFx( fxEnt );
|
||||
fxEnt = SpawnFx( getfx( "nolight_burst_mp" ), self.origin, forward, up );
|
||||
TriggerFx( fxEnt );
|
||||
|
||||
self thread doBoxEffect( fxEnt );
|
||||
self thread doBoxEffect( fxEnt );
|
||||
}
|
||||
|
||||
clearAmim( delay )
|
||||
{
|
||||
wait ( delay );
|
||||
self self_func( "scriptModelClearAnim" );
|
||||
wait ( delay );
|
||||
self self_func( "scriptModelClearAnim" );
|
||||
}
|
||||
|
||||
windsockLarge()
|
||||
{
|
||||
self self_func( "scriptModelClearAnim" );
|
||||
self.origin += ( 0, 0, 20 );
|
||||
bounds_1 = spawn("script_model", self.origin + ( 15, -7, 0 ) );
|
||||
bounds_2 = spawn("script_model", self.origin + ( 70, -38, 0 ) );
|
||||
self self_func( "scriptModelClearAnim" );
|
||||
self.origin += ( 0, 0, 20 );
|
||||
bounds_1 = spawn( "script_model", self.origin + ( 15, -7, 0 ) );
|
||||
bounds_2 = spawn( "script_model", self.origin + ( 70, -38, 0 ) );
|
||||
|
||||
bounds_1 setModel( "com_plasticcase_friendly" );
|
||||
bounds_2 setModel( "com_plasticcase_friendly" );
|
||||
bounds_1 setModel( "com_plasticcase_friendly" );
|
||||
bounds_2 setModel( "com_plasticcase_friendly" );
|
||||
|
||||
bounds_1 hide();
|
||||
bounds_2 hide();
|
||||
bounds_1 hide();
|
||||
bounds_2 hide();
|
||||
|
||||
bounds_1 CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
|
||||
bounds_2 CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
|
||||
bounds_1 CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
|
||||
bounds_2 CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
|
||||
|
||||
bounds_1 SetContents( 1 );
|
||||
bounds_2 SetContents( 1 );
|
||||
bounds_1 SetContents( 1 );
|
||||
bounds_2 SetContents( 1 );
|
||||
|
||||
bounds_1.angles = self.angles + ( 0, 90, 0 );
|
||||
bounds_2.angles = bounds_1.angles;
|
||||
bounds_1.angles = self.angles + ( 0, 90, 0 );
|
||||
bounds_2.angles = bounds_1.angles;
|
||||
|
||||
self linkto( bounds_2 );
|
||||
bounds_2 linkto( bounds_1 );
|
||||
bounds_1 PhysicsLaunchServer( ( 0, 0, 0 ), ( -400, -250, 10 ) );
|
||||
self linkto( bounds_2 );
|
||||
bounds_2 linkto( bounds_1 );
|
||||
bounds_1 PhysicsLaunchServer( ( 0, 0, 0 ), ( -400, -250, 10 ) );
|
||||
}
|
||||
|
||||
nukeDeath()
|
||||
{
|
||||
level endon( "game_ended" );
|
||||
gameFlagWait( "prematch_done" );
|
||||
if ( getDvar( "mapname" ) != "mp_dome" ) return;
|
||||
level endon( "game_ended" );
|
||||
gameFlagWait( "prematch_done" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "nuke_death" );
|
||||
dynamic = getentarray( "dynamic_model", "targetname" );
|
||||
if ( getDvar( "mapname" ) != "mp_dome" ) return;
|
||||
|
||||
for ( i = 0; i < dynamic.size; i++ )
|
||||
{
|
||||
model_name = dynamic[i].model;
|
||||
if ( isSubStr( model_name, "fence_tarp_" ) )
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "nuke_death" );
|
||||
dynamic = getentarray( "dynamic_model", "targetname" );
|
||||
|
||||
for ( i = 0; i < dynamic.size; i++ )
|
||||
{
|
||||
model_name = dynamic[i].model;
|
||||
|
||||
if ( isSubStr( model_name, "fence_tarp_" ) )
|
||||
{
|
||||
// print( "Doing fenceEffect" );
|
||||
dynamic[i] thread fenceEffect();
|
||||
}
|
||||
dynamic[i] thread fenceEffect();
|
||||
}
|
||||
|
||||
else if ( model_name == "machinery_windmill" )
|
||||
{
|
||||
else if ( model_name == "machinery_windmill" )
|
||||
{
|
||||
// print( "Doing machinery_windmill" );
|
||||
dynamic[i] rotateroll( 80, 2, .5, .1 );
|
||||
dynamic[i] thread clearAmim( 1 );
|
||||
}
|
||||
dynamic[i] rotateroll( 80, 2, .5, .1 );
|
||||
dynamic[i] thread clearAmim( 1 );
|
||||
}
|
||||
|
||||
else if ( isSubStr( model_name, "foliage" ) )
|
||||
{
|
||||
else if ( isSubStr( model_name, "foliage" ) )
|
||||
{
|
||||
// print( "Doing foliage" );
|
||||
dynamic[i].origin -= ( 0, 0, 50 );
|
||||
}
|
||||
dynamic[i].origin -= ( 0, 0, 50 );
|
||||
}
|
||||
|
||||
else if ( isSubStr( model_name, "oil_pump_jack" ) )
|
||||
{
|
||||
else if ( isSubStr( model_name, "oil_pump_jack" ) )
|
||||
{
|
||||
// print( "Doing oil_pump_jack" );
|
||||
dynamic[i] self_func( "scriptModelClearAnim" );
|
||||
}
|
||||
dynamic[i] self_func( "scriptModelClearAnim" );
|
||||
}
|
||||
|
||||
else if ( model_name == "accessories_windsock_large" )
|
||||
{
|
||||
else if ( model_name == "accessories_windsock_large" )
|
||||
{
|
||||
// print( "Doing accessories_windsock_large" );
|
||||
dynamic[i] thread windsockLarge();
|
||||
}
|
||||
}
|
||||
dynamic[i] thread windsockLarge();
|
||||
}
|
||||
}
|
||||
|
||||
wait( 5 );
|
||||
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_vehicle", "targetname" ) );
|
||||
ents_to_blowup = array_combine( ents_to_blowup, getentarray( "explodable_barrel", "targetname" ) );
|
||||
wait( 5 );
|
||||
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_vehicle", "targetname" ) );
|
||||
ents_to_blowup = array_combine( ents_to_blowup, getentarray( "explodable_barrel", "targetname" ) );
|
||||
|
||||
for (i = 0; i < ents_to_blowup.size; i++)
|
||||
{
|
||||
ents_to_blowup[i] thread maps\mp\_destructables::destructable_destruct();
|
||||
}
|
||||
for ( i = 0; i < ents_to_blowup.size; i++ )
|
||||
{
|
||||
ents_to_blowup[i] thread maps\mp\_destructables::destructable_destruct();
|
||||
}
|
||||
|
||||
level notify( "game_cleanup" );
|
||||
print( "Destroyed a lot of stuff" );
|
||||
}
|
||||
level notify( "game_cleanup" );
|
||||
print( "Destroyed a lot of stuff" );
|
||||
}
|
||||
}
|
||||
|
@ -9,147 +9,154 @@
|
||||
|
||||
init()
|
||||
{
|
||||
replaceFunc( maps\mp\perks\_perkfunctions::GlowStickDamageListener, ::GlowStickDamageListenerStub );
|
||||
replaceFunc( maps\mp\perks\_perkfunctions::GlowStickEnemyUseListener, ::GlowStickEnemyUseListenerStub );
|
||||
replaceFunc( maps\mp\perks\_perkfunctions::GlowStickDamageListener, ::GlowStickDamageListenerStub );
|
||||
replaceFunc( maps\mp\perks\_perkfunctions::GlowStickEnemyUseListener, ::GlowStickEnemyUseListenerStub );
|
||||
|
||||
create_dvar( "sv_fallDamage", 0 );
|
||||
setDvar( "scr_killcam_time", 7 );
|
||||
setDvar( "scr_killcam_posttime", 2 );
|
||||
create_dvar( "sv_fallDamage", 0 );
|
||||
setDvar( "scr_killcam_time", 7 );
|
||||
setDvar( "scr_killcam_posttime", 2 );
|
||||
|
||||
setDvar( "g_playerCollision", 2 );
|
||||
setDvar( "g_playerEjection", 2 );
|
||||
setDvar( "sv_enableBounces", 1 );
|
||||
setDvar( "jump_slowdownEnable", 0 );
|
||||
setDvar( "g_playerCollision", 2 );
|
||||
setDvar( "g_playerEjection", 2 );
|
||||
setDvar( "sv_enableBounces", 1 );
|
||||
setDvar( "jump_slowdownEnable", 0 );
|
||||
|
||||
thread gameEnded();
|
||||
thread gameStart();
|
||||
thread gameEnded();
|
||||
thread gameStart();
|
||||
|
||||
if ( getDvarInt( "sv_fallDamage" ) != 0 ) return;
|
||||
level.prevCallbackPlayerDamage = level.callbackPlayerDamage;
|
||||
level.callbackPlayerDamage = ::codeCallbackPlayerDamage;
|
||||
if ( getDvarInt( "sv_fallDamage" ) != 0 ) return;
|
||||
|
||||
level.prevCallbackPlayerDamage = level.callbackPlayerDamage;
|
||||
level.callbackPlayerDamage = ::codeCallbackPlayerDamage;
|
||||
}
|
||||
|
||||
gameEnded()
|
||||
{
|
||||
gameFlagWait( "prematch_done" );
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "game_ended", team );
|
||||
foreach ( player in level.players )
|
||||
{
|
||||
player setClientDvar ( "cg_thirdperson", true );
|
||||
player setClientDvar ( "cg_thirdPersonRange", 170 );
|
||||
}
|
||||
wait( 1.5 );
|
||||
foreach ( player in level.players )
|
||||
{
|
||||
player freezecontrols( false );
|
||||
}
|
||||
}
|
||||
gameFlagWait( "prematch_done" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "game_ended", team );
|
||||
|
||||
foreach ( player in level.players )
|
||||
{
|
||||
player setClientDvar ( "cg_thirdperson", true );
|
||||
player setClientDvar ( "cg_thirdPersonRange", 170 );
|
||||
}
|
||||
|
||||
wait( 1.5 );
|
||||
|
||||
foreach ( player in level.players )
|
||||
{
|
||||
player freezecontrols( false );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Might need to set cg_thirdperson to false when a player spawns
|
||||
gameStart()
|
||||
{
|
||||
gameFlagWait( "prematch_done" );
|
||||
foreach ( player in level.players )
|
||||
{
|
||||
player setClientDvar ( "cg_thirdperson", false );
|
||||
}
|
||||
gameFlagWait( "prematch_done" );
|
||||
|
||||
foreach ( player in level.players )
|
||||
{
|
||||
player setClientDvar ( "cg_thirdperson", false );
|
||||
}
|
||||
}
|
||||
|
||||
codeCallbackPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset )
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
self endon( "disconnect" );
|
||||
|
||||
if ( sMeansOfDeath == "MOD_FALLING" || self isUsingRemote() )
|
||||
{
|
||||
eAttacker maps\mp\gametypes\_damagefeedback::updateDamageFeedback( "" );
|
||||
return;
|
||||
}
|
||||
if ( sMeansOfDeath == "MOD_FALLING" || self isUsingRemote() )
|
||||
{
|
||||
eAttacker maps\mp\gametypes\_damagefeedback::updateDamageFeedback( "" );
|
||||
return;
|
||||
}
|
||||
|
||||
[[level.prevCallbackPlayerDamage]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
|
||||
[[level.prevCallbackPlayerDamage]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
|
||||
}
|
||||
|
||||
playLeaderDialog( sound )
|
||||
{
|
||||
assert( self.pers["team"] != "spectator" );
|
||||
assert( self.pers["team"] != "spectator" );
|
||||
|
||||
suffix = "1mc_" + sound;
|
||||
suffix = "1mc_" + sound;
|
||||
|
||||
if ( self.pers["team"] == "allies" )
|
||||
{
|
||||
self playLocalSound( getTeamVoicePrefix( game["allies"] ) + suffix );
|
||||
}
|
||||
else
|
||||
{
|
||||
self playLocalSound( getTeamVoicePrefix( game["axis"] ) + suffix );
|
||||
}
|
||||
if ( self.pers["team"] == "allies" )
|
||||
{
|
||||
self playLocalSound( getTeamVoicePrefix( game["allies"] ) + suffix );
|
||||
}
|
||||
else
|
||||
{
|
||||
self playLocalSound( getTeamVoicePrefix( game["axis"] ) + suffix );
|
||||
}
|
||||
}
|
||||
|
||||
getTeamVoicePrefix( team )
|
||||
{
|
||||
return tableLookup( "mp/factionTable.csv", 0, team, 7 );
|
||||
return tableLookup( "mp/factionTable.csv", 0, team, 7 );
|
||||
}
|
||||
|
||||
GlowStickDamageListenerStub( owner )
|
||||
{
|
||||
self endon ( "death" );
|
||||
self endon ( "death" );
|
||||
|
||||
self setCanDamage( true );
|
||||
self setCanDamage( true );
|
||||
|
||||
self.health = 999999;
|
||||
self.maxHealth = 100;
|
||||
self.damageTaken = 0;
|
||||
self.health = 999999;
|
||||
self.maxHealth = 100;
|
||||
self.damageTaken = 0;
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "damage", damage, attacker, direction_vec, point, type, modelName, tagName, partName, iDFlags, weapon );
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "damage", damage, attacker, direction_vec, point, type, modelName, tagName, partName, iDFlags, weapon );
|
||||
|
||||
if ( !maps\mp\gametypes\_weapons::friendlyFireCheck( self.owner, attacker ) )
|
||||
continue;
|
||||
if ( !maps\mp\gametypes\_weapons::friendlyFireCheck( self.owner, attacker ) )
|
||||
continue;
|
||||
|
||||
if ( !isdefined( self ) )
|
||||
return;
|
||||
|
||||
if ( !isdefined( self ) )
|
||||
return;
|
||||
// Can only be damaged by knife
|
||||
if ( type == "MOD_MELEE" )
|
||||
{
|
||||
self.damageTaken += self.maxHealth;
|
||||
self.wasDamaged = true;
|
||||
}
|
||||
if ( type == "MOD_MELEE" )
|
||||
{
|
||||
self.damageTaken += self.maxHealth;
|
||||
self.wasDamaged = true;
|
||||
}
|
||||
|
||||
if( isPlayer( attacker ) )
|
||||
{
|
||||
attacker maps\mp\gametypes\_damagefeedback::updateDamageFeedback( "tactical_insertion" );
|
||||
}
|
||||
if ( isPlayer( attacker ) )
|
||||
{
|
||||
attacker maps\mp\gametypes\_damagefeedback::updateDamageFeedback( "tactical_insertion" );
|
||||
}
|
||||
|
||||
if ( self.damageTaken >= self.maxHealth )
|
||||
{
|
||||
if ( isDefined( owner ) && attacker != owner )
|
||||
{
|
||||
attacker notify ( "destroyed_insertion", owner );
|
||||
attacker notify( "destroyed_explosive" ); // count towards SitRep Pro challenge
|
||||
owner thread leaderDialogOnPlayer( "ti_destroyed" );
|
||||
}
|
||||
if ( self.damageTaken >= self.maxHealth )
|
||||
{
|
||||
if ( isDefined( owner ) && attacker != owner )
|
||||
{
|
||||
attacker notify ( "destroyed_insertion", owner );
|
||||
attacker notify( "destroyed_explosive" ); // count towards SitRep Pro challenge
|
||||
owner thread leaderDialogOnPlayer( "ti_destroyed" );
|
||||
}
|
||||
|
||||
attacker thread maps\mp\perks\_perkfunctions::deleteTI( self );
|
||||
}
|
||||
}
|
||||
attacker thread maps\mp\perks\_perkfunctions::deleteTI( self );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GlowStickEnemyUseListenerStub( owner )
|
||||
{
|
||||
self endon ( "death" );
|
||||
level endon ( "game_ended" );
|
||||
owner endon ( "disconnect" );
|
||||
self endon ( "death" );
|
||||
level endon ( "game_ended" );
|
||||
owner endon ( "disconnect" );
|
||||
|
||||
self.enemyTrigger setCursorHint( "HINT_NOICON" );
|
||||
self.enemyTrigger setHintString( &"MP_DESTROY_TI" );
|
||||
self.enemyTrigger makeEnemyUsable( owner );
|
||||
self.enemyTrigger setCursorHint( "HINT_NOICON" );
|
||||
self.enemyTrigger setHintString( &"MP_DESTROY_TI" );
|
||||
self.enemyTrigger makeEnemyUsable( owner );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self.enemyTrigger waittill ( "trigger", player );
|
||||
player iPrintLnBold( "Nice try" );
|
||||
}
|
||||
for ( ;; )
|
||||
{
|
||||
self.enemyTrigger waittill ( "trigger", player );
|
||||
player iPrintLnBold( "Nice try" );
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user