@@ -1195,7 +1195,7 @@ void ai_turn_towards_vector(vec3d* dest, object* objp, vec3d* slide_vec, vec3d*
11951195 vec3d vel_in, vel_out, desired_fvec, src;
11961196 float delta_time;
11971197 physics_info *pip;
1198- float delta_bank ;
1198+ float bank ;
11991199
12001200 Assertion(objp->type == OBJ_SHIP || objp->type == OBJ_WEAPON, "ai_turn_towards_vector called on a non-ship non-weapon object!");
12011201
@@ -1289,17 +1289,18 @@ void ai_turn_towards_vector(vec3d* dest, object* objp, vec3d* slide_vec, vec3d*
12891289 // Should be more general case here. Currently, anything that is not a weapon will bank when it turns.
12901290 // Goober5000 - don't bank if sexp or ship says not to
12911291 if ( (objp->type == OBJ_WEAPON) || (flags & AITTV_IGNORE_BANK ) )
1292- delta_bank = 0.0f;
1292+ bank = 0.0f;
12931293 else if (objp->type == OBJ_SHIP && Ship_info[Ships[objp->instance].ship_info_index].flags[Ship::Info_Flags::Dont_bank_when_turning])
1294- delta_bank = 0.0f;
1294+ bank = 0.0f;
12951295 else if ((bank_override) && (iff_x_attacks_y(Ships[objp->instance].team, Player_ship->team))) { // Theoretically, this will only happen for Shivans.
1296- delta_bank = bank_override;
1296+ bank = bank_override;
12971297 } else {
1298- delta_bank = vm_vec_dot(&curr_orient.vec.rvec, &objp->last_orient.vec.rvec);
1299- delta_bank = 200.0f * (1.0f - delta_bank ) * pip->delta_bank_const;
1298+ bank = vm_vec_dot(&curr_orient.vec.rvec, &objp->last_orient.vec.rvec);
1299+ bank = 200.0f * (1.0f - bank ) * pip->delta_bank_const;
13001300 if (vm_vec_dot(&objp->last_orient.vec.fvec, &objp->orient.vec.rvec) < 0.0f)
1301- delta_bank = -delta_bank ;
1301+ bank = -bank ;
13021302 }
1303+ bank *= vel_limit.xyz.z;
13031304
13041305
13051306 matrix out_orient;
@@ -1311,7 +1312,7 @@ void ai_turn_towards_vector(vec3d* dest, object* objp, vec3d* slide_vec, vec3d*
13111312 vm_angular_move_matrix(&goal_orient, &curr_orient, &vel_in, delta_time,
13121313 &out_orient, &vel_out, &vel_limit, &acc_limit, The_mission.ai_profile->flags[AI::Profile_Flags::No_turning_directional_bias]);
13131314 } else {
1314- vm_angular_move_forward_vec(&desired_fvec, &curr_orient, &vel_in, delta_time, delta_bank ,
1315+ vm_angular_move_forward_vec(&desired_fvec, &curr_orient, &vel_in, delta_time, bank ,
13151316 &out_orient, &vel_out, &vel_limit, &acc_limit, The_mission.ai_profile->flags[AI::Profile_Flags::No_turning_directional_bias]);
13161317 }
13171318
@@ -4871,12 +4872,12 @@ void avoid_ship()
48714872 // If in front of enemy, turn away from it.
48724873 // If behind enemy, try to get fully behind it.
48734874 if (away_dot < 0.0f) {
4874- turn_away_from_point(Pl_objp, &enemy_pos, Pl_objp->phys_info.speed );
4875+ turn_away_from_point(Pl_objp, &enemy_pos, 1.0f );
48754876 } else {
48764877 vec3d goal_pos;
48774878
48784879 vm_vec_scale_add(&goal_pos, &En_objp->pos, &En_objp->orient.vec.fvec, -100.0f);
4879- turn_towards_point(Pl_objp, &goal_pos, NULL, Pl_objp->phys_info.speed );
4880+ turn_towards_point(Pl_objp, &goal_pos, NULL, 1.0f );
48804881 }
48814882
48824883 // Set speed.
@@ -5313,9 +5314,9 @@ void evade_ship()
53135314 // caused flying in an odd spiral.
53145315 vm_vec_scale_add(&goal_point, &enemy_pos, &Pl_objp->orient.vec.rvec, 1000.0f);
53155316 if (dist < 100.0f)
5316- bank_override = Pl_objp->phys_info.speed ;
5317+ bank_override = 1.0f ;
53175318 } else {
5318- bank_override = Pl_objp->phys_info.speed ; // In enemy's sights, not pointing at him, twirl away.
5319+ bank_override = 1.0f ; // In enemy's sights, not pointing at him, twirl away.
53195320 goto evade_ship_l1;
53205321 }
53215322 } else {
@@ -7662,7 +7663,7 @@ void ai_chase_attack(ai_info *aip, ship_info *sip, vec3d *predicted_enemy_pos, f
76627663
76637664 //SUSHI: Don't change bank while circle strafing or glide attacking
76647665 if (dist_to_enemy < 250.0f && dot_from_enemy > 0.7f && aip->submode != AIS_CHASE_CIRCLESTRAFE && aip->submode != AIS_CHASE_GLIDEATTACK) {
7665- bank_override = Pl_objp->phys_info.speed ;
7666+ bank_override = 1.0f ;
76667667 }
76677668
76687669 // If enemy more than 500 meters away, all ships flying there will tend to match bank.
@@ -7709,9 +7710,7 @@ void ai_chase_es(ai_info *aip)
77097710 tvec.xyz.y += frand();
77107711 }
77117712
7712- float bank_override = Pl_objp->phys_info.speed;
7713-
7714- ai_turn_towards_vector(&tvec, Pl_objp, nullptr, nullptr, bank_override, 0);
7713+ ai_turn_towards_vector(&tvec, Pl_objp, nullptr, nullptr, 1.0f, 0);
77157714 accelerate_ship(aip, 1.0f);
77167715}
77177716
@@ -7722,7 +7721,6 @@ void ai_chase_ga(ai_info *aip, ship_info *sip)
77227721{
77237722 // If not near end of this submode, evade squiggly. If near end, just fly straight for a bit
77247723 vec3d tvec;
7725- float bank_override;
77267724 vec3d vec_from_enemy;
77277725
77287726 if (En_objp != NULL) {
@@ -7735,9 +7733,7 @@ void ai_chase_ga(ai_info *aip, ship_info *sip)
77357733 vm_vec_scale_add2(&tvec, &vec_from_enemy, 300.0f);
77367734 vm_vec_add2(&tvec, &Pl_objp->pos);
77377735
7738- bank_override = Pl_objp->phys_info.speed;
7739-
7740- ai_turn_towards_vector(&tvec, Pl_objp, nullptr, nullptr, bank_override, 0);
7736+ ai_turn_towards_vector(&tvec, Pl_objp, nullptr, nullptr, 1.0f, 0);
77417737
77427738 accelerate_ship(aip, 2.0f);
77437739
0 commit comments