@@ -4229,15 +4229,13 @@ int get_enemy_team_range(object *my_objp, float range, int enemy_team_mask, vec3
42294229 if (count == 0) {
42304230 *min_vec = objp->pos;
42314231 *max_vec = objp->pos;
4232- count++;
4233- }
4234- else {
4232+ } else {
42354233 update_min_max(objp->pos.xyz.x, &min_vec->xyz.x, &max_vec->xyz.x);
42364234 update_min_max(objp->pos.xyz.y, &min_vec->xyz.y, &max_vec->xyz.y);
42374235 update_min_max(objp->pos.xyz.z, &min_vec->xyz.z, &max_vec->xyz.z);
42384236 }
4237+ count++;
42394238 }
4240-
42414239 }
42424240 }
42434241
@@ -4253,7 +4251,7 @@ void ai_safety_pick_spot(object *objp)
42534251 int objnum;
42544252 int enemy_team_mask;
42554253 vec3d min_vec, max_vec;
4256- vec3d vec_to_center , center;
4254+ vec3d fvec_from_center , center;
42574255 vec3d goal_pos;
42584256
42594257 objnum = OBJ_INDEX(objp);
@@ -4262,9 +4260,9 @@ void ai_safety_pick_spot(object *objp)
42624260
42634261 if (get_enemy_team_range(objp, 1000.0f, enemy_team_mask, &min_vec, &max_vec)) {
42644262 vm_vec_avg(¢er, &min_vec, &max_vec);
4265- vm_vec_normalized_dir(&vec_to_center , ¢er, & objp->pos);
4263+ vm_vec_normalized_dir(&fvec_from_center , &objp->pos, ¢er );
42664264
4267- vm_vec_scale_add(&goal_pos, ¢er, &vec_to_center , 2000.0f);
4265+ vm_vec_scale_add(&goal_pos, ¢er, &fvec_from_center , 2000.0f);
42684266 } else
42694267 vm_vec_scale_add(&goal_pos, &objp->pos, &objp->orient.vec.fvec, 100.0f);
42704268
@@ -4293,6 +4291,11 @@ float ai_safety_goto_spot(object *objp)
42934291 } else
42944292 set_accel_for_target_speed(objp, sip->max_speed * dot_val * (dist/200.0f + 0.2f));
42954293
4294+ if (The_mission.ai_profile->flags[AI::Profile_Flags::Fix_keep_safe_distance]) {
4295+ // hey, let's try actually aiming toward our goal!
4296+ turn_towards_point(objp, &aip->goal_point, nullptr, 0.0f);
4297+ }
4298+
42964299 return dist;
42974300}
42984301
0 commit comments