341 lines
11 KiB
Plaintext
341 lines
11 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
maps\mp\mp_swamp_precache::main();
|
|
maps\createart\mp_swamp_art::main();
|
|
maps\mp\mp_swamp_fx::main();
|
|
level._effect["swamp_slasher_victim"] = loadfx( "vfx/moments/mp_swamp/vfx_spirit_victim" );
|
|
level._effect["swamp_slasher_death"] = loadfx( "vfx/moments/mp_swamp/vfx_spirit_victim_killstreak" );
|
|
level._effect["vfx_flesh_hit_body_fatal_hatchet"] = loadfx( "vfx/gameplay/impacts/flesh/vfx_flesh_hit_body_fatal_hatchet" );
|
|
maps\mp\_load::main();
|
|
level.mapcustomcratefunc = ::swampcustomcratefunc;
|
|
level.mapcustomkillstreakfunc = ::swampcustomkillstreakfunc;
|
|
level.mapcustombotkillstreakfunc = ::swampcustombotkillstreakfunc;
|
|
maps\mp\killstreaks\_juggernaut::initlevelcustomjuggernaut( ::swampslashercreatefunc, ::setjuggswampslasherclass, ::setjuggswampslasher, "callout_killed_swamp_slasher" );
|
|
maps\mp\_utility::setdvar_cg_ng( "r_specularColorScale", 2.5, 7 );
|
|
maps\mp\_compass::setupminimap( "compass_map_mp_swamp" );
|
|
setdvar( "r_lightGridEnableTweaks", 1 );
|
|
setdvar( "r_lightGridIntensity", 1.33 );
|
|
setdvar( "r_tessellationCutoffFalloffBase", 600 );
|
|
setdvar( "r_tessellationCutoffDistanceBase", 1600 );
|
|
setdvar( "r_tessellationCutoffFalloff", 600 );
|
|
setdvar( "r_tessellationCutoffDistance", 1600 );
|
|
setdvar( "r_reactiveMotionWindFrequencyScale", 0.1 );
|
|
setdvar( "r_reactiveMotionWindAmplitudeScale", 0.5 );
|
|
maps\mp\_utility::setdvar_cg_ng( "sm_sunShadowScale", 0.25, 1 );
|
|
maps\mp\_utility::setdvar_cg_ng( "fx_alphaThreshold", 5, 0 );
|
|
game["attackers"] = "allies";
|
|
game["defenders"] = "axis";
|
|
game["allies_outfit"] = "urban";
|
|
game["axis_outfit"] = "woodland";
|
|
level thread maps\mp\_breach::main();
|
|
vfxsetupfrogfx();
|
|
thread vfxbatcavewaitinit( "triggerBatCave" );
|
|
thread maps\mp\_dlcalienegg::setupeggformap( "alienEasterEgg" );
|
|
maps\mp\bots\_bots_ks::blockkillstreakforbots( "vanguard" );
|
|
}
|
|
|
|
swampslashercreatefunc( var_0 )
|
|
{
|
|
self.isjuggernautlevelcustom = 1;
|
|
self.juggmovespeedscaler = 1.05;
|
|
maps\mp\gametypes\_class::giveloadout( self.pers["team"], var_0, 0 );
|
|
maps\mp\_utility::giveperk( "specialty_blindeye", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_coldblooded", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_noscopeoutline", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_detectexplosive", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_marathon", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_falldamage", 0 );
|
|
self.movespeedscaler = 1.15;
|
|
swampslasherbeginmusic();
|
|
thread onjuggswampslasherenemykilled();
|
|
thread onjuggswampslasherdeath();
|
|
thread maps\mp\_utility::teamplayercardsplash( "used_juggernaut_swamp_slasher", self );
|
|
thread swampslashersounds();
|
|
self.canusekillstreakcallback = ::juggswampslashercanusekillstreak;
|
|
self.killstreakerrormsg = ::juggswampslasherkillsteakerrormsg;
|
|
return 0;
|
|
}
|
|
|
|
juggswampslashercanusekillstreak( var_0 )
|
|
{
|
|
if ( var_0 == "heli_sniper" || maps\mp\_utility::isridekillstreak( var_0 ) )
|
|
return 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
juggswampslasherkillsteakerrormsg()
|
|
{
|
|
self iprintlnbold( &"MP_SWAMP_NO_KILLSTREAKS" );
|
|
}
|
|
|
|
setjuggswampslasherclass( var_0 )
|
|
{
|
|
var_1 = [];
|
|
var_1["loadoutPrimary"] = "iw6_axe";
|
|
var_1["loadoutPrimaryBuff"] = "specialty_null";
|
|
var_1["loadoutSecondaryBuff"] = "specialty_null";
|
|
var_1["loadoutEquipment"] = "specialty_null";
|
|
return var_1;
|
|
}
|
|
|
|
setjuggswampslasher()
|
|
{
|
|
if ( isdefined( self.headmodel ) )
|
|
{
|
|
self detach( self.headmodel, "" );
|
|
self.headmodel = undefined;
|
|
}
|
|
|
|
self setmodel( "mp_fullbody_mp_mmyers_a" );
|
|
self setviewmodel( "viewhands_mp_mmyers" );
|
|
self setclothtype( "nylon" );
|
|
}
|
|
|
|
tryusejuggernautswampslasher( var_0, var_1 )
|
|
{
|
|
maps\mp\killstreaks\_juggernaut::givejuggernaut( var_1 );
|
|
game["player_holding_level_killstrek"] = 0;
|
|
return 1;
|
|
}
|
|
|
|
enable_level_killstreak()
|
|
{
|
|
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "juggernaut_swamp_slasher", 85 );
|
|
}
|
|
|
|
disable_level_killstreak()
|
|
{
|
|
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "juggernaut_swamp_slasher", 0 );
|
|
}
|
|
|
|
swampcustomcratefunc()
|
|
{
|
|
if ( !isdefined( game["player_holding_level_killstrek"] ) )
|
|
game["player_holding_level_killstrek"] = 0;
|
|
|
|
if ( !maps\mp\_utility::allowlevelkillstreaks() || game["player_holding_level_killstrek"] )
|
|
return;
|
|
|
|
maps\mp\killstreaks\_airdrop::addcratetype( "airdrop_assault", "juggernaut_swamp_slasher", 85, maps\mp\killstreaks\_airdrop::juggernautcratethink, maps\mp\killstreaks\_airdrop::get_friendly_juggernaut_crate_model(), maps\mp\killstreaks\_airdrop::get_enemy_juggernaut_crate_model(), &"MP_SWAMP_JUGGERNAUT_SWAMP_SLASHER_PICKUP" );
|
|
level thread watch_for_swamp_slasher_crate();
|
|
}
|
|
|
|
watch_for_swamp_slasher_crate()
|
|
{
|
|
for (;;)
|
|
{
|
|
level waittill( "createAirDropCrate", var_0 );
|
|
|
|
if ( isdefined( var_0 ) && isdefined( var_0.cratetype ) && var_0.cratetype == "juggernaut_swamp_slasher" )
|
|
{
|
|
disable_level_killstreak();
|
|
var_1 = wait_for_capture( var_0 );
|
|
|
|
if ( !var_1 )
|
|
{
|
|
enable_level_killstreak();
|
|
continue;
|
|
}
|
|
|
|
game["player_holding_level_killstrek"] = 1;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
wait_for_capture( var_0 )
|
|
{
|
|
var_1 = watch_for_air_drop_death( var_0 );
|
|
return !isdefined( var_1 );
|
|
}
|
|
|
|
watch_for_air_drop_death( var_0 )
|
|
{
|
|
var_0 endon( "captured" );
|
|
var_0 waittill( "death" );
|
|
waittillframeend;
|
|
return 1;
|
|
}
|
|
|
|
swampcustomkillstreakfunc()
|
|
{
|
|
level.killstreakfuncs["juggernaut_swamp_slasher"] = ::tryusejuggernautswampslasher;
|
|
}
|
|
|
|
swampcustombotkillstreakfunc()
|
|
{
|
|
maps\mp\bots\_bots_ks::bot_register_killstreak_func( "juggernaut_swamp_slasher", maps\mp\bots\_bots_ks::bot_killstreak_simple_use );
|
|
}
|
|
|
|
swampslashersounds()
|
|
{
|
|
level endon( "game_ended" );
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "jugg_removed" );
|
|
|
|
for (;;)
|
|
{
|
|
wait 3.0;
|
|
maps\mp\_utility::playplayerandnpcsounds( self, "axeman_breathing_player", "axeman_breathing_sound" );
|
|
}
|
|
}
|
|
|
|
onjuggswampslasherenemykilled()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "killed_enemy", var_0, var_1 );
|
|
|
|
if ( var_1 == "iw6_axe_mp" )
|
|
{
|
|
self.health = int( min( self.health + 2, 100 ) );
|
|
thread swampslasherkilleffect( var_0 );
|
|
}
|
|
}
|
|
}
|
|
|
|
swampslasherkilleffect( var_0 )
|
|
{
|
|
var_1 = var_0.origin + ( 0, 0, 50 );
|
|
var_2 = self.origin - var_0.origin;
|
|
var_3 = var_0 gettagorigin( "j_neck" );
|
|
playfx( level._effect["vfx_flesh_hit_body_fatal_hatchet"], var_3, vectornormalize( var_2 ), anglestoup( var_0 gettagangles( "j_neck" ) ) );
|
|
var_0 playsound( "scn_axe_kill_npc" );
|
|
wait 0.05;
|
|
playfx( level._effect["swamp_slasher_victim"], var_1 );
|
|
}
|
|
|
|
onjuggswampslasherdeath()
|
|
{
|
|
level endon( "game_ended" );
|
|
thread swampslashermusicendoflevel();
|
|
common_scripts\utility::waittill_any( "death", "disconnect" );
|
|
|
|
if ( isdefined( self ) )
|
|
{
|
|
playfx( level._effect["swamp_slasher_death"], self.origin + ( 0, 0, 50 ) );
|
|
self playsound( "scn_axe_kill_plr" );
|
|
}
|
|
|
|
thread swampslasherendmusic();
|
|
self.canusekillstreakcallback = undefined;
|
|
self.killstreakerrormsg = undefined;
|
|
}
|
|
|
|
swampslashermusicendoflevel()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
level waittill( "game_ended" );
|
|
thread swampslasherendmusic();
|
|
}
|
|
|
|
swampslasherbeginmusic()
|
|
{
|
|
maps\mp\gametypes\_music_and_dialog::disablemusic();
|
|
level.slashermusicent = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
level.slashermusicent playloopsound( "mus_mp_swamp_killstreak_start" );
|
|
}
|
|
|
|
swampslasherendmusic()
|
|
{
|
|
level.slashermusicent stoploopsound();
|
|
maps\mp\_utility::playsoundonplayers( "mus_mp_swamp_killstreak_end" );
|
|
thread maps\mp\gametypes\_music_and_dialog::enablemusic();
|
|
common_scripts\utility::waitframe();
|
|
level.slashermusicent delete();
|
|
level.slashermusicent = undefined;
|
|
}
|
|
|
|
vfxcreatefrogtrigger( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = spawnfx( common_scripts\utility::getfx( "vfx_frog_jump_inwater_r" ), var_0, anglestoforward( var_1 ), anglestoup( var_1 ) );
|
|
var_4.trigger = spawn( "trigger_radius", var_2, 0, var_3, 128 );
|
|
var_4.radius = var_3;
|
|
var_4 thread vfxrunfrogtrigger();
|
|
}
|
|
|
|
vfxrunfrogtrigger()
|
|
{
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
self.trigger waittill( "trigger", var_0 );
|
|
triggerfx( self );
|
|
wait 30;
|
|
}
|
|
}
|
|
|
|
vfxsetupfrogfx()
|
|
{
|
|
vfxcreatefrogtrigger( ( 543.607, -1866.1, 16.9588 ), ( 273, 270.011, 33.961 ), ( 543.607, -1866.1, 16.9588 ), 400 );
|
|
vfxcreatefrogtrigger( ( -137.91, -1403.79, 17.1477 ), ( 273, 270, 163.983 ), ( -137.91, -1403.79, 17.1477 ), 400 );
|
|
vfxcreatefrogtrigger( ( -753.322, 385.262, 2.15145 ), ( 273, 270.009, 95.9661 ), ( -753.322, 385.262, 2.15145 ), 400 );
|
|
vfxcreatefrogtrigger( ( -928.21, 619.578, 1.96266 ), ( 273, 270.002, 116.968 ), ( -928.21, 619.578, 1.96266 ), 400 );
|
|
vfxcreatefrogtrigger( ( -1138.44, 365.926, 1.51848 ), ( 274, 269.744, -90.7688 ), ( -1138.44, 365.926, 1.51848 ), 400 );
|
|
vfxcreatefrogtrigger( ( -941.947, -27.4375, 7.81633 ), ( 273, 270.004, 43.9734 ), ( -941.947, -27.4375, 7.81633 ), 400 );
|
|
vfxcreatefrogtrigger( ( -1092.89, -419.291, 6.29806 ), ( 273, 270.003, 82.9732 ), ( -1092.89, -419.291, 6.29806 ), 400 );
|
|
vfxcreatefrogtrigger( ( -758.194, -1355.44, 61.8263 ), ( 273, 270, 176.977 ), ( -758.194, -1355.44, 61.8263 ), 400 );
|
|
vfxcreatefrogtrigger( ( -198.275, -1725.05, 19.3899 ), ( 273, 270, 100.969 ), ( -198.275, -1725.05, 19.3899 ), 400 );
|
|
vfxcreatefrogtrigger( ( 721.78, -1614.7, 18.9652 ), ( 273.486, 235.078, 120.847 ), ( 721.78, -1614.7, 18.9652 ), 400 );
|
|
vfxcreatefrogtrigger( ( 494.378, -1182.59, 2.01686 ), ( 273, 270.003, 0 ), ( 494.378, -1182.59, 2.01686 ), 400 );
|
|
}
|
|
|
|
vfxbatcavewaitinit( var_0 )
|
|
{
|
|
level endon( "game_ended" );
|
|
var_1 = getent( var_0, "targetname" );
|
|
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
var_1 childthread vfxbatcavetrigger();
|
|
|
|
for (;;)
|
|
{
|
|
var_1 waittill( "trigger", var_2 );
|
|
var_1 thread vfxbatcavewatchplayerstate( var_2 );
|
|
}
|
|
}
|
|
}
|
|
|
|
vfxbatcavewatchplayerstate( var_0 )
|
|
{
|
|
self endon( "batCaveTrigger" );
|
|
var_0 endon( "death" );
|
|
var_0 endon( "disconnect" );
|
|
var_0 notify( "batCaveExit" );
|
|
var_0 endon( "batCaveExit" );
|
|
childthread vfxbatcavewatchplayerweapons( var_0 );
|
|
|
|
while ( var_0 istouching( self ) )
|
|
common_scripts\utility::waitframe();
|
|
|
|
var_0 notify( "batCaveExit" );
|
|
}
|
|
|
|
vfxbatcavewatchplayerweapons( var_0 )
|
|
{
|
|
var_0 endon( "batCaveExit" );
|
|
var_0 waittill( "weapon_fired" );
|
|
self notify( "batCaveTrigger" );
|
|
}
|
|
|
|
vfxbatcavetrigger()
|
|
{
|
|
for (;;)
|
|
{
|
|
self waittill( "batCaveTrigger" );
|
|
common_scripts\utility::exploder( 55 );
|
|
var_0 = 60;
|
|
wait( var_0 );
|
|
}
|
|
}
|