Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function quadrotor_collision()
- {
- self endon( "change_state" );
- self endon( "crash_done" );
- self endon( "death" );
- if( !IsAlive( self ) )
- {
- self thread quadrotor_predicted_collision();
- }
- while( 1 )
- {
- self waittill( "veh_collision", velocity, normal );
- ang_vel = self GetAngularVelocity() * 0.5;
- self SetAngularVelocity( ang_vel );
- // bounce off walls
- if( normal[2] < 0.6 || ( IsAlive( self ) && !isdefined( self.emped ) ) )
- {
- self SetVehVelocity( self.velocity + normal * 90 );
- self PlaySound( "veh_wasp_wall_imp" );
- if( normal[2] < 0.6 )
- {
- fx_origin = self.origin - normal * 28;
- }
- else
- {
- fx_origin = self.origin - normal * 10;
- }
- PlayFX( level._effect[ "quadrotor_nudge" ], fx_origin, normal );
- }
- else
- {
- if( isdefined( self.emped ) )
- {
- if( isdefined( self.bounced ) )
- {
- self playsound( "veh_wasp_wall_imp" );
- self SetVehVelocity( (0,0,0) );
- self SetAngularVelocity( (0,0,0) );
- if( self.angles[0] < 0 )
- {
- if( self.angles[0] < -15 )
- {
- self.angles = ( -15, self.angles[1], self.angles[2] );
- }
- else if( self.angles[0] > -10 )
- {
- self.angles = ( -10, self.angles[1], self.angles[2] );
- }
- }
- else
- {
- if( self.angles[0] > 15 )
- {
- self.angles = ( 15, self.angles[1], self.angles[2] );
- }
- else if( self.angles[0] < 10 )
- {
- self.angles = ( 10, self.angles[1], self.angles[2] );
- }
- }
- self.bounced = undefined;
- self notify( "landed" );
- return;
- }
- else
- {
- self.bounced = true;
- self SetVehVelocity( self.velocity + normal * 120 );
- self playsound( "veh_wasp_wall_imp" );
- if( normal[2] < 0.6 )
- {
- fx_origin = self.origin - normal * 28;
- }
- else
- {
- fx_origin = self.origin - normal * 10;
- }
- PlayFX( level._effect[ "quadrotor_nudge" ], fx_origin, normal );
- }
- }
- else
- {
- //CreateDynEntAndLaunch( self.deathmodel, self.origin, self.angles, self.origin, self.velocity * 0.01, level._effect[ "quadrotor_crash" ] );
- self playsound( "veh_qrdrone_explo" );
- self thread death_fire_loop_audio();
- self notify( "crash_done" );
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement