iw6-scripts/maps/mp/mp_swamp.gsc
2024-02-13 13:20:49 +01:00

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 );
}
}