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

531 lines
15 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
maps\mp\mp_frag_precache::main();
maps\createart\mp_frag_art::main();
maps\mp\mp_frag_fx::main();
precache();
level.dynamicspawns = ::filter_spawn_point;
maps\mp\_load::main();
maps\mp\_compass::setupminimap( "compass_map_mp_frag" );
setdvar( "r_ssaoFadeDepth", 1024 );
if ( !level.console )
{
setdvar( "r_lightGridEnableTweaks", 1 );
setdvar( "r_lightGridIntensity", 1.33 );
maps\mp\_utility::setdvar_cg_ng( "r_diffuseColorScale", 1.37, 1 );
maps\mp\_utility::setdvar_cg_ng( "r_specularcolorscale", 3, 9 );
}
else
{
setdvar( "r_lightGridEnableTweaks", 1 );
setdvar( "r_lightGridIntensity", 1.33 );
setdvar( "r_diffuseColorScale", 1.37 );
setdvar( "r_specularcolorscale", 2 );
}
if ( !maps\mp\_utility::is_gen4() )
setdvar( "sm_sunShadowScale", "0.8" );
game["attackers"] = "allies";
game["defenders"] = "axis";
common_scripts\utility::flag_init( "chain_broken" );
common_scripts\utility::flag_init( "container_open" );
common_scripts\utility::flag_init( "warehouse_open" );
common_scripts\utility::flag_init( "drop_ladder" );
common_scripts\utility::flag_init( "ladder_down" );
common_scripts\utility::flag_init( "hopper_closed" );
common_scripts\utility::flag_init( "hopper_open" );
common_scripts\utility::flag_init( "pop_up_targets_ready" );
common_scripts\utility::flag_init( "hopper_open_initially" );
common_scripts\utility::flag_set( "hopper_closed" );
maps\mp\gametypes\_door::door_system_init( "door_switch" );
level thread generic_shootable_double_doors( "left_gate", "left_gate", "j_prop_1", "right_gate", "j_prop_2", "lock", "gate_clip", "gate_trigger", "mp_frag_metal_door_closed_loop", "mp_frag_metal_door_open", "mp_frag_metal_door_open_out", "mp_frag_metal_door_chain", "frag_gate_iron_open", undefined, undefined, "chain_gate_trigger_damage", "chain_broken", 0, undefined );
level thread bot_underground_trapped_watch();
level thread bot_shootable_target_watch( "gate_trigger", "near_gate_volume", "chain_broken" );
level thread generic_shootable_double_doors( "warehouse_door_right", "warehouse_door_right", "j_prop_1", "warehouse_door_left", "j_prop_2", "warehouse_door_lock", "warehouse_door_clip", "warehouse_door_trigger", undefined, "mp_frag_large_door_open", "mp_frag_large_door_open", "mp_frag_large_door_chain_idle", "scn_breach_swingindoor_left", "scn_breach_swingindoor_right", "scn_breach_swingindoor_lock", "warehouse_trigger_damage", "warehouse_open", 1, "warehouse_door_handle" );
level thread bot_shootable_target_watch( "warehouse_door_trigger", "near_warehouse_volume", "warehouse_open" );
level thread shootable_ladder();
level thread bot_shootable_target_watch( "ladder_damage_trigger", "near_ladder_volume", "ladder_down" );
level thread sprinkler_watch();
level initextracollision();
}
initextracollision()
{
var_0 = getent( "clip128x128x8", "targetname" );
var_1 = spawn( "script_model", ( 832, 1938, 466 ) );
var_1.angles = ( 0, 0, -90 );
var_1 clonebrushmodeltoscriptmodel( var_0 );
var_2 = getent( "player128x128x8", "targetname" );
var_3 = spawn( "script_model", ( 1144, 1938, 466 ) );
var_3.angles = ( 0, 0, -90 );
var_3 clonebrushmodeltoscriptmodel( var_2 );
var_4 = spawn( "script_model", ( -571, 1414.5, 193 ) );
var_4 setmodel( "mp_frag_pipe_4x128_metal_painted_01" );
var_4.angles = ( 90, 0, 0 );
}
precache()
{
precachempanim( "mp_frag_metal_door_chain" );
precachempanim( "mp_frag_metal_door_closed_loop" );
precachempanim( "mp_frag_metal_door_open" );
precachempanim( "mp_frag_metal_door_open_loop" );
precachempanim( "mp_frag_metal_door_open_out" );
precachempanim( "mp_frag_metal_door_open_out_loop" );
precachempanim( "mp_frag_large_door_chain_idle" );
precachempanim( "mp_frag_large_door_open" );
precachempanim( "mp_frag_large_door_open_loop" );
precachempanim( "mp_frag_large_door_closed_loop" );
precachempanim( "mp_frag_crate_open" );
precachempanim( "mp_frag_crate_open_loop" );
precachempanim( "mp_frag_crate_closed_loop" );
precachempanim( "mp_frag_ladder_fall" );
precachempanim( "mp_frag_ladder_fall_start_loop" );
}
trigger_wait_damage( var_0, var_1 )
{
self endon( var_1 );
var_0 waittill( "damage", var_2, var_3, var_4, var_5, var_6 );
self notify( var_1, var_2, var_3, var_4, var_5, var_6 );
}
generic_shootable_double_doors( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10, var_11, var_12, var_13, var_14, var_15, var_16, var_17, var_18 )
{
var_19 = getent( var_1, "targetname" );
var_20 = getent( var_3, "targetname" );
if ( isdefined( var_5 ) )
var_21 = getent( var_5, "targetname" );
else
var_21 = undefined;
var_22 = getent( var_6, "targetname" );
var_23 = getentarray( var_7, "targetname" );
var_24 = getent( var_0, "targetname" );
var_25 = spawn( "script_model", var_24.origin );
if ( isdefined( var_24.angles ) )
var_25.angles = var_24.angles;
else
var_25.angles = ( 0, 0, 0 );
var_25 setmodel( "generic_prop_raven" );
common_scripts\utility::waitframe();
if ( isdefined( var_8 ) )
var_25 scriptmodelplayanim( var_8 );
common_scripts\utility::waitframe();
if ( isdefined( var_2 ) )
var_19 linkto( var_25, var_2 );
else
var_19 linkto( var_25, "j_prop_1" );
if ( isdefined( var_4 ) )
var_20 linkto( var_25, var_4 );
else
var_20 linkto( var_25, "j_prop_2" );
common_scripts\utility::waitframe();
if ( var_17 )
var_22 disconnectpaths();
else
var_22 connectpaths();
var_26 = ( 0, 0, 0 );
var_27 = 0;
foreach ( var_29 in var_23 )
{
if ( isdefined( var_29.target ) )
maps\mp\_utility::add_to_bot_damage_targets( var_29 );
var_26 = var_26 + var_29.origin;
var_27++;
}
var_26 = var_26 / var_27;
if ( isdefined( var_21 ) && isdefined( var_11 ) )
var_21 scriptmodelplayanim( var_11 );
var_19 setcandamage( 0 );
var_19 setcanradiusdamage( 0 );
var_20 setcandamage( 0 );
var_20 setcanradiusdamage( 0 );
if ( isdefined( var_21 ) )
{
var_21 setcandamage( 0 );
var_21 setcanradiusdamage( 0 );
}
var_22 setcandamage( 0 );
var_22 setcanradiusdamage( 0 );
foreach ( var_29 in var_23 )
thread trigger_wait_damage( var_29, var_15 );
self waittill( var_15, var_33, var_34, var_35, var_36, var_37 );
if ( isexplosivedamagemod( var_37 ) )
var_35 = var_26 - var_36;
var_38 = var_35[1] < 0;
if ( isdefined( var_18 ) )
{
var_39 = getentarray( var_18, "targetname" );
foreach ( var_41 in var_39 )
var_41 delete();
}
foreach ( var_29 in var_23 )
{
maps\mp\_utility::remove_from_bot_damage_targets( var_29 );
var_29 delete();
}
common_scripts\utility::flag_set( var_16 );
if ( isdefined( var_12 ) )
var_19 playsound( var_12 );
if ( isdefined( var_13 ) )
var_20 playsound( var_13 );
if ( isdefined( var_21 ) && isdefined( var_14 ) )
playsoundatpos( var_21.origin, var_14 );
if ( var_38 )
var_25 scriptmodelplayanimdeltamotion( var_9 );
else
var_25 scriptmodelplayanimdeltamotion( var_10 );
common_scripts\utility::waitframe();
if ( isdefined( var_21 ) )
var_21 delete();
wait 0.3;
if ( var_17 )
var_22 connectpaths();
common_scripts\utility::waitframe();
var_22 delete();
}
hide_ai_sight_brushes()
{
var_0 = getentarray( "ai_sight_brush", "targetname" );
foreach ( var_2 in var_0 )
{
var_2 notsolid();
var_2 hide();
var_2 setaisightlinevisible( 0 );
}
}
set_button( var_0, var_1 )
{
if ( var_1 )
var_2 = var_0 + "_on";
else
var_2 = var_0 + "_off";
self.in_use = var_1;
self setmodel( var_2 );
if ( isdefined( self.fx_ent ) )
self.fx_ent delete();
if ( isdefined( level._effect[var_2] ) && isdefined( self.fx_origin ) && isdefined( self.fx_fwd ) )
{
self.fx_ent = spawnfx( level._effect[var_2], self.fx_origin, self.fx_fwd );
triggerfx( self.fx_ent );
}
}
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 );
}
}
get_linked_structs()
{
var_0 = [];
if ( isdefined( self.script_linkto ) )
{
var_1 = common_scripts\utility::get_links();
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
{
var_3 = common_scripts\utility::getstruct( var_1[var_2], "script_linkname" );
if ( isdefined( var_3 ) )
var_0[var_0.size] = var_3;
}
}
return var_0;
}
notify_struct_on_use( var_0 )
{
self waittill( "trigger" );
var_0 notify( "trigger" );
}
hopper_wheel_init( var_0 )
{
var_1 = getentarray( var_0, "targetname" );
foreach ( var_3 in var_1 )
{
if ( isdefined( var_3.target ) )
{
var_4 = getentarray( var_3.target, "targetname" );
foreach ( var_6 in var_4 )
{
if ( isdefined( var_6.script_noteworthy ) && issubstr( var_6.script_noteworthy, "wheel" ) )
var_6 thread hopper_wheel_think( var_3 );
}
}
}
}
hopper_wheel_think( var_0 )
{
var_1 = self;
var_2 = 1;
if ( var_1.script_noteworthy == "counterclockwise_wheel" )
var_2 = -1;
var_3 = 10000;
var_4 = 0;
for (;;)
{
var_0 common_scripts\utility::waittill_any( "door_state_done", "door_state_interrupted" );
if ( var_4 == 0 )
{
if ( var_0.statecurr == 2 || var_0.statecurr == 3 )
var_1 rotatevelocity( ( 0, 0, var_2 * -706 ), var_3 );
else
var_1 rotatevelocity( ( 0, 0, var_2 * 706 ), var_3 );
var_4 = 1;
continue;
}
var_1 rotatevelocity( ( 0, 0, 0 ), 0.1 );
var_4 = 0;
}
}
hopper_wheel( var_0, var_1 )
{
var_2 = 1;
if ( var_0 )
var_2 = -1;
self rotateroll( var_2 * 706, var_1 );
}
bot_underground_trapped_watch()
{
var_0 = getentarray( "gate_trigger", "targetname" );
var_1 = getent( "underground_volume", "targetname" );
while ( !common_scripts\utility::flag( "chain_broken" ) )
{
while ( common_scripts\utility::flag( "hopper_closed" ) && !common_scripts\utility::flag( "chain_broken" ) )
{
if ( isdefined( level.participants ) )
{
foreach ( var_3 in level.participants )
{
if ( isai( var_3 ) && var_3 istouching( var_1 ) )
var_0[0] maps\mp\_utility::set_high_priority_target_for_bot( var_3 );
}
}
wait 0.5;
}
while ( common_scripts\utility::flag( "hopper_open" ) && !common_scripts\utility::flag( "chain_broken" ) )
wait 0.5;
}
}
filter_spawn_point( var_0 )
{
var_1 = 32;
var_2 = [];
foreach ( var_4 in var_0 )
{
if ( common_scripts\utility::flag( "hopper_closed" ) && var_4.origin[2] < var_1 )
continue;
var_2[var_2.size] = var_4;
}
return var_2;
}
special_hopper_open()
{
var_0 = getentarray( "hopper_triggers", "targetname" );
common_scripts\utility::flag_wait( "pop_up_targets_ready" );
wait 1;
common_scripts\utility::flag_set( "hopper_open_initially" );
var_0[0] notify( "trigger" );
wait 1;
common_scripts\utility::flag_clear( "hopper_open_initially" );
}
shootable_ladder()
{
var_0 = getnode( "ladder_bottom_node", "targetname" );
var_1 = getnode( "ladder_top_node", "targetname" );
disconnectnodepair( var_1, var_0 );
var_2 = getent( "scripted_ladder", "targetname" );
var_3 = getent( "ladder_brush_bottom", "targetname" );
var_3 notsolid();
var_3 common_scripts\utility::trigger_off();
var_3 setcandamage( 1 );
var_2 setcandamage( 1 );
var_4 = common_scripts\utility::getstruct( "ladder_down_loc", "targetname" );
var_5 = common_scripts\utility::getstruct( "ladder_up_loc", "targetname" );
var_6 = spawn( "script_model", var_4.origin );
var_6 setmodel( "tag_origin" );
var_2 linkto( var_6 );
common_scripts\utility::waitframe();
var_6 moveto( var_5.origin, 0.1, 0.0, 0.0 );
wait 0.2;
var_2 unlink();
var_7 = spawn( "script_model", var_5.origin );
var_7 setmodel( "generic_prop_raven" );
common_scripts\utility::waitframe();
var_6 delete();
var_2 linkto( var_7, "j_prop_1" );
common_scripts\utility::waitframe();
var_8 = getent( "ladder_damage_trigger", "targetname" );
maps\mp\_utility::add_to_bot_damage_targets( var_8 );
var_9 = [];
var_9[0] = var_2;
var_9[1] = var_8;
waittill_any_of_these_take_damage( var_9, "drop_ladder" );
var_7 scriptmodelplayanim( "mp_frag_ladder_fall" );
maps\mp\_utility::remove_from_bot_damage_targets( var_8 );
var_8 delete();
var_7 playsound( "detpack_explo_metal" );
common_scripts\utility::flag_set( "ladder_down" );
connectnodepair( var_1, var_0 );
var_10 = getent( "ladder_brush_volume", "targetname" );
var_11 = 1;
while ( var_11 )
{
var_11 = 0;
foreach ( var_13 in level.characters )
{
if ( var_13 istouching( var_10 ) )
{
var_11 = 1;
break;
}
}
common_scripts\utility::waitframe();
}
var_3 common_scripts\utility::trigger_on();
var_3 solid();
}
waittill_any_of_these_take_damage( var_0, var_1 )
{
foreach ( var_3 in var_0 )
var_3 thread waittill_damage_flag_set( var_1 );
common_scripts\utility::flag_wait( var_1 );
}
waittill_damage_flag_set( var_0 )
{
level endon( "drop_ladder" );
self waittill( "damage", var_1, var_2, var_3, var_4, var_5 );
common_scripts\utility::flag_set( "drop_ladder" );
}
bot_shootable_target_watch( var_0, var_1, var_2 )
{
var_3 = getentarray( var_0, "targetname" );
var_4 = getent( var_1, "targetname" );
while ( !common_scripts\utility::flag( var_2 ) )
{
if ( isdefined( level.participants ) )
{
foreach ( var_6 in level.participants )
{
if ( isai( var_6 ) && var_6 istouching( var_4 ) )
var_3[0] maps\mp\_utility::set_high_priority_target_for_bot( var_6 );
}
}
wait 1.0;
}
}
sprinkler_watch()
{
var_0 = getentarray( "underground_damage_trigger", "targetname" );
var_1 = getentarray( "sprinkler_type_one", "targetname" );
var_2 = getentarray( "sprinkler_type_two", "targetname" );
for (;;)
{
common_scripts\utility::waittill_any_ents( var_0[0], "trigger", var_0[1], "trigger" );
common_scripts\utility::exploder( 1 );
wait 1.0;
foreach ( var_4 in var_1 )
var_4 playloopsound( "emt_frag_water_spray_01_int_lp" );
foreach ( var_4 in var_2 )
var_4 playloopsound( "emt_frag_water_spray_02_int_lp" );
wait 11;
foreach ( var_4 in var_1 )
var_4 stoploopsound();
foreach ( var_4 in var_2 )
var_4 stoploopsound();
}
}