@@ -2815,21 +2815,25 @@ int CollCheck(tCollision_info* c, br_scalar dt) {
2815
2815
} else {
2816
2816
BrVector3Scale (& normal_force , & normal_force , 0.75f );
2817
2817
}
2818
- if ((c -> driver >= eDriver_net_human || (c -> driver == eDriver_oppo && !PointOutOfSight (& c -> pos , 150.0 ))) && !CAR (c )-> invulnerable ) {
2819
- v_diff = (CAR (c )-> pre_car_col_velocity .v [1 ] - c -> v .v [1 ]) * gDefensive_powerup_factor [CAR (c )-> power_up_levels [0 ]];
2820
- if (v_diff < -20.0f && CAR (c )-> number_of_wheels_on_ground < 3 ) {
2821
- if (c -> driver == eDriver_oppo && c -> index == 4 && v_diff < -40.0 ) {
2822
- KnackerThisCar (CAR (c ));
2823
- StealCar (CAR (c ));
2824
- v_diff = v_diff * 5.0 ;
2825
- }
2826
- for (i = 0 ; i < CAR (c )-> car_actor_count ; i ++ ) {
2827
- ts2 = (v_diff + 20.0 ) * -0.01 ;
2828
- TotallySpamTheModel (CAR (c ), i , CAR (c )-> car_model_actors [i ].actor , & CAR (c )-> car_model_actors [i ].crush_data , ts2 );
2829
- }
2830
- for (i = 0 ; i < COUNT_OF (CAR (c )-> damage_units ); i ++ ) {
2831
- DamageUnit (CAR (c ), i , IRandomPosNeg (5 ) + (v_diff + 20.0 ) * -1.5 );
2832
- }
2818
+ v_diff = (car_spec -> pre_car_col_velocity .v [1 ] - c -> v .v [1 ]) * gDefensive_powerup_factor [car_spec -> power_up_levels [0 ]];
2819
+ if (CAR (c )-> invulnerable
2820
+ || (c -> driver < eDriver_net_human && (c -> driver != eDriver_oppo || PointOutOfSight (& c -> pos , 150.0f )))
2821
+ || (v_diff >= -20.0f )
2822
+ || CAR (c )-> number_of_wheels_on_ground >= 3 ) {
2823
+ CrushAndDamageCar (CAR (c ), & dir , & normal_force , NULL );
2824
+ } else {
2825
+ // Cops Special Forces is always stolen if destroyed!
2826
+ if (c -> driver == eDriver_oppo && c -> index == 4 && v_diff < -40.0f ) {
2827
+ KnackerThisCar (CAR (c ));
2828
+ StealCar (CAR (c ));
2829
+ v_diff = v_diff * 5.0f ;
2830
+ }
2831
+ for (i = 0 ; i < CAR (c )-> car_actor_count ; i ++ ) {
2832
+ ts2 = (v_diff + 20.0f ) * -0.01f ;
2833
+ TotallySpamTheModel (CAR (c ), i , CAR (c )-> car_model_actors [i ].actor , & CAR (c )-> car_model_actors [i ].crush_data , ts2 );
2834
+ }
2835
+ for (i = 0 ; i < COUNT_OF (CAR (c )-> damage_units ); i ++ ) {
2836
+ DamageUnit (CAR (c ), i , IRandomPosNeg (5 ) + (v_diff + 20.0f ) * -1.5f );
2833
2837
}
2834
2838
}
2835
2839
if (!noise_defeat ) {
0 commit comments