1816 lines
49 KiB
Plaintext
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 );
|
|
}
|
|
}
|