98 lines
3.2 KiB
Plaintext
98 lines
3.2 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
if ( common_scripts\utility::issp() )
|
|
{
|
|
common_scripts\_destructible::destructible_create( "toy_hanging_light_off", "tag_origin", 0 );
|
|
common_scripts\_destructible::destructible_function( ::hanging_light_off );
|
|
}
|
|
}
|
|
|
|
hanging_light_off()
|
|
{
|
|
var_0 = self.angles;
|
|
var_1 = anglestoforward( var_0 );
|
|
var_2 = ( var_1[1], var_1[0], 0 );
|
|
var_1 = ( var_1[0], -1 * var_1[1], 0 );
|
|
|
|
if ( isdefined( self.script_angles ) )
|
|
var_3 = ( self.script_angles[2], self.script_angles[0], self.script_angles[1] );
|
|
else
|
|
var_3 = ( 90, 90, 90 );
|
|
|
|
if ( isdefined( self.script_duration ) )
|
|
var_4 = self.script_duration / 6 * randomfloatrange( 0.9, 1.1 );
|
|
else
|
|
var_4 = 0.4 * randomfloatrange( 0.9, 1.1 );
|
|
|
|
var_4 = int( var_4 * 20 ) / 20;
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "damage", var_5, var_6, var_7, var_8, var_9 );
|
|
|
|
if ( isdefined( var_6 ) && var_6 == self )
|
|
continue;
|
|
|
|
var_9 = destructible_scripts\toy_lv_trash_can_vegas::destructible_modifydamagetype( var_9 );
|
|
var_10 = [];
|
|
|
|
if ( var_9 == "splash" )
|
|
{
|
|
var_7 = vectornormalize( var_7 );
|
|
var_8 = ( randomfloatrange( -100, 100 ), randomfloatrange( -100, 100 ), -400 );
|
|
var_8 = var_8 * var_4;
|
|
var_8 = var_8 + self.origin;
|
|
}
|
|
|
|
var_11 = vectorfromlinetopoint( var_8, var_8 + var_7, self.origin );
|
|
|
|
for ( var_12 = 0; var_12 < 3; var_12++ )
|
|
{
|
|
var_13 = maps\interactive_models\_interactive_utility::zerocomponent( var_11, var_12 );
|
|
var_13 = maps\interactive_models\_interactive_utility::rotate90aroundaxis( var_13, var_12 );
|
|
var_14 = maps\interactive_models\_interactive_utility::zerocomponent( var_7, var_12 );
|
|
var_10[var_12] = vectordot( var_13, var_14 );
|
|
}
|
|
|
|
var_10 = var_10[0] * var_1 + var_10[1] * var_2 + ( 0, 0, var_10[2] );
|
|
var_10 = var_10 / ( var_4 * var_4 * 40 );
|
|
self notify( "new swing" );
|
|
thread hanging_light_swing( ( var_10[1], var_10[2], var_10[0] ), var_0, var_4, var_3 );
|
|
}
|
|
}
|
|
|
|
hanging_light_swing( var_0, var_1, var_2, var_3 )
|
|
{
|
|
self endon( "new swing" );
|
|
var_4 = self.angles + var_0;
|
|
var_4 = ( clamp( var_4[0], var_1[0] - var_3[0], var_1[0] + var_3[0] ), clamp( var_4[1], var_1[1] - var_3[1], var_1[1] + var_3[1] ), clamp( var_4[2], var_1[2] - var_3[2], var_1[2] + var_3[2] ) );
|
|
var_5 = length( var_4 - self.angles ) / length( var_0 );
|
|
var_5 = var_5 * var_2;
|
|
var_5 = int( var_5 * 20 ) / 20;
|
|
|
|
if ( var_5 < 0.1 )
|
|
var_5 = 0.1;
|
|
|
|
self rotateto( var_4, var_5 * 3 / 2, 0, var_5 );
|
|
wait( var_5 * 3 / 2 );
|
|
var_0 = var_4 - var_1;
|
|
var_6 = max( max( abs( var_0[0] ), abs( var_0[1] ) ), abs( var_0[2] ) );
|
|
|
|
while ( var_0[0] != 0 || var_0[1] != 0 || var_0[2] != 0 )
|
|
{
|
|
var_7 = ( var_6 * 0.9 - 0.5 ) / var_6;
|
|
|
|
if ( var_7 < 0 )
|
|
var_7 = 0;
|
|
|
|
var_6 = var_6 * var_7;
|
|
var_0 = var_0 * ( var_7 * -1 );
|
|
var_4 = var_1 + var_0;
|
|
self rotateto( var_4, var_2 * 3, var_2, var_2 );
|
|
wait( var_2 * 3 );
|
|
}
|
|
}
|