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

1816 lines
49 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
get_load_trigger_classes()
{
var_0 = [];
var_0["trigger_multiple_nobloodpool"] = ::trigger_nobloodpool;
var_0["trigger_multiple_flag_set"] = ::trigger_flag_set;
var_0["trigger_multiple_flag_clear"] = ::trigger_flag_clear;
var_0["trigger_multiple_sun_off"] = ::trigger_sun_off;
var_0["trigger_multiple_sun_on"] = ::trigger_sun_on;
var_0["trigger_use_flag_set"] = ::trigger_flag_set;
var_0["trigger_use_flag_clear"] = ::trigger_flag_clear;
var_0["trigger_multiple_flag_set_touching"] = ::trigger_flag_set_touching;
var_0["trigger_multiple_flag_lookat"] = ::trigger_lookat;
var_0["trigger_multiple_flag_looking"] = ::trigger_looking;
var_0["trigger_multiple_no_prone"] = ::trigger_no_prone;
var_0["trigger_multiple_no_crouch_or_prone"] = ::trigger_no_crouch_or_prone;
var_0["trigger_multiple_compass"] = ::trigger_multiple_compass;
var_0["trigger_multiple_specialops_flag_set"] = ::trigger_flag_set_specialops;
var_0["trigger_multiple_fx_volume"] = ::trigger_multiple_fx_volume;
var_0["trigger_multiple_light_sunshadow"] = maps\_lights::sun_shadow_trigger;
if ( !maps\_utility::is_no_game_start() )
{
var_0["trigger_multiple_autosave"] = maps\_autosave::trigger_autosave;
var_0["trigger_multiple_spawn"] = maps\_spawner::trigger_spawner;
var_0["trigger_multiple_spawn_reinforcement"] = maps\_spawner::trigger_spawner_reinforcement;
}
var_0["trigger_multiple_slide"] = ::trigger_slide;
var_0["trigger_multiple_fog"] = ::trigger_fog;
var_0["trigger_multiple_depthoffield"] = ::trigger_multiple_depthoffield;
var_0["trigger_multiple_tessellationcutoff"] = ::trigger_multiple_tessellationcutoff;
var_0["trigger_damage_player_flag_set"] = ::trigger_damage_player_flag_set;
var_0["trigger_multiple_visionset"] = ::trigger_multiple_visionset;
var_0["trigger_multiple_sunflare"] = ::trigger_multiple_sunflare;
var_0["trigger_multiple_glass_break"] = ::trigger_glass_break;
var_0["trigger_radius_glass_break"] = ::trigger_glass_break;
var_0["trigger_multiple_friendly_respawn"] = ::trigger_friendly_respawn;
var_0["trigger_multiple_friendly_stop_respawn"] = ::trigger_friendly_stop_respawn;
var_0["trigger_multiple_physics"] = ::trigger_physics;
var_0["trigger_multiple_fx_watersheeting"] = ::trigger_multiple_fx_watersheeting;
var_0["trigger_multiple_audio"] = maps\_audio::trigger_multiple_audio_trigger;
return var_0;
}
trigger_multiple_fx_watersheeting( var_0 )
{
var_1 = 3;
if ( isdefined( var_0.script_duration ) )
var_1 = var_0.script_duration;
for (;;)
{
var_0 waittill( "trigger", var_2 );
if ( isplayer( var_2 ) )
{
var_2 setwatersheeting( 1, var_1 );
wait( var_1 * 0.2 );
}
}
}
get_load_trigger_funcs()
{
var_0 = [];
var_0["friendly_wave"] = maps\_spawner::friendly_wave;
var_0["friendly_wave_off"] = maps\_spawner::friendly_wave;
var_0["friendly_mgTurret"] = maps\_spawner::friendly_mgturret;
if ( !maps\_utility::is_no_game_start() )
{
var_0["camper_spawner"] = maps\_spawner::camper_trigger_think;
var_0["flood_spawner"] = maps\_spawner::flood_trigger_think;
var_0["trigger_spawner"] = maps\_spawner::trigger_spawner;
var_0["trigger_autosave"] = maps\_autosave::trigger_autosave;
var_0["trigger_spawngroup"] = ::trigger_spawngroup;
var_0["two_stage_spawner"] = maps\_spawner::two_stage_spawner_think;
var_0["trigger_vehicle_spline_spawn"] = ::trigger_vehicle_spline_spawn;
var_0["trigger_vehicle_spawn"] = ::trigger_vehicle_spawn;
var_0["trigger_vehicle_getin_spawn"] = ::trigger_vehicle_getin_spawn;
var_0["random_spawn"] = maps\_spawner::random_spawn;
}
var_0["autosave_now"] = maps\_autosave::autosave_now_trigger;
var_0["trigger_autosave_tactical"] = maps\_autosave::trigger_autosave_tactical;
var_0["trigger_autosave_stealth"] = maps\_autosave::trigger_autosave_stealth;
var_0["trigger_unlock"] = ::trigger_unlock;
var_0["trigger_lookat"] = ::trigger_lookat;
var_0["trigger_looking"] = ::trigger_looking;
var_0["trigger_cansee"] = ::trigger_cansee;
var_0["autosave_immediate"] = maps\_autosave::trigger_autosave_immediate;
var_0["flag_set"] = ::trigger_flag_set;
if ( maps\_utility::is_coop() )
var_0["flag_set_coop"] = ::trigger_flag_set_coop;
var_0["flag_set_player"] = ::trigger_flag_set_player;
var_0["flag_unset"] = ::trigger_flag_clear;
var_0["flag_clear"] = ::trigger_flag_clear;
var_0["objective_event"] = maps\_spawner::objective_event_init;
var_0["friendly_respawn_trigger"] = ::trigger_friendly_respawn;
var_0["radio_trigger"] = ::trigger_radio;
var_0["trigger_ignore"] = ::trigger_ignore;
var_0["trigger_pacifist"] = ::trigger_pacifist;
var_0["trigger_delete"] = ::trigger_turns_off;
var_0["trigger_delete_on_touch"] = ::trigger_delete_on_touch;
var_0["trigger_off"] = ::trigger_turns_off;
var_0["trigger_outdoor"] = maps\_spawner::outdoor_think;
var_0["trigger_indoor"] = maps\_spawner::indoor_think;
var_0["trigger_hint"] = ::trigger_hint;
var_0["trigger_grenade_at_player"] = ::trigger_throw_grenade_at_player;
var_0["flag_on_cleared"] = ::trigger_flag_on_cleared;
var_0["flag_set_touching"] = ::trigger_flag_set_touching;
var_0["delete_link_chain"] = ::trigger_delete_link_chain;
var_0["trigger_fog"] = ::trigger_fog;
var_0["trigger_slide"] = ::trigger_slide;
var_0["trigger_dooropen"] = ::trigger_dooropen;
var_0["no_crouch_or_prone"] = ::trigger_no_crouch_or_prone;
var_0["no_prone"] = ::trigger_no_prone;
return var_0;
}
init_script_triggers()
{
var_0 = get_load_trigger_classes();
var_1 = get_load_trigger_funcs();
foreach ( var_5, var_3 in var_0 )
{
var_4 = getentarray( var_5, "classname" );
common_scripts\utility::array_levelthread( var_4, var_3 );
}
var_6 = getentarray( "trigger_multiple", "classname" );
var_7 = getentarray( "trigger_radius", "classname" );
var_4 = maps\_utility::array_merge( var_6, var_7 );
var_8 = getentarray( "trigger_disk", "classname" );
var_4 = maps\_utility::array_merge( var_4, var_8 );
var_9 = getentarray( "trigger_once", "classname" );
var_4 = maps\_utility::array_merge( var_4, var_9 );
if ( !maps\_utility::is_no_game_start() )
{
for ( var_10 = 0; var_10 < var_4.size; var_10++ )
{
if ( var_4[var_10].spawnflags & 32 )
thread maps\_spawner::trigger_spawner( var_4[var_10] );
}
}
for ( var_11 = 0; var_11 < 7; var_11++ )
{
switch ( var_11 )
{
case 0:
var_12 = "trigger_multiple";
break;
case 1:
var_12 = "trigger_once";
break;
case 2:
var_12 = "trigger_use";
break;
case 3:
var_12 = "trigger_radius";
break;
case 4:
var_12 = "trigger_lookat";
break;
case 5:
var_12 = "trigger_disk";
break;
default:
var_12 = "trigger_damage";
break;
}
var_4 = getentarray( var_12, "code_classname" );
for ( var_10 = 0; var_10 < var_4.size; var_10++ )
{
if ( isdefined( var_4[var_10].script_flag_true ) )
level thread trigger_script_flag_true( var_4[var_10] );
if ( isdefined( var_4[var_10].script_flag_false ) )
level thread trigger_script_flag_false( var_4[var_10] );
if ( isdefined( var_4[var_10].script_autosavename ) || isdefined( var_4[var_10].script_autosave ) )
level thread maps\_autosave::autosavenamethink( var_4[var_10] );
if ( isdefined( var_4[var_10].script_fallback ) )
level thread maps\_spawner::fallback_think( var_4[var_10] );
if ( isdefined( var_4[var_10].script_mgturretauto ) )
level thread maps\_mgturret::mgturret_auto( var_4[var_10] );
if ( isdefined( var_4[var_10].script_killspawner ) )
level thread maps\_spawner::kill_spawner( var_4[var_10] );
if ( isdefined( var_4[var_10].script_kill_vehicle_spawner ) )
level thread maps\_vehicle_code::kill_vehicle_spawner( var_4[var_10] );
if ( isdefined( var_4[var_10].script_emptyspawner ) )
level thread maps\_spawner::empty_spawner( var_4[var_10] );
if ( isdefined( var_4[var_10].script_prefab_exploder ) )
var_4[var_10].script_exploder = var_4[var_10].script_prefab_exploder;
if ( isdefined( var_4[var_10].script_exploder ) )
level thread maps\_load::exploder_load( var_4[var_10] );
if ( isdefined( var_4[var_10].ambient ) )
level thread maps\_audio::trigger_multiple_audio_trigger( var_4[var_10] );
if ( isdefined( var_4[var_10].script_triggered_playerseek ) )
level thread trigger_playerseek( var_4[var_10] );
if ( isdefined( var_4[var_10].script_bctrigger ) )
level thread trigger_battlechatter( var_4[var_10] );
if ( isdefined( var_4[var_10].script_trigger_group ) )
var_4[var_10] thread trigger_group();
if ( isdefined( var_4[var_10].script_random_killspawner ) )
level thread maps\_spawner::random_killspawner( var_4[var_10] );
if ( isdefined( var_4[var_10].targetname ) )
{
var_13 = var_4[var_10].targetname;
if ( isdefined( var_1[var_13] ) )
level thread [[ var_1[var_13] ]]( var_4[var_10] );
}
}
}
}
trigger_createart_transient( var_0 )
{
var_1 = 1;
if ( var_1 )
var_0 delete();
}
createart_transient_thread()
{
}
trigger_damage_player_flag_set( var_0 )
{
var_1 = var_0 maps\_utility::get_trigger_flag();
if ( !isdefined( level.flag[var_1] ) )
common_scripts\utility::flag_init( var_1 );
for (;;)
{
var_0 waittill( "trigger", var_2 );
if ( !isalive( var_2 ) )
continue;
if ( !isplayer( var_2 ) )
continue;
var_0 maps\_utility::script_delay();
common_scripts\utility::flag_set( var_1, var_2 );
}
}
trigger_flag_clear( var_0 )
{
var_1 = var_0 maps\_utility::get_trigger_flag();
if ( !isdefined( level.flag[var_1] ) )
common_scripts\utility::flag_init( var_1 );
for (;;)
{
var_0 waittill( "trigger" );
var_0 maps\_utility::script_delay();
common_scripts\utility::flag_clear( var_1 );
}
}
trigger_flag_on_cleared( var_0 )
{
var_1 = var_0 maps\_utility::get_trigger_flag();
if ( !isdefined( level.flag[var_1] ) )
common_scripts\utility::flag_init( var_1 );
for (;;)
{
var_0 waittill( "trigger" );
wait 1;
if ( var_0 found_toucher() )
continue;
break;
}
common_scripts\utility::flag_set( var_1 );
}
found_toucher()
{
var_0 = getaiarray( "bad_guys" );
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
{
var_2 = var_0[var_1];
if ( !isalive( var_2 ) )
continue;
if ( var_2 istouching( self ) )
return 1;
wait 0.1;
}
var_0 = getaiarray( "bad_guys" );
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
{
var_2 = var_0[var_1];
if ( var_2 istouching( self ) )
return 1;
}
return 0;
}
trigger_flag_set( var_0 )
{
var_1 = var_0 maps\_utility::get_trigger_flag();
if ( !isdefined( level.flag[var_1] ) )
common_scripts\utility::flag_init( var_1 );
for (;;)
{
var_0 waittill( "trigger", var_2 );
var_0 maps\_utility::script_delay();
common_scripts\utility::flag_set( var_1, var_2 );
}
}
trigger_flag_set_coop( var_0 )
{
var_1 = var_0 maps\_utility::get_trigger_flag();
if ( !isdefined( level.flag[var_1] ) )
common_scripts\utility::flag_init( var_1 );
var_2 = [];
for (;;)
{
var_0 waittill( "trigger", var_3 );
if ( !isplayer( var_3 ) )
continue;
var_4 = [];
var_4[var_4.size] = var_3;
var_2 = maps\_utility::array_merge( var_2, var_4 );
if ( var_2.size == level.players.size )
break;
}
var_0 maps\_utility::script_delay();
common_scripts\utility::flag_set( var_1 );
}
trigger_flag_set_specialops( var_0 )
{
var_1 = var_0 maps\_utility::get_trigger_flag();
if ( !isdefined( level.flag[var_1] ) )
common_scripts\utility::flag_init( var_1 );
var_0.player_touched_arr = level.players;
var_0 thread trigger_flag_set_specialops_clear( var_1 );
for (;;)
{
var_0 waittill( "trigger", var_2 );
var_0.player_touched_arr = common_scripts\utility::array_remove( var_0.player_touched_arr, var_2 );
if ( var_0.player_touched_arr.size )
continue;
var_0 maps\_utility::script_delay();
common_scripts\utility::flag_set( var_1, var_2 );
}
}
trigger_flag_set_specialops_clear( var_0 )
{
for (;;)
{
level waittill( var_0 );
if ( common_scripts\utility::flag( var_0 ) )
{
self.player_touched_arr = [];
continue;
}
self.player_touched_arr = level.players;
}
}
trigger_friendly_respawn( var_0 )
{
var_0 endon( "death" );
var_1 = getent( var_0.target, "targetname" );
var_2 = undefined;
if ( isdefined( var_1 ) )
{
var_2 = var_1.origin;
var_1 delete();
}
else
{
var_1 = common_scripts\utility::getstruct( var_0.target, "targetname" );
var_2 = var_1.origin;
}
for (;;)
{
var_0 waittill( "trigger" );
level.respawn_spawner_org = var_2;
common_scripts\utility::flag_set( "respawn_friendlies" );
wait 0.5;
}
}
trigger_flag_set_touching( var_0 )
{
var_1 = var_0 maps\_utility::get_trigger_flag();
if ( !isdefined( level.flag[var_1] ) )
common_scripts\utility::flag_init( var_1 );
for (;;)
{
var_0 waittill( "trigger", var_2 );
var_0 maps\_utility::script_delay();
if ( isalive( var_2 ) && var_2 istouching( var_0 ) && isdefined( var_0 ) )
common_scripts\utility::flag_set( var_1 );
while ( isalive( var_2 ) && var_2 istouching( var_0 ) && isdefined( var_0 ) )
wait 0.25;
common_scripts\utility::flag_clear( var_1 );
}
}
trigger_friendly_stop_respawn( var_0 )
{
for (;;)
{
var_0 waittill( "trigger" );
common_scripts\utility::flag_clear( "respawn_friendlies" );
}
}
trigger_group()
{
thread trigger_group_remove();
level endon( "trigger_group_" + self.script_trigger_group );
self waittill( "trigger" );
level notify( "trigger_group_" + self.script_trigger_group, self );
}
trigger_group_remove()
{
level waittill( "trigger_group_" + self.script_trigger_group, var_0 );
if ( self != var_0 )
self delete();
}
trigger_nobloodpool( var_0 )
{
for (;;)
{
var_0 waittill( "trigger", var_1 );
if ( !isalive( var_1 ) )
continue;
var_1.skipbloodpool = 1;
var_1 thread set_wait_then_clear_skipbloodpool();
}
}
set_wait_then_clear_skipbloodpool()
{
self notify( "notify_wait_then_clear_skipBloodPool" );
self endon( "notify_wait_then_clear_skipBloodPool" );
self endon( "death" );
wait 2;
self.skipbloodpool = undefined;
}
trigger_physics( var_0 )
{
var_1 = [];
var_2 = common_scripts\utility::getstructarray( var_0.target, "targetname" );
var_3 = getentarray( var_0.target, "targetname" );
foreach ( var_5 in var_3 )
{
var_6 = spawnstruct();
var_6.origin = var_5.origin;
var_6.script_parameters = var_5.script_parameters;
var_6.script_damage = var_5.script_damage;
var_6.radius = var_5.radius;
var_2[var_2.size] = var_6;
var_5 delete();
}
var_0.org = var_2[0].origin;
var_0 waittill( "trigger" );
var_0 maps\_utility::script_delay();
foreach ( var_6 in var_2 )
{
var_9 = var_6.radius;
var_10 = var_6.script_parameters;
var_11 = var_6.script_damage;
if ( !isdefined( var_9 ) )
var_9 = 350;
if ( !isdefined( var_10 ) )
var_10 = 0.25;
setdvar( "tempdvar", var_10 );
var_10 = getdvarfloat( "tempdvar" );
if ( isdefined( var_11 ) )
radiusdamage( var_6.origin, var_9, var_11, var_11 * 0.5 );
physicsexplosionsphere( var_6.origin, var_9, var_9 * 0.5, var_10 );
}
}
trigger_playerseek( var_0 )
{
var_1 = var_0.script_triggered_playerseek;
var_0 waittill( "trigger" );
var_2 = getaiarray();
for ( var_3 = 0; var_3 < var_2.size; var_3++ )
{
if ( !isalive( var_2[var_3] ) )
continue;
if ( isdefined( var_2[var_3].script_triggered_playerseek ) && var_2[var_3].script_triggered_playerseek == var_1 )
{
var_2[var_3].goalradius = 800;
var_2[var_3] setgoalentity( level.player );
level thread maps\_spawner::delayed_player_seek_think( var_2[var_3] );
}
}
}
trigger_script_flag_false( var_0 )
{
var_1 = common_scripts\utility::create_flags_and_return_tokens( var_0.script_flag_false );
var_0 add_tokens_to_trigger_flags( var_1 );
var_0 common_scripts\utility::update_trigger_based_on_flags();
}
trigger_script_flag_true( var_0 )
{
var_1 = common_scripts\utility::create_flags_and_return_tokens( var_0.script_flag_true );
var_0 add_tokens_to_trigger_flags( var_1 );
var_0 common_scripts\utility::update_trigger_based_on_flags();
}
add_tokens_to_trigger_flags( var_0 )
{
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
{
var_2 = var_0[var_1];
if ( !isdefined( level.trigger_flags[var_2] ) )
level.trigger_flags[var_2] = [];
level.trigger_flags[var_2][level.trigger_flags[var_2].size] = self;
}
}
trigger_spawngroup( var_0 )
{
waittillframeend;
var_1 = var_0.script_spawngroup;
if ( !isdefined( level.spawn_groups[var_1] ) )
return;
var_0 waittill( "trigger" );
var_2 = common_scripts\utility::random( level.spawn_groups[var_1] );
foreach ( var_5, var_4 in var_2 )
var_4 maps\_utility::spawn_ai();
}
trigger_sun_off( var_0 )
{
for (;;)
{
var_0 waittill( "trigger", var_1 );
if ( getdvarint( "sm_sunenable" ) == 0 )
continue;
setsaveddvar( "sm_sunenable", 0 );
}
}
trigger_sun_on( var_0 )
{
for (;;)
{
var_0 waittill( "trigger", var_1 );
if ( getdvarint( "sm_sunenable" ) == 1 )
continue;
setsaveddvar( "sm_sunenable", 1 );
}
}
trigger_vehicle_getin_spawn( var_0 )
{
var_1 = getentarray( var_0.target, "targetname" );
foreach ( var_3 in var_1 )
{
var_4 = getentarray( var_3.target, "targetname" );
foreach ( var_6 in var_4 )
{
if ( !issubstr( var_6.code_classname, "actor" ) )
continue;
if ( !( var_6.spawnflags & 1 ) )
continue;
var_6.dont_auto_ride = 1;
}
}
var_0 waittill( "trigger" );
var_1 = getentarray( var_0.target, "targetname" );
common_scripts\utility::array_thread( var_1, maps\_utility::add_spawn_function, maps\_vehicle_code::vehicle_spawns_targets_and_rides );
common_scripts\utility::array_thread( var_1, maps\_utility::spawn_vehicle );
}
trigger_vehicle_spline_spawn( var_0 )
{
var_0 waittill( "trigger" );
var_1 = getentarray( var_0.target, "targetname" );
foreach ( var_3 in var_1 )
{
var_3 thread maps\_vehicle_code::spawn_vehicle_and_attach_to_spline_path( 70 );
wait 0.05;
}
}
get_trigger_targs()
{
var_0 = [];
var_1 = undefined;
if ( isdefined( self.target ) )
{
var_2 = getentarray( self.target, "targetname" );
var_3 = [];
foreach ( var_5 in var_2 )
{
if ( var_5.classname == "script_origin" )
var_3[var_3.size] = var_5;
if ( issubstr( var_5.classname, "trigger" ) )
var_0[var_0.size] = var_5;
}
var_2 = common_scripts\utility::getstructarray( self.target, "targetname" );
foreach ( var_5 in var_2 )
var_3[var_3.size] = var_5;
if ( var_3.size == 1 )
{
var_9 = var_3[0];
var_1 = var_9.origin;
if ( isdefined( var_9.code_classname ) )
var_9 delete();
}
}
var_10 = [];
var_10["triggers"] = var_0;
var_10["target_origin"] = var_1;
return var_10;
}
trigger_lookat( var_0 )
{
trigger_lookat_think( var_0, 1 );
}
trigger_looking( var_0 )
{
trigger_lookat_think( var_0, 0 );
}
trigger_lookat_think( var_0, var_1 )
{
var_2 = 0.78;
if ( isdefined( var_0.script_dot ) )
var_2 = var_0.script_dot;
var_3 = var_0 get_trigger_targs();
var_4 = var_3["triggers"];
var_5 = var_3["target_origin"];
var_6 = isdefined( var_0.script_flag ) || isdefined( var_0.script_noteworthy );
var_7 = undefined;
if ( var_6 )
{
var_7 = var_0 maps\_utility::get_trigger_flag();
if ( !isdefined( level.flag[var_7] ) )
common_scripts\utility::flag_init( var_7 );
}
else if ( !var_4.size )
{
}
if ( var_1 && var_6 )
level endon( var_7 );
var_0 endon( "death" );
var_8 = 0;
if ( isdefined( var_0.script_parameters ) )
var_8 = !issubstr( "no_sight", var_0.script_parameters );
for (;;)
{
if ( var_6 )
common_scripts\utility::flag_clear( var_7 );
var_0 waittill( "trigger", var_9 );
var_10 = [];
while ( var_9 istouching( var_0 ) )
{
if ( var_8 && !sighttracepassed( var_9 geteye(), var_5, 0, undefined ) )
{
if ( var_6 )
common_scripts\utility::flag_clear( var_7 );
wait 0.5;
continue;
}
var_11 = vectornormalize( var_5 - var_9.origin );
var_12 = var_9 getplayerangles();
var_13 = anglestoforward( var_12 );
var_14 = vectordot( var_13, var_11 );
if ( var_14 >= var_2 )
{
common_scripts\utility::array_thread( var_4, maps\_utility::send_notify, "trigger" );
if ( var_6 )
common_scripts\utility::flag_set( var_7, var_9 );
if ( var_1 )
return;
wait 2;
}
else if ( var_6 )
common_scripts\utility::flag_clear( var_7 );
if ( var_8 )
{
wait 0.5;
continue;
}
wait 0.05;
}
}
}
trigger_cansee( var_0 )
{
var_1 = [];
var_2 = undefined;
var_3 = var_0 get_trigger_targs();
var_1 = var_3["triggers"];
var_2 = var_3["target_origin"];
var_4 = isdefined( var_0.script_flag ) || isdefined( var_0.script_noteworthy );
var_5 = undefined;
if ( var_4 )
{
var_5 = var_0 maps\_utility::get_trigger_flag();
if ( !isdefined( level.flag[var_5] ) )
common_scripts\utility::flag_init( var_5 );
}
else if ( !var_1.size )
{
}
var_0 endon( "death" );
var_6 = 12;
var_7 = [];
var_7[var_7.size] = ( 0, 0, 0 );
var_7[var_7.size] = ( var_6, 0, 0 );
var_7[var_7.size] = ( var_6 * -1, 0, 0 );
var_7[var_7.size] = ( 0, var_6, 0 );
var_7[var_7.size] = ( 0, var_6 * -1, 0 );
var_7[var_7.size] = ( 0, 0, var_6 );
for (;;)
{
if ( var_4 )
common_scripts\utility::flag_clear( var_5 );
var_0 waittill( "trigger", var_8 );
while ( level.player istouching( var_0 ) )
{
if ( !var_8 cantraceto( var_2, var_7 ) )
{
if ( var_4 )
common_scripts\utility::flag_clear( var_5 );
wait 0.1;
continue;
}
if ( var_4 )
common_scripts\utility::flag_set( var_5 );
common_scripts\utility::array_thread( var_1, maps\_utility::send_notify, "trigger" );
wait 0.5;
}
}
}
cantraceto( var_0, var_1 )
{
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
{
if ( sighttracepassed( self geteye(), var_0 + var_1[var_2], 1, self ) )
return 1;
}
return 0;
}
trigger_unlock( var_0 )
{
var_1 = "not_set";
if ( isdefined( var_0.script_noteworthy ) )
var_1 = var_0.script_noteworthy;
var_2 = getentarray( var_0.target, "targetname" );
var_0 thread trigger_unlock_death( var_0.target );
for (;;)
{
common_scripts\utility::array_thread( var_2, common_scripts\utility::trigger_off );
var_0 waittill( "trigger" );
common_scripts\utility::array_thread( var_2, common_scripts\utility::trigger_on );
wait_for_an_unlocked_trigger( var_2, var_1 );
maps\_utility::array_notify( var_2, "relock" );
}
}
trigger_unlock_death( var_0 )
{
self waittill( "death" );
var_1 = getentarray( var_0, "targetname" );
common_scripts\utility::array_thread( var_1, common_scripts\utility::trigger_off );
}
wait_for_an_unlocked_trigger( var_0, var_1 )
{
level endon( "unlocked_trigger_hit" + var_1 );
var_2 = spawnstruct();
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
var_0[var_3] thread report_trigger( var_2, var_1 );
var_2 waittill( "trigger" );
level notify( "unlocked_trigger_hit" + var_1 );
}
report_trigger( var_0, var_1 )
{
self endon( "relock" );
level endon( "unlocked_trigger_hit" + var_1 );
self waittill( "trigger" );
var_0 notify( "trigger" );
}
trigger_battlechatter( var_0 )
{
var_1 = undefined;
if ( isdefined( var_0.target ) )
{
var_2 = getentarray( var_0.target, "targetname" );
if ( issubstr( var_2[0].classname, "trigger" ) )
var_1 = var_2[0];
}
if ( isdefined( var_1 ) )
var_1 waittill( "trigger", var_3 );
else
var_0 waittill( "trigger", var_3 );
var_4 = undefined;
if ( isdefined( var_1 ) )
{
if ( var_3.team != level.player.team && level.player istouching( var_0 ) )
var_4 = level.player animscripts\battlechatter::getclosestfriendlyspeaker( "custom" );
else if ( var_3.team == level.player.team )
{
var_5 = "axis";
if ( level.player.team == "axis" )
var_5 = "allies";
var_6 = animscripts\battlechatter::getspeakers( "custom", var_5 );
var_6 = common_scripts\utility::get_array_of_farthest( level.player.origin, var_6 );
foreach ( var_8 in var_6 )
{
if ( var_8 istouching( var_0 ) )
{
var_4 = var_8;
if ( battlechatter_dist_check( var_8.origin ) )
break;
}
}
}
}
else if ( isplayer( var_3 ) )
var_4 = var_3 animscripts\battlechatter::getclosestfriendlyspeaker( "custom" );
else
var_4 = var_3;
if ( !isdefined( var_4 ) )
return;
if ( battlechatter_dist_check() )
return;
var_10 = var_4 maps\_utility::custom_battlechatter( var_0.script_bctrigger );
if ( !var_10 )
level maps\_utility::delaythread( 0.25, ::trigger_battlechatter, var_0 );
else
var_0 notify( "custom_battlechatter_done" );
}
battlechatter_dist_check( var_0 )
{
return distancesquared( var_0, level.player getorigin() ) <= 262144;
}
trigger_vehicle_spawn( var_0 )
{
var_0 waittill( "trigger" );
var_1 = getentarray( var_0.target, "targetname" );
foreach ( var_3 in var_1 )
{
var_3 thread maps\_vehicle::spawn_vehicle_and_gopath();
wait 0.05;
}
}
trigger_dooropen( var_0 )
{
var_0 waittill( "trigger" );
var_1 = getentarray( var_0.target, "targetname" );
var_2 = [];
var_2["left_door"] = -170;
var_2["right_door"] = 170;
foreach ( var_4 in var_1 )
{
var_5 = var_2[var_4.script_noteworthy];
var_4 connectpaths();
var_4 rotateyaw( var_5, 1, 0, 0.5 );
}
}
trigger_glass_break( var_0 )
{
var_1 = getglassarray( var_0.target );
if ( !isdefined( var_1 ) || var_1.size == 0 )
return;
for (;;)
{
level waittill( "glass_break", var_2 );
if ( var_2 istouching( var_0 ) )
{
var_3 = var_2.origin;
wait 0.05;
var_4 = var_2.origin;
var_5 = undefined;
if ( var_3 != var_4 )
var_5 = var_4 - var_3;
if ( isdefined( var_5 ) )
{
foreach ( var_7 in var_1 )
destroyglass( var_7, var_5 );
break;
}
else
{
foreach ( var_7 in var_1 )
destroyglass( var_7 );
break;
}
}
}
var_0 delete();
}
trigger_delete_link_chain( var_0 )
{
var_0 waittill( "trigger" );
var_1 = var_0 get_script_linkto_targets();
common_scripts\utility::array_thread( var_1, ::delete_links_then_self );
}
get_script_linkto_targets()
{
var_0 = [];
if ( !isdefined( self.script_linkto ) )
return var_0;
var_1 = strtok( self.script_linkto, " " );
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
{
var_3 = var_1[var_2];
var_4 = getent( var_3, "script_linkname" );
if ( isdefined( var_4 ) )
var_0[var_0.size] = var_4;
}
return var_0;
}
delete_links_then_self()
{
var_0 = get_script_linkto_targets();
common_scripts\utility::array_thread( var_0, ::delete_links_then_self );
self delete();
}
trigger_throw_grenade_at_player( var_0 )
{
var_0 endon( "death" );
var_0 waittill( "trigger" );
maps\_utility::throwgrenadeatplayerasap();
}
trigger_hint( var_0 )
{
if ( !isdefined( level.displayed_hints ) )
level.displayed_hints = [];
waittillframeend;
var_1 = var_0.script_hint;
var_0 waittill( "trigger", var_2 );
if ( isdefined( level.displayed_hints[var_1] ) )
return;
level.displayed_hints[var_1] = 1;
var_2 maps\_utility::display_hint( var_1 );
}
trigger_delete_on_touch( var_0 )
{
for (;;)
{
var_0 waittill( "trigger", var_1 );
if ( isdefined( var_1 ) )
var_1 delete();
}
}
trigger_turns_off( var_0 )
{
var_0 waittill( "trigger" );
var_0 common_scripts\utility::trigger_off();
if ( !isdefined( var_0.script_linkto ) )
return;
var_1 = strtok( var_0.script_linkto, " " );
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
common_scripts\utility::array_thread( getentarray( var_1[var_2], "script_linkname" ), common_scripts\utility::trigger_off );
}
trigger_ignore( var_0 )
{
thread trigger_runs_function_on_touch( var_0, maps\_utility::set_ignoreme, maps\_utility::get_ignoreme );
}
trigger_pacifist( var_0 )
{
thread trigger_runs_function_on_touch( var_0, maps\_utility::set_pacifist, maps\_utility::get_pacifist );
}
trigger_runs_function_on_touch( var_0, var_1, var_2 )
{
for (;;)
{
var_0 waittill( "trigger", var_3 );
if ( !isalive( var_3 ) )
continue;
if ( var_3 [[ var_2 ]]() )
continue;
var_3 thread touched_trigger_runs_func( var_0, var_1 );
}
}
touched_trigger_runs_func( var_0, var_1 )
{
self endon( "death" );
self.ignoreme = 1;
[[ var_1 ]]( 1 );
self.ignoretriggers = 1;
wait 1;
self.ignoretriggers = 0;
while ( self istouching( var_0 ) )
wait 1;
[[ var_1 ]]( 0 );
}
trigger_radio( var_0 )
{
var_0 waittill( "trigger" );
maps\_utility::radio_dialogue( var_0.script_noteworthy );
}
trigger_flag_set_player( var_0 )
{
if ( maps\_utility::is_coop() )
{
thread trigger_flag_set_coop( var_0 );
return;
}
var_1 = var_0 maps\_utility::get_trigger_flag();
if ( !isdefined( level.flag[var_1] ) )
common_scripts\utility::flag_init( var_1 );
for (;;)
{
var_0 waittill( "trigger", var_2 );
if ( !isplayer( var_2 ) )
continue;
var_0 maps\_utility::script_delay();
common_scripts\utility::flag_set( var_1 );
}
}
trigger_multiple_sunflare( var_0 )
{
for (;;)
{
var_0 waittill( "trigger", var_1 );
var_1 maps\_art::sunflare_changes( var_0.script_visionset, var_0.script_delay );
common_scripts\utility::waitframe();
}
}
trigger_multiple_visionset( var_0 )
{
var_1 = 0;
var_2 = undefined;
var_3 = undefined;
var_4 = undefined;
if ( isdefined( var_0.script_visionset_start ) && isdefined( var_0.script_visionset_end ) )
{
var_1 = 1;
var_3 = getent( var_0.target, "targetname" );
if ( !isdefined( var_3 ) )
var_3 = common_scripts\utility::getstruct( var_0.target, "targetname" );
var_4 = getent( var_3.target, "targetname" );
if ( !isdefined( var_4 ) )
var_4 = common_scripts\utility::getstruct( var_3.target, "targetname" );
var_3 = var_3.origin;
var_4 = var_4.origin;
var_2 = distance( var_3, var_4 );
var_0 init_visionset_progress_trigger();
}
var_5 = -1;
for (;;)
{
var_0 waittill( "trigger", var_6 );
if ( isplayer( var_6 ) )
{
if ( var_1 )
{
var_7 = 0;
while ( var_6 istouching( var_0 ) )
{
var_7 = maps\_utility::get_progress( var_3, var_4, var_6.origin, var_2 );
var_7 = clamp( var_7, 0, 1 );
if ( var_7 != var_5 )
{
var_5 = var_7;
var_6 vision_set_fog_progress( var_0, var_7 );
}
wait 0.05;
}
if ( var_7 < 0.5 )
var_6 maps\_utility::vision_set_fog_changes( var_0.script_visionset_start, var_0.script_delay );
else
var_6 maps\_utility::vision_set_fog_changes( var_0.script_visionset_end, var_0.script_delay );
continue;
}
var_6 maps\_utility::vision_set_fog_changes( var_0.script_visionset, var_0.script_delay );
}
}
}
init_visionset_progress_trigger()
{
if ( !isdefined( self.script_delay ) )
self.script_delay = 2;
var_0 = maps\_utility::get_vision_set_fog( self.script_visionset_start );
var_1 = maps\_utility::get_vision_set_fog( self.script_visionset_end );
if ( !isdefined( var_0 ) || !isdefined( var_1 ) )
return;
var_2 = spawnstruct();
var_2.startdist = var_1.startdist - var_0.startdist;
var_2.halfwaydist = var_1.halfwaydist - var_0.halfwaydist;
var_2.red = var_1.red - var_0.red;
var_2.blue = var_1.blue - var_0.blue;
var_2.green = var_1.green - var_0.green;
var_2.hdrcolorintensity = var_1.hdrcolorintensity - var_0.hdrcolorintensity;
var_2.maxopacity = var_1.maxopacity - var_0.maxopacity;
var_2.sunfogenabled = isdefined( var_0.sunfogenabled ) || isdefined( var_1.sunfogenabled );
var_2.hdrsuncolorintensity = var_1.hdrsuncolorintensity - var_0.hdrsuncolorintensity;
var_2.skyfogintensity = var_1.skyfogintensity - var_0.skyfogintensity;
var_2.skyfogminangle = var_1.skyfogminangle - var_0.skyfogminangle;
var_2.skyfogmaxangle = var_1.skyfogmaxangle - var_0.skyfogmaxangle;
var_3 = 0;
if ( isdefined( var_0.sunred ) )
var_3 = var_0.sunred;
var_4 = 0;
if ( isdefined( var_1.sunred ) )
var_4 = var_1.sunred;
var_2.sunred_start = var_3;
var_2.sunred = var_4 - var_3;
var_5 = 0;
if ( isdefined( var_0.sungreen ) )
var_5 = var_0.sungreen;
var_6 = 0;
if ( isdefined( var_1.sungreen ) )
var_6 = var_1.sungreen;
var_2.sungreen_start = var_5;
var_2.sungreen = var_6 - var_5;
var_7 = 0;
if ( isdefined( var_0.sunblue ) )
var_7 = var_0.sunblue;
var_8 = 0;
if ( isdefined( var_1.sunblue ) )
var_8 = var_1.sunblue;
var_2.sunblue_start = var_7;
var_2.sunblue = var_8 - var_7;
var_9 = ( 0, 0, 0 );
if ( isdefined( var_0.sundir ) )
var_9 = var_0.sundir;
var_10 = ( 0, 0, 0 );
if ( isdefined( var_1.sundir ) )
var_10 = var_1.sundir;
var_2.sundir_start = var_9;
var_2.sundir = var_10 - var_9;
var_11 = 0;
if ( isdefined( var_0.sunbeginfadeangle ) )
var_11 = var_0.sunbeginfadeangle;
var_12 = 0;
if ( isdefined( var_1.sunbeginfadeangle ) )
var_12 = var_1.sunbeginfadeangle;
var_2.sunbeginfadeangle_start = var_11;
var_2.sunbeginfadeangle = var_12 - var_11;
var_13 = 0;
if ( isdefined( var_0.sunendfadeangle ) )
var_13 = var_0.sunendfadeangle;
var_14 = 0;
if ( isdefined( var_1.sunendfadeangle ) )
var_14 = var_1.sunendfadeangle;
var_2.sunendfadeangle_start = var_13;
var_2.sunendfadeangle = var_14 - var_13;
var_15 = 0;
if ( isdefined( var_0.normalfogscale ) )
var_15 = var_0.normalfogscale;
var_16 = 0;
if ( isdefined( var_1.normalfogscale ) )
var_16 = var_1.normalfogscale;
var_2.normalfogscale_start = var_15;
var_2.normalfogscale = var_16 - var_15;
self.visionset_diff = var_2;
}
vision_set_fog_progress( var_0, var_1 )
{
maps\_utility::init_self_visionset();
if ( var_1 < 0.5 )
self.vision_set_transition_ent.vision_set = var_0.script_visionset_start;
else
self.vision_set_transition_ent.vision_set = var_0.script_visionset_end;
self.vision_set_transition_ent.time = 0;
if ( var_0.script_visionset_start == var_0.script_visionset_end )
return;
self visionsetnakedforplayer_lerp( var_0.script_visionset_start, var_0.script_visionset_end, var_1 );
var_2 = maps\_utility::get_vision_set_fog( var_0.script_visionset_start );
var_3 = maps\_utility::get_vision_set_fog( var_0.script_visionset_end );
var_4 = var_0.visionset_diff;
var_5 = spawnstruct();
var_5.startdist = var_2.startdist + var_4.startdist * var_1;
var_5.halfwaydist = var_2.halfwaydist + var_4.halfwaydist * var_1;
var_5.halfwaydist = max( 1, var_5.halfwaydist );
var_5.red = var_2.red + var_4.red * var_1;
var_5.green = var_2.green + var_4.green * var_1;
var_5.blue = var_2.blue + var_4.blue * var_1;
var_5.hdrcolorintensity = var_2.hdrcolorintensity + var_4.hdrcolorintensity * var_1;
var_5.maxopacity = var_2.maxopacity + var_4.maxopacity * var_1;
var_5.skyfogintensity = var_2.skyfogintensity + var_4.skyfogintensity * var_1;
var_5.skyfogminangle = var_2.skyfogminangle + var_4.skyfogminangle * var_1;
var_5.skyfogmaxangle = var_2.skyfogmaxangle + var_4.skyfogmaxangle * var_1;
if ( var_4.sunfogenabled )
{
var_5.sunfogenabled = 1;
var_5.sunred = var_4.sunred_start + var_4.sunred * var_1;
var_5.sungreen = var_4.sungreen_start + var_4.sungreen * var_1;
var_5.sunblue = var_4.sunblue_start + var_4.sunblue * var_1;
var_5.hdrsuncolorintensity = var_2.hdrsuncolorintensity + var_4.hdrsuncolorintensity * var_1;
var_5.sundir = var_4.sundir_start + var_4.sundir * var_1;
var_5.sunbeginfadeangle = var_4.sunbeginfadeangle_start + var_4.sunbeginfadeangle * var_1;
var_5.sunendfadeangle = var_4.sunendfadeangle_start + var_4.sunendfadeangle * var_1;
var_5.normalfogscale = var_4.normalfogscale_start + var_4.normalfogscale * var_1;
}
maps\_utility::set_fog_to_ent_values( var_5, 0.05 );
}
trigger_fog( var_0 )
{
waittillframeend;
var_1 = var_0.script_fogset_start;
var_2 = var_0.script_fogset_end;
var_0.sunfog_enabled = 0;
if ( isdefined( var_1 ) && isdefined( var_2 ) )
{
var_3 = maps\_utility::get_fog( var_1 );
var_4 = maps\_utility::get_fog( var_2 );
var_0.sunfog_enabled = isdefined( var_3.sunred ) || isdefined( var_4.sunred );
var_0.start_neardist = var_3.startdist;
var_0.start_fardist = var_3.halfwaydist;
var_0.start_color = ( var_3.red, var_3.green, var_3.blue );
var_0.start_hdrcolorintensity = var_3.hdrcolorintensity;
var_0.start_opacity = var_3.maxopacity;
var_0.start_skyfogintensity = var_3.skyfogintensity;
var_0.start_skyfogminangle = var_3.skyfogminangle;
var_0.start_skyfogmaxangle = var_3.skyfogmaxangle;
if ( isdefined( var_3.sunred ) )
{
var_0.start_suncolor = ( var_3.sunred, var_3.sungreen, var_3.sunblue );
var_0.start_hdrsuncolorintensity = var_3.hdrsuncolorintensity;
var_0.start_sundir = var_3.sundir;
var_0.start_sunbeginfadeangle = var_3.sunbeginfadeangle;
var_0.start_sunendfadeangle = var_3.sunendfadeangle;
var_0.start_sunfogscale = var_3.normalfogscale;
}
else if ( var_0.sunfog_enabled )
{
var_0.start_suncolor = var_0.start_color;
var_0.start_hdrsuncolorintensity = 1;
var_0.start_sundir = ( 0, 0, 0 );
var_0.start_sunbeginfadeangle = 0;
var_0.start_sunendfadeangle = 90;
var_0.start_sunfogscale = 1;
}
var_0.end_neardist = var_4.startdist;
var_0.end_fardist = var_4.halfwaydist;
var_0.end_color = ( var_4.red, var_4.green, var_4.blue );
var_0.end_hdrcolorintensity = var_4.hdrcolorintensity;
var_0.end_opacity = var_4.maxopacity;
var_0.end_skyfogintensity = var_4.skyfogintensity;
var_0.end_skyfogminangle = var_4.skyfogminangle;
var_0.end_skyfogmaxangle = var_4.skyfogmaxangle;
if ( isdefined( var_4.sunred ) )
{
var_0.end_suncolor = ( var_4.sunred, var_4.sungreen, var_4.sunblue );
var_0.end_hdrsuncolorintensity = var_4.hdrsuncolorintensity;
var_0.end_sundir = var_4.sundir;
var_0.end_sunbeginfadeangle = var_4.sunbeginfadeangle;
var_0.end_sunendfadeangle = var_4.sunendfadeangle;
var_0.end_sunfogscale = var_4.normalfogscale;
}
else if ( var_0.sunfog_enabled )
{
var_0.end_suncolor = var_0.end_color;
var_0.end_hdrsuncolorintensity = 1;
var_0.end_sundir = ( 0, 0, 0 );
var_0.end_sunbeginfadeangle = 0;
var_0.end_sunendfadeangle = 90;
var_0.end_sunfogscale = 1;
}
}
var_5 = getent( var_0.target, "targetname" );
var_6 = var_5.origin;
var_7 = undefined;
if ( isdefined( var_5.target ) )
{
var_8 = getent( var_5.target, "targetname" );
var_7 = var_8.origin;
}
else
var_7 = var_6 + ( var_0.origin - var_6 ) * 2;
var_9 = distance( var_6, var_7 );
for (;;)
{
var_0 waittill( "trigger", var_10 );
var_11 = 0;
while ( var_10 istouching( var_0 ) )
{
var_11 = maps\_utility::get_progress( var_6, var_7, var_10.origin, var_9 );
var_11 = clamp( var_11, 0, 1 );
var_0 maps\_art::set_fog_progress( var_11 );
wait 0.05;
}
if ( var_11 > 0.5 )
var_11 = 1;
else
var_11 = 0;
var_0 maps\_art::set_fog_progress( var_11 );
}
}
trigger_multiple_depthoffield( var_0 )
{
waittillframeend;
for (;;)
{
var_0 waittill( "trigger", var_1 );
var_2 = var_0.script_dof_near_start;
var_3 = var_0.script_dof_near_end;
var_4 = var_0.script_dof_near_blur;
var_5 = var_0.script_dof_far_start;
var_6 = var_0.script_dof_far_end;
var_7 = var_0.script_dof_far_blur;
var_8 = var_0.script_delay;
if ( var_2 != level.dof["base"]["goal"]["nearStart"] || var_3 != level.dof["base"]["goal"]["nearEnd"] || var_4 != level.dof["base"]["goal"]["nearBlur"] || var_5 != level.dof["base"]["goal"]["farStart"] || var_6 != level.dof["base"]["goal"]["farEnd"] || var_7 != level.dof["base"]["goal"]["farBlur"] )
{
maps\_art::dof_set_base( var_2, var_3, var_4, var_5, var_6, var_7, var_8 );
wait( var_8 );
continue;
}
common_scripts\utility::waitframe();
}
}
trigger_multiple_tessellationcutoff( var_0 )
{
if ( level.xenon || level.ps3 )
return;
waittillframeend;
for (;;)
{
var_0 waittill( "trigger", var_1 );
var_2 = var_0.script_tess_distance;
var_3 = var_0.script_tess_falloff;
var_4 = var_0.script_delay;
if ( var_2 != level.tess.cutoff_distance_goal || var_3 != level.tess.cutoff_falloff_goal )
{
var_2 = max( 0, var_2 );
var_2 = min( 10000, var_2 );
var_3 = max( 0, var_3 );
var_3 = min( 10000, var_3 );
maps\_art::tess_set_goal( var_2, var_3, var_4 );
continue;
}
common_scripts\utility::waitframe();
}
}
trigger_slide( var_0 )
{
for (;;)
{
var_0 waittill( "trigger", var_1 );
var_1 thread slidetriggerplayerthink( var_0 );
}
}
slidetriggerplayerthink( var_0 )
{
if ( isdefined( self.vehicle ) )
return;
if ( maps\_utility::issliding() )
return;
if ( isdefined( self.player_view ) )
return;
self endon( "death" );
if ( soundexists( "SCN_cliffhanger_player_hillslide" ) )
self playsound( "SCN_cliffhanger_player_hillslide" );
var_1 = undefined;
if ( isdefined( var_0.script_accel ) )
var_1 = var_0.script_accel;
self endon( "cancel_sliding" );
maps\_utility::beginsliding( undefined, var_1 );
for (;;)
{
if ( !self istouching( var_0 ) )
break;
wait 0.05;
}
if ( isdefined( level.end_slide_delay ) )
wait( level.end_slide_delay );
maps\_utility::endsliding();
}
trigger_multiple_fx_volume( var_0 )
{
var_1 = spawn( "script_origin", ( 0, 0, 0 ) );
var_0.fx = [];
foreach ( var_3 in level.createfxent )
assign_fx_to_trigger( var_3, var_0, var_1 );
var_1 delete();
if ( !isdefined( var_0.target ) )
return;
var_5 = getentarray( var_0.target, "targetname" );
var_0.fx_on = 1;
foreach ( var_7 in var_5 )
{
switch ( var_7.classname )
{
case "trigger_multiple_fx_volume_on":
var_7 thread trigger_multiple_fx_trigger_on_think( var_0 );
break;
case "trigger_multiple_fx_volume_off":
var_7 thread trigger_multiple_fx_trigger_off_think( var_0 );
break;
default:
break;
}
}
}
trigger_multiple_fx_trigger_on_think( var_0 )
{
for (;;)
{
self waittill( "trigger" );
if ( !var_0.fx_on )
common_scripts\utility::array_thread( var_0.fx, maps\_utility::restarteffect );
wait 1;
}
}
trigger_multiple_fx_trigger_off_think( var_0 )
{
for (;;)
{
self waittill( "trigger" );
if ( var_0.fx_on )
common_scripts\utility::array_thread( var_0.fx, common_scripts\utility::pauseeffect );
wait 1;
}
}
assign_fx_to_trigger( var_0, var_1, var_2 )
{
if ( isdefined( var_0.v["soundalias"] ) && var_0.v["soundalias"] != "nil" )
{
if ( !isdefined( var_0.v["stopable"] ) || !var_0.v["stopable"] )
return;
}
var_2.origin = var_0.v["origin"];
if ( var_2 istouching( var_1 ) )
var_1.fx[var_1.fx.size] = var_0;
}
trigger_multiple_compass( var_0 )
{
var_1 = var_0.script_parameters;
if ( !isdefined( level.minimap_image ) )
level.minimap_image = "";
for (;;)
{
var_0 waittill( "trigger" );
if ( level.minimap_image != var_1 )
maps\_compass::setupminimap( var_1 );
}
}
trigger_no_crouch_or_prone( var_0 )
{
common_scripts\utility::array_thread( level.players, ::no_crouch_or_prone_think_for_player, var_0 );
}
no_crouch_or_prone_think_for_player( var_0 )
{
for (;;)
{
var_0 waittill( "trigger", var_1 );
if ( !isdefined( var_1 ) )
continue;
if ( var_1 != self )
continue;
while ( var_1 istouching( var_0 ) )
{
var_1 allowprone( 0 );
var_1 allowcrouch( 0 );
wait 0.05;
}
var_1 allowprone( 1 );
var_1 allowcrouch( 1 );
}
}
trigger_no_prone( var_0 )
{
common_scripts\utility::array_thread( level.players, ::no_prone_for_player, var_0 );
}
no_prone_for_player( var_0 )
{
for (;;)
{
var_0 waittill( "trigger", var_1 );
if ( !isdefined( var_1 ) )
continue;
if ( var_1 != self )
continue;
while ( var_1 istouching( var_0 ) )
{
var_1 allowprone( 0 );
wait 0.05;
}
var_1 allowprone( 1 );
}
}