Skip to content

Commit d9cfd1f

Browse files
committed
Fix boolean checks that determine the which aiming style to use
1 parent 6fdaf87 commit d9cfd1f

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

code/ship/ship.cpp

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12301,8 +12301,13 @@ bool in_autoaim_fov(ship *shipp, int bank_to_fire, object *obj)
1230112301
int weapon_idx = swp->primary_bank_weapons[bank_to_fire];
1230212302
weapon_info* winfo_p = &Weapon_info[weapon_idx];
1230312303

12304-
has_converging_autoaim = ((sip->aiming_flags[Object::Aiming_Flags::Autoaim_convergence] || winfo_p->aiming_flags[Object::Aiming_Flags::Autoaim_convergence] || (The_mission.ai_profile->player_autoaim_fov[Game_skill_level] > 0.0f && !( Game_mode & GM_MULTIPLAYER ))) && aip->target_objnum != -1);
12305-
has_autoaim = ((has_converging_autoaim || (sip->aiming_flags[Object::Aiming_Flags::Autoaim]) || winfo_p->aiming_flags[Object::Aiming_Flags::Autoaim] || (sip->bank_autoaim_fov[bank_to_fire] > 0.0f)) && aip->target_objnum != -1);
12304+
// First check our ship/weapon flags
12305+
const bool autoaim_flagged = ((sip->aiming_flags[Object::Aiming_Flags::Autoaim]) || (winfo_p->aiming_flags[Object::Aiming_Flags::Autoaim]));
12306+
const bool autoaim_convergence_flagged = ((sip->aiming_flags[Object::Aiming_Flags::Autoaim_convergence]) || (winfo_p->aiming_flags[Object::Aiming_Flags::Autoaim_convergence]));
12307+
12308+
// Now check that we have a target and an FOV value
12309+
has_converging_autoaim = ((autoaim_convergence_flagged || (The_mission.ai_profile->player_autoaim_fov[Game_skill_level] > 0.0f && !( Game_mode & GM_MULTIPLAYER ))) && aip->target_objnum != -1);
12310+
has_autoaim = ((autoaim_flagged || has_converging_autoaim || (sip->bank_autoaim_fov[bank_to_fire] > 0.0f)) && aip->target_objnum != -1);
1230612311

1230712312
if (!has_autoaim) {
1230812313
return false;
@@ -12458,9 +12463,17 @@ int ship_fire_primary(object * obj, int force, bool rollback_shot)
1245812463

1245912464
// lets start gun convergence / autoaim code from here - Wanderer
1246012465
// in order to do this per weapon, this needs to be moved here from above -Mjn
12461-
has_converging_autoaim = ((sip->aiming_flags[Object::Aiming_Flags::Autoaim_convergence] || winfo_p->aiming_flags[Object::Aiming_Flags::Autoaim_convergence] || (The_mission.ai_profile->player_autoaim_fov[Game_skill_level] > 0.0f && !( Game_mode & GM_MULTIPLAYER ))) && aip->target_objnum != -1);
12462-
has_autoaim = ((has_converging_autoaim || (sip->aiming_flags[Object::Aiming_Flags::Autoaim]) || winfo_p->aiming_flags[Object::Aiming_Flags::Autoaim] || (sip->bank_autoaim_fov[bank_to_fire] > 0.0f)) && aip->target_objnum != -1);
12463-
needs_target_pos = ((has_autoaim || has_converging_autoaim) && aip->target_objnum != -1); // This change needs some scrutiny but it seems right?
12466+
12467+
// This logic is getting a little unweildy.. so let's break it down slightly for readability.
12468+
// First check our ship/weapon flags
12469+
const bool autoaim_flagged = ((sip->aiming_flags[Object::Aiming_Flags::Autoaim]) || (winfo_p->aiming_flags[Object::Aiming_Flags::Autoaim]));
12470+
const bool autoaim_convergence_flagged = ((sip->aiming_flags[Object::Aiming_Flags::Autoaim_convergence]) || (winfo_p->aiming_flags[Object::Aiming_Flags::Autoaim_convergence]));
12471+
const bool auto_convergence_flagged = ((sip->aiming_flags[Object::Aiming_Flags::Auto_convergence]) || (winfo_p->aiming_flags[Object::Aiming_Flags::Auto_convergence]));
12472+
12473+
// Now add in other checks like difficulty and game mode as appropriate. Also make sure we have a target and an FOV if necessary.
12474+
has_converging_autoaim = ((autoaim_convergence_flagged || (The_mission.ai_profile->player_autoaim_fov[Game_skill_level] > 0.0f && !( Game_mode & GM_MULTIPLAYER ))) && aip->target_objnum != -1);
12475+
has_autoaim = ((autoaim_flagged || has_converging_autoaim || (sip->bank_autoaim_fov[bank_to_fire] > 0.0f)) && aip->target_objnum != -1);
12476+
needs_target_pos = ((auto_convergence_flagged || has_autoaim) && aip->target_objnum != -1);
1246412477

1246512478
if (needs_target_pos) {
1246612479
if (has_autoaim) {
@@ -12925,11 +12938,10 @@ int ship_fire_primary(object * obj, int force, bool rollback_shot)
1292512938
V SIF convergence
1292612939
no convergence or autoaim
1292712940
*/
12928-
const bool do_convergence = (sip->aiming_flags[Object::Aiming_Flags::Std_convergence]) || (winfo_p->aiming_flags[Object::Aiming_Flags::Std_convergence]);
12941+
const bool std_convergence_flagged = (sip->aiming_flags[Object::Aiming_Flags::Std_convergence]) || (winfo_p->aiming_flags[Object::Aiming_Flags::Std_convergence]);
1292912942

1293012943
//Must have the auto convergence flag and a valid target
12931-
const bool do_auto_convergence = (aip->target_objnum != -1) &&
12932-
((sip->aiming_flags[Object::Aiming_Flags::Auto_convergence]) || (winfo_p->aiming_flags[Object::Aiming_Flags::Auto_convergence]));
12944+
const bool do_auto_convergence = (aip->target_objnum != -1) && auto_convergence_flagged;
1293312945

1293412946
if (has_autoaim && in_automatic_aim_fov) {
1293512947
vec3d firing_vec;
@@ -12943,7 +12955,7 @@ int ship_fire_primary(object * obj, int force, bool rollback_shot)
1294312955
}
1294412956

1294512957
vm_vector_2_matrix(&firing_orient, &firing_vec, NULL, NULL);
12946-
} else if (do_convergence || do_auto_convergence) {
12958+
} else if (std_convergence_flagged || do_auto_convergence) {
1294712959
// std & auto convergence
1294812960
vec3d target_vec, firing_vec, convergence_offset;
1294912961

0 commit comments

Comments
 (0)