mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-07 08:15:59 -10:00
2052dcaeb066d7d9d76abebd5bae48e1be701789
Several ai_info fields remember which order set them up (enemy_wing, guard_objnum/signature/wingnum) or which mode a dynamic goal interrupted (previous_mode, resume_goal_time), but nothing cleared them when a new order took over. A ship that once guarded a wing would be yanked back into AIM_GUARD whenever a wingmate died; a stale previous_mode of AIM_GUARD could make a former guard abandon a counterattack; a stale enemy_wing biased every find_enemy() toward a long-ago target; and a resume_goal_time left over from a dynamic chase suppressed target acquisition for up to 20 seconds into the next order. Add ai_reset_order_state(), called when ai_process_mission_orders() takes up a goal and when ai_do_default_behavior() runs. Each order's own setup repopulates the fields it needs. enemy_wing is reset under either $fix stale ai order state or $fix ai target recovery, since it affects target selection; the rest only under the new flag. maybe_set_dynamic_chase() wrote aip->mode into previous_submode, a retail typo that left previous_mode untracked for dynamic chases. Under the flag, save both fields properly, but not when a dynamic goal is already in progress, so a nested interruption does not clobber the mode to return to. Apply the same guard to the strafe/chase transitions in aibig.cpp. Co-Authored-By: Claude Fable 5.1 <[email protected]>
FreeSpace2 Source Code Project
Building
Before you do anything, make sure you have updated your git submodules, either by running git submodule update --init --recursive or by cloning the repository with the --recursive flag.
The main instructions for building can be found at our github wiki, on the Building page.
Releases
1
Release release_26_2_0
Latest
Languages
C++
75.7%
C
22%
CMake
1%
HTML
0.5%
Objective-C++
0.3%
Other
0.2%