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

344 lines
8.2 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
init()
{
level thread init_fx_triggers();
level thread global_breakables_think();
level thread func_glass_handler();
level thread impact_override();
}
set_fungglass_life( var_0, var_1 )
{
setsaveddvar( "glass_damageToWeaken", var_0 );
setsaveddvar( "glass_damageToDestroy", var_1 );
}
global_breakables_think()
{
var_0 = getentarray( "vfx_breakable", "script_noteworthy" );
var_1 = [];
foreach ( var_3 in var_0 )
{
if ( isdefined( var_3.script_parameters ) )
{
if ( issubstr( var_3.script_parameters, ".efx" ) || issubstr( var_3.script_parameters, ".EFX" ) || issubstr( var_3.script_parameters, "fx/" ) )
var_1[var_1.size] = var_3;
}
}
foreach ( var_6 in var_1 )
{
if ( isdefined( var_6.groupname ) && isdefined( var_6.script_spawn_pool ) )
{
var_7 = strtok( var_6.groupname, "|" );
foreach ( var_9 in var_7 )
{
if ( var_9 != "NO_MODEL" && var_9 != "no_model" )
precachemodel( var_9 );
}
var_11 = strtok( var_6.script_parameters, "|" );
var_12 = [];
var_13 = strtok( var_6.script_spawn_pool, "|" );
foreach ( var_15 in var_11 )
{
var_16 = strtok( var_15, "." )[0];
level._effect[var_16] = loadfx( var_16 );
var_12[var_12.size] = var_16;
}
var_6 thread global_breakable_wait( var_7, var_12, var_13, int( var_13[0] ) );
}
}
}
global_breakable_target_damage_wait()
{
var_0 = self.origin;
self endon( "delete" );
while ( isdefined( self ) )
{
var_1 = self.target;
self waittill( "damage", var_2 );
var_3 = getentarray( var_1, "targetname" );
foreach ( var_5 in var_3 )
{
if ( isdefined( var_5 ) )
var_5 dodamage( var_2, var_0 );
}
}
}
global_breakable_wait( var_0, var_1, var_2, var_3 )
{
var_4 = self.origin;
if ( isdefined( self.target ) )
thread global_breakable_target_damage_wait();
self.health = var_3;
self setcandamage( 1 );
self waittill( "death" );
if ( !isdefined( self ) )
return;
var_5 = 0;
var_6 = var_3;
var_7 = 0;
foreach ( var_9 in var_2 )
{
var_10 = int( var_9 );
var_7 = var_7 + var_10;
}
var_12 = self.health * -1 + var_3;
var_13 = "";
var_14 = undefined;
if ( isdefined( self.targetname ) && self.targetname != "" )
var_13 = self.targetname;
if ( isdefined( self.target ) )
var_14 = self.target;
var_5 = -1;
if ( self.health != 0 )
{
foreach ( var_9 in var_2 )
{
var_10 = int( var_9 );
if ( var_12 > var_10 )
{
var_12 = var_12 - var_10;
var_5++;
continue;
}
var_6 = var_10 - var_12;
break;
}
}
if ( var_5 < 0 )
var_5 = 0;
if ( var_5 > var_0.size - 1 )
var_5 = var_0.size - 1;
var_17 = ( 0, 0, 0 );
if ( isdefined( self.origin ) )
var_17 = self.origin;
var_18 = ( 0, 0, 0 );
if ( isdefined( self.angles ) )
var_18 = self.angles;
var_19 = undefined;
if ( isdefined( self.script_group ) && self.script_group != 0 )
var_19 = self.script_group;
playfx( level._effect[var_1[var_5]], self.origin, anglestoforward( self.angles ), anglestoup( self.angles ) );
self delete();
if ( var_0[var_5] != "NO_MODEL" && var_0[var_5] != "no_model" )
{
var_20 = spawn( "script_model", ( 0, 0, 0 ) );
var_20.origin = var_17;
var_20.angles = var_18;
var_20.targetname = var_13;
var_20.target = var_14;
var_20.script_group = var_19;
var_20 setmodel( var_0[var_5] );
if ( var_0.size > var_5 + 1 )
{
for ( var_21 = 0; var_21 < var_5 + 1; var_21++ )
{
var_0 = maps\_utility::array_remove_index( var_0, 0 );
var_1 = maps\_utility::array_remove_index( var_1, 0 );
var_2 = maps\_utility::array_remove_index( var_2, 0 );
}
var_22 = var_6;
if ( var_22 <= 0 )
var_22 = 1;
var_20.health = var_22;
var_20 thread global_breakable_wait( var_0, var_1, var_2, var_20.health );
return;
}
if ( isdefined( var_19 ) )
{
radiusdamage( var_20.origin, var_19, int( var_2[0] ) * 2, int( var_2[0] ) / 2 );
return;
}
return;
}
else
{
}
}
global_fx_array_to_string( var_0 )
{
var_1 = "";
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{
var_1 = var_1 + var_0[var_2];
if ( var_2 != var_0.size - 1 )
var_1 = var_1 + "|";
}
return var_1;
}
init_fx_triggers()
{
var_0 = getentarray( "fx_trigger", "targetname" );
common_scripts\utility::array_thread( var_0, ::handle_exploder_trigger );
}
handle_exploder_trigger()
{
if ( !common_scripts\utility::flag_exist( self.script_flag ) )
common_scripts\utility::flag_init( self.script_flag );
var_0 = strtok( self.script_flag, "_" );
var_1 = var_0[1];
if ( var_0.size == 2 )
{
for (;;)
{
common_scripts\utility::flag_wait( self.script_flag );
common_scripts\_exploder::activate_exploder( var_1 );
common_scripts\utility::flag_waitopen( self.script_flag );
maps\_utility::stop_exploder( var_1 );
}
}
}
func_glass_handler()
{
var_0 = [];
var_1 = [];
var_2 = getentarray( "vfx_custom_glass", "targetname" );
foreach ( var_4 in var_2 )
{
if ( isdefined( var_4.script_noteworthy ) )
{
var_5 = getglass( var_4.script_noteworthy );
if ( isdefined( var_5 ) )
{
var_1[var_5] = var_4;
var_0[var_0.size] = var_5;
}
}
}
var_7 = var_0.size;
var_8 = var_0.size;
var_9 = 5;
var_10 = 0;
while ( var_7 != 0 )
{
var_11 = var_10 + var_9 - 1;
if ( var_11 > var_8 )
var_11 = var_8;
if ( var_10 == var_8 )
var_10 = 0;
while ( var_10 < var_11 )
{
var_12 = var_0[var_10];
var_4 = var_1[var_12];
if ( isdefined( var_4 ) )
{
if ( isglassdestroyed( var_12 ) )
{
var_4 delete();
var_7--;
var_1[var_12] = undefined;
}
}
var_10++;
}
wait 0.05;
}
}
impact_override()
{
var_0 = getentarray( "vfx_impact_override", "targetname" );
var_1 = [];
foreach ( var_3 in var_0 )
{
if ( isdefined( var_3.script_parameters ) )
{
if ( issubstr( var_3.script_parameters, ".efx" ) || issubstr( var_3.script_parameters, ".EFX" ) || issubstr( var_3.script_parameters, "fx/" ) )
{
var_4 = strtok( var_3.script_parameters, "." )[0];
level._effect[var_4] = loadfx( var_4 );
var_3.script_parameters = var_4;
var_3 thread impact_override_object_damage_check();
}
}
}
}
impact_override_object_damage_check()
{
self setcandamage( 1 );
self.health = 1000;
self endon( "delete" );
var_0 = undefined;
var_1 = undefined;
var_2 = undefined;
var_3 = undefined;
for ( var_4 = undefined; isdefined( self ); self.health = 1000 )
{
self waittill( "damage", var_0, var_1, var_2, var_3, var_4 );
var_4 = tolower( var_4 );
switch ( var_4 )
{
case "mod_rifle_bullet":
case "mod_pistol_bullet":
case "bullet":
case "mod_projectile":
var_5 = self.script_parameters;
playfx( level._effect[var_5], var_3, anglestoforward( vectortoangles( var_2 ) ), anglestoup( vectortoangles( var_2 ) ) );
}
}
}