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

559 lines
19 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
maps\mp\mp_hashima_precache::main();
maps\createart\mp_hashima_art::main();
maps\mp\mp_hashima_fx::main();
precache();
level.mapcustomcratefunc = ::hashimacustomcratefunc;
level.mapcustomkillstreakfunc = ::hashimacustomkillstreakfunc;
level.mapcustombotkillstreakfunc = ::hashimacustombotkillstreakfunc;
level.vanguardvisionset = "ac130_enhanced_mp_hashima";
maps\mp\_load::main();
maps\mp\_compass::setupminimap( "compass_map_mp_hashima" );
setdvar( "r_lightGridEnableTweaks", 1 );
setdvar( "r_lightGridIntensity", 1.33 );
maps\mp\_utility::setdvar_cg_ng( "r_diffuseColorScale", 1.75, 1 );
maps\mp\_utility::setdvar_cg_ng( "r_specularcolorscale", 3, 8 );
setdvar( "r_ssaoFadeDepth", 1024 );
setdvar( "r_reactiveMotionWindAmplitudeScale", 0.3 );
setdvar( "r_reactiveMotionWindFrequencyScale", 0.5 );
setdvar( "r_sky_fog_intensity", "1" );
setdvar( "r_sky_fog_min_angle", "50" );
setdvar( "r_sky_fog_max_angle", "85" );
if ( level.ps3 || level.xenon )
setdvar( "sm_sunShadowScale", "0.7" );
game["attackers"] = "allies";
game["defenders"] = "axis";
game["allies_outfit"] = "woodland";
game["axis_outfit"] = "urban";
common_scripts\utility::flag_init( "north_target_hit" );
common_scripts\utility::flag_init( "south_target_hit" );
level.coal_car = undefined;
level.start_to_end_length = 0.0;
level.end_to_start_length = 0.0;
coal_car_init();
level thread use_switch_toggle_multiple();
level thread handle_missiles();
level thread inithideymodels();
}
inithideymodels()
{
var_0 = spawn( "script_model", ( -1494, 3177.5, 238.3 ) );
var_0 setmodel( "com_trashcan_metal_with_trash" );
var_0.angles = ( 4.51282, 176.769, 100.788 );
var_1 = spawn( "script_model", ( -1497, 3239.5, 223.3 ) );
var_1 setmodel( "com_trashcan_metal_with_trash" );
var_1.angles = ( 353.55, 216.271, -2.19454 );
var_2 = spawn( "script_model", ( -1452, 3025, 267.5 ) );
var_2 setmodel( "com_trashcan_metal_with_trash" );
var_2.angles = ( 2.21881, 22.6731, 83.4648 );
var_3 = spawn( "script_model", ( -1507, 3218, 237.3 ) );
var_3 setmodel( "com_trashcan_metallid" );
var_3.angles = ( 19.0974, 81.1217, 75.5672 );
var_4 = spawn( "script_model", ( -1442.5, 2973.5, 274.8 ) );
var_4 setmodel( "com_trashcan_metallid" );
var_4.angles = ( 3.4983, 102.922, 81.874 );
var_5 = getent( "clip64x64x64", "targetname" );
var_6 = spawn( "script_model", ( -1515, 3215, 194 ) );
var_6 clonebrushmodeltoscriptmodel( var_5 );
var_7 = getent( "player64x64x256", "targetname" );
var_8 = spawn( "script_model", ( -1515, 3215, 258 ) );
var_8 clonebrushmodeltoscriptmodel( var_7 );
var_9 = getent( "clip32x32x32", "targetname" );
var_10 = spawn( "script_model", ( -1446.5, 3004.47, 249.201 ) );
var_10.angles = ( 3.68833, 23.7315, -8.32483 );
var_10 clonebrushmodeltoscriptmodel( var_9 );
var_11 = getent( "player32x32x128", "targetname" );
var_12 = spawn( "script_model", ( -78, -1222, 380 ) );
var_12 clonebrushmodeltoscriptmodel( var_11 );
var_13 = getent( "player32x32x128", "targetname" );
var_14 = spawn( "script_model", ( -78, -1234, 380 ) );
var_14 clonebrushmodeltoscriptmodel( var_13 );
var_15 = getent( "player64x64x256", "targetname" );
var_16 = spawn( "script_model", ( 896, -1330, 404 ) );
var_16 clonebrushmodeltoscriptmodel( var_15 );
var_17 = getent( "player32x32x128", "targetname" );
var_18 = spawn( "script_model", ( 912, -1084, 352 ) );
var_18 clonebrushmodeltoscriptmodel( var_17 );
var_19 = getent( "clip64x64x64", "targetname" );
var_20 = spawn( "script_model", ( 320, 571, 245 ) );
var_20.angles = ( 0, 330, 0 );
var_20 clonebrushmodeltoscriptmodel( var_19 );
var_21 = getent( "player64x64x256", "targetname" );
var_22 = spawn( "script_model", ( -238, 5466, 180 ) );
var_22 clonebrushmodeltoscriptmodel( var_21 );
var_23 = getent( "clip256x256x256", "targetname" );
var_24 = spawn( "script_model", ( -1960, -860, -17 ) );
var_24.angles = ( 0, 0, 0 );
var_24 clonebrushmodeltoscriptmodel( var_23 );
var_25 = getent( "clip256x256x256", "targetname" );
var_26 = spawn( "script_model", ( -672, 5664, 577 ) );
var_26.angles = ( 0, 0, 0 );
var_26 clonebrushmodeltoscriptmodel( var_25 );
var_27 = getent( "clip256x256x256", "targetname" );
var_28 = spawn( "script_model", ( -672, 5664, 845 ) );
var_28.angles = ( 0, 0, 0 );
var_28 clonebrushmodeltoscriptmodel( var_27 );
var_29 = getent( "clip256x256x256", "targetname" );
var_30 = spawn( "script_model", ( -2344, 5376, 309 ) );
var_30.angles = ( 0, 0, 0 );
var_30 clonebrushmodeltoscriptmodel( var_29 );
var_31 = getent( "clip32x32x128", "targetname" );
var_32 = spawn( "script_model", ( -118, -1307.03, 380.887 ) );
var_32.angles = ( 0, 0, -80 );
var_32 clonebrushmodeltoscriptmodel( var_31 );
var_33 = spawn( "trigger_radius", ( 1061, -1483, 320 ), 0, 700, 44 );
var_33.radius = 700;
var_33.height = 100;
var_33.angles = ( 0, 0, 0 );
var_33.targetname = "gryphonDeath";
}
precache()
{
precachempanim( "mp_hashima_coal_cart_start_idle" );
precachempanim( "mp_hashima_coal_cart_end_idle" );
precachempanim( "mp_hashima_coal_cart_move_1" );
precachempanim( "mp_hashima_coal_cart_move_2" );
precachempanim( "mp_hashima_coal_cart_start_idle_origin" );
precachempanim( "mp_hashima_coal_cart_start_idle_origin_scripted" );
precachempanim( "mp_hashima_coal_cart_end_idle_origin" );
precachempanim( "mp_hashima_coal_cart_move_1_origin" );
precachempanim( "mp_hashima_coal_cart_move_2_origin" );
}
handle_missiles()
{
init_missiles();
run_missiles();
}
init_missiles()
{
missiles_precache();
waittillframeend;
level.missile_starts = common_scripts\utility::getstructarray( "missile_start", "targetname" );
}
missiles_precache()
{
}
run_missiles()
{
level endon( "stop_missiles" );
var_0 = 10;
var_1 = 20;
var_2 = 5.0;
var_3 = -92500.0;
var_4 = 10000;
var_5 = 5000;
for (;;)
{
level waittill( "start_missile_strike", var_6 );
var_7 = [];
foreach ( var_9 in level.participants )
{
if ( var_6 maps\mp\_utility::isenemy( var_9 ) )
var_7[var_7.size] = var_9;
}
level thread fake_missile_launch( var_7, var_4, var_5, var_6 );
wait( var_2 );
}
}
fake_missile_launch( var_0, var_1, var_2, var_3 )
{
var_4 = common_scripts\utility::getstructarray( "missile_start", "targetname" );
var_4 = common_scripts\utility::array_randomize( var_4 );
var_5 = 0;
foreach ( var_7 in var_0 )
{
var_8 = var_7.origin;
var_9 = spawn( "script_model", var_4[var_5].origin );
var_9 setmodel( "tag_origin" );
var_9 thread common_scripts\utility::play_loop_sound_on_entity( "move_hashima_second_proj_loop1" );
common_scripts\utility::waitframe();
playsoundatpos( var_4[var_5].origin, "hashima_missile_launch" );
var_5++;
var_9 thread move_fake_missile( var_8, var_1, var_2, var_3, var_7 );
var_9 playsoundonmovingent( "hashima_missile_incoming" );
wait( randomfloatrange( 0.1, 0.5 ) );
}
}
move_fake_missile( var_0, var_1, var_2, var_3, var_4 )
{
playfxontag( level._effect["hashima_missile_lens_flare"], self, "tag_origin" );
var_5 = 4.0;
self moveto( var_0 + ( 0, 0, var_1 ), var_5, 1.5, 1.5 );
var_6 = var_0 + ( 0, 0, 40 ) + anglestoforward( var_4.angles ) * 100;
var_7 = spawn( "script_model", var_6 );
var_7 linkto( var_4 );
wait( var_5 );
var_7 thread waitanddelete( 5 );
if ( isdefined( var_4 ) )
var_0 = var_4.origin;
stopfxontag( level._effect["hashima_missile_lens_flare"], self, "tag_origin" );
common_scripts\utility::waitframe();
playfx( level._effect["hashima_missile_turn_obscurer"], self.origin );
common_scripts\utility::waitframe();
self.angles = vectortoangles( var_0 - self.origin );
self moveto( var_0 + ( 0, 0, var_2 ), 0.5, 0.5, 0.0 );
wait 0.5;
var_8 = 1.0;
if ( isdefined( var_4 ) )
var_0 = var_4.origin;
var_6 = self.origin;
var_9 = bullettrace( var_6, var_0, 0 );
var_10 = var_9["position"];
self delete();
if ( !isdefined( var_3 ) )
var_11 = magicbullet( "hashima_missiles_mp", var_6, var_10 );
else
var_11 = magicbullet( "hashima_missiles_mp", var_6, var_10, var_3 );
var_11 playsoundonmovingent( "hashima_missile_flyover" );
var_11.killcament = var_7;
var_11 waittill( "explode", var_12 );
playrumbleonposition( "artillery_rumble", var_12 );
earthquake( 0.3, 1.0, var_12, 20000 );
}
waitanddelete( var_0 )
{
self endon( "death" );
level endon( "game_ended" );
wait( var_0 );
self delete();
}
hashimacustomcratefunc()
{
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", "hashima_missiles", 85, maps\mp\killstreaks\_airdrop::killstreakcratethink, maps\mp\killstreaks\_airdrop::get_friendly_crate_model(), maps\mp\killstreaks\_airdrop::get_enemy_crate_model(), &"KILLSTREAKS_HINTS_HASHIMA_MISSILES" );
level thread watch_for_hashima_missiles_crate();
}
watch_for_hashima_missiles_crate()
{
for (;;)
{
level waittill( "createAirDropCrate", var_0 );
if ( isdefined( var_0 ) && isdefined( var_0.cratetype ) && var_0.cratetype == "hashima_missiles" )
{
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "hashima_missiles", 0 );
var_1 = wait_for_capture( var_0 );
if ( !var_1 )
{
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "hashima_missiles", 85 );
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;
}
hashimacustomkillstreakfunc()
{
level.killstreakfuncs["hashima_missiles"] = ::tryusehashimamissiles;
level.killstreakweildweapons["hashima_missiles_mp"] = "hashima_missiles";
}
hashimacustombotkillstreakfunc()
{
maps\mp\bots\_bots_ks::bot_register_killstreak_func( "hashima_missiles", maps\mp\bots\_bots_ks::bot_killstreak_simple_use );
}
tryusehashimamissiles( var_0, var_1 )
{
level notify( "start_missile_strike", self );
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "hashima_missiles", 0 );
game["player_holding_level_killstrek"] = 0;
return 1;
}
#using_animtree("animated_props");
coal_car_init()
{
var_0 = common_scripts\utility::getstruct( "coal_car_spawn", "targetname" );
var_1 = getent( "coal_car_clip", "targetname" );
var_2 = spawn( "script_model", var_0.origin );
var_2 setmodel( "has_coal_mine_cart_anim" );
var_3 = spawn( "script_model", var_0.origin );
var_3 setmodel( "generic_prop_raven" );
common_scripts\utility::waitframe();
var_1 linkto( var_3, "tag_origin" );
var_2.clip = var_1;
var_2.collision_origin = var_3;
common_scripts\utility::waitframe();
level.start_to_end_length = getanimlength( %mp_hashima_coal_cart_move_1 );
level.end_to_start_length = getanimlength( %mp_hashima_coal_cart_move_2 );
var_2 scriptmodelplayanimdeltamotion( "mp_hashima_coal_cart_start_idle" );
var_2.collision_origin scriptmodelplayanimdeltamotion( "mp_hashima_coal_cart_start_idle_origin_scripted" );
level.coal_car = var_2;
level.coal_car thread coal_car_run();
}
coal_car_run()
{
var_0 = getent( "ai_sight_brush_start", "targetname" );
var_1 = getent( "ai_sight_brush_end", "targetname" );
var_0 notsolid();
var_0 show();
var_0 setaisightlinevisible( 1 );
var_1 notsolid();
var_1 hide();
var_1 setaisightlinevisible( 0 );
var_1 connectpaths();
var_2 = lookupsoundlength( "scn_cargo_button_start" ) / 1000;
var_3 = self.origin;
var_4 = self.angles;
var_5 = self.collision_origin.origin;
var_6 = self.collision_origin.angles;
common_scripts\utility::waitframe();
self.clip disconnectpaths();
for (;;)
{
common_scripts\utility::waittill_any( "trigger", "reset" );
var_0 notsolid();
var_0 hide();
var_0 connectpaths();
self playsoundonmovingent( "scn_cargo_button_start" );
self scriptmodelplayanimdeltamotion( "mp_hashima_coal_cart_move_1" );
self.collision_origin scriptmodelplayanimdeltamotion( "mp_hashima_coal_cart_move_1_origin" );
thread disconnect_path_periodic( 1.0 );
wait( var_2 );
self playloopsound( "scn_cargo_button_loop" );
wait( level.start_to_end_length - var_2 );
self stoploopsound();
self playsoundonmovingent( "scn_cargo_button_end" );
self notify( "stop_disconnect_path_periodic" );
self scriptmodelplayanimdeltamotion( "mp_hashima_coal_cart_end_idle" );
self.collision_origin scriptmodelplayanimdeltamotion( "mp_hashima_coal_cart_end_idle_origin" );
self.clip disconnectpaths();
var_0 setaisightlinevisible( 0 );
var_1 show();
var_1 setaisightlinevisible( 1 );
common_scripts\utility::waittill_any( "trigger", "reset" );
self playsoundonmovingent( "scn_cargo_button_start" );
thread disconnect_path_periodic( 1.0 );
self scriptmodelplayanimdeltamotion( "mp_hashima_coal_cart_move_2" );
self.collision_origin scriptmodelplayanimdeltamotion( "mp_hashima_coal_cart_move_2_origin" );
wait( var_2 );
self playloopsound( "scn_cargo_button_loop" );
wait( level.end_to_start_length - var_2 );
self stoploopsound();
self playsoundonmovingent( "scn_cargo_button_end" );
self scriptmodelclearanim();
self.collision_origin scriptmodelclearanim();
self.origin = var_3;
self.angles = ( 0, 0, 0 );
self.collision_origin.origin = var_3;
self.collision_origin.angles = ( 0, 0, 0 );
self notify( "stop_disconnect_path_periodic" );
self scriptmodelplayanimdeltamotion( "mp_hashima_coal_cart_start_idle" );
self.collision_origin scriptmodelplayanimdeltamotion( "mp_hashima_coal_cart_start_idle_origin_scripted" );
self.clip disconnectpaths();
var_0 show();
var_0 setaisightlinevisible( 1 );
var_1 hide();
var_1 setaisightlinevisible( 0 );
}
}
disconnect_path_periodic( var_0 )
{
self endon( "stop_disconnect_path_periodic" );
for (;;)
{
wait( var_0 );
self.clip disconnectpaths();
}
}
use_switch_toggle_multiple()
{
level.door_buttons = [];
var_0 = common_scripts\utility::getstructarray( "switch_toggle", "targetname" );
common_scripts\utility::array_thread( var_0, ::use_switch_toggle_multiple_init );
}
use_switch_toggle_multiple_init()
{
var_0 = getentarray( self.target, "targetname" );
foreach ( var_2 in var_0 )
{
if ( !isdefined( var_2.script_noteworthy ) )
continue;
switch ( var_2.script_noteworthy )
{
case "use_trigger":
if ( !isdefined( self.use_triggers ) )
self.use_triggers = [];
self.use_triggers[self.use_triggers.size] = var_2;
break;
case "button_toggle":
if ( !isdefined( self.button_toggles ) )
self.button_toggles = [];
var_3 = self.button_toggles.size;
self.button_toggles[var_3] = var_2;
level.door_buttons[level.door_buttons.size] = var_2;
break;
default:
break;
}
}
self.off_hintstring = "Turn On";
self.on_hintstring = "Turn Off";
self.trigger_list = [];
self.trigger_list[0] = level.coal_car;
self.off_hintstring = &"MP_HASHIMA_TRAIN_CAR";
self.on_hintstring = &"MP_HASHIMA_TRAIN_CAR";
use_switch_toggle_wait();
}
use_switch_toggle_wait()
{
var_0 = spawnstruct();
var_1 = getent( "buzzer_sound_loc", "targetname" );
for (;;)
{
foreach ( var_3 in self.use_triggers )
{
var_3 sethintstring( self.off_hintstring );
var_3 thread notify_struct_on_use( var_0 );
}
thread pop_up_targets_set_buttons( 1 );
var_0 waittill( "trigger", var_5 );
if ( isdefined( self.button_toggles ) )
self.button_toggles[0] playsound( "scn_cargo_button_push" );
var_1 playsound( "scn_cargo_button_buzzer" );
foreach ( var_3 in self.use_triggers )
var_3 sethintstring( "" );
thread pop_up_targets_set_buttons( 0 );
foreach ( var_9 in self.trigger_list )
var_9 notify( "trigger", var_5 );
wait( level.start_to_end_length );
foreach ( var_3 in self.use_triggers )
{
var_3 sethintstring( self.on_hintstring );
var_3 thread notify_struct_on_use( var_0 );
}
thread pop_up_targets_set_buttons( 1 );
var_0 waittill( "trigger", var_5 );
if ( isdefined( self.button_toggles ) )
self.button_toggles[0] playsound( "scn_cargo_button_push" );
var_1 playsound( "scn_cargo_button_buzzer" );
foreach ( var_3 in self.use_triggers )
var_3 sethintstring( "" );
thread pop_up_targets_set_buttons( 0 );
if ( isdefined( self.levers ) )
{
foreach ( var_16 in self.levers )
var_16 setmodel( "weapon_light_stick_tactical_red" );
}
foreach ( var_9 in self.trigger_list )
var_9 notify( "reset" );
wait( level.end_to_start_length );
}
}
notify_struct_on_use( var_0 )
{
self waittill( "trigger" );
var_0 notify( "trigger" );
}
pop_up_targets_set_buttons( var_0 )
{
if ( isdefined( self.button_toggles ) )
{
foreach ( var_2 in self.button_toggles )
var_2 set_button( "mp_frag_button", var_0 );
}
}
set_button( var_0, var_1 )
{
if ( var_1 )
var_2 = "mp_frag_button_on_green";
else
var_2 = "mp_frag_button_on";
self.in_use = var_1;
self setmodel( var_2 );
}
hashima_nukedeathvision()
{
level.nukevisionset = "aftermath_mp_hashima";
setexpfog( 512, 4097, 0.578828, 0.802656, 1, 0.75, 0.75, 5, 0.382813, 0.350569, 0.293091, 3, ( 1, -0.109979, 0.267867 ), 0, 80, 1, 0.179688, 26, 180 );
visionsetnaked( level.nukevisionset, 5 );
visionsetpain( level.nukevisionset );
}