1 #ifndef AI_FLAGS_H
2 #define AI_FLAGS_H
3 
4 #include "globalincs/flagset.h"
5 
6 namespace AI {
FLAG_LIST(AI_Flags)7 	FLAG_LIST(AI_Flags) {
8 		Formation_wing,				//	Fly in formation as part of wing. Also used when flying waypoints.
9 		Awaiting_repair,			//	Awaiting a repair ship.
10 		Being_repaired,				//	Currently docked with repair ship.
11 		Repairing,					//	Repairing a ship (or going to repair a ship)
12 		Seek_lock,					//	set if should focus on gaining aspect lock, not hitting with lasers
13 		Formation_object,			//	Fly in formation off a specific object.
14 		Temporary_ignore,			//	Means current ignore_objnum is only temporary, not an order from the player.
15 		Use_exit_path,				//  Used by path code, to flag path as an exit path
16 		Use_static_path,			//  Used by path code, use fixed path, don't try to recreate
17 		Target_collision,			//	Collided with aip->target_objnum last frame.  Avoid that ship for half a second or so.
18 		Unload_secondaries,			//	Fire secondaries as fast as possible!
19 		On_subsys_path,				//  Current path leads to a subsystem
20 		Avoid_shockwave_ship,		//	Avoid an existing shockwave from a ship.
21 		Avoid_shockwave_weapon,		//	Avoid an expected shockwave from a weapon.  shockwave_object field contains object index.
22 		Avoid_shockwave_started,	//	Already started avoiding shockwave, don't keep deciding whether to avoid.
23 		Attack_slowly,				//	Move slowly while attacking.
24 		Repair_obstructed,			//	Ship wants to be repaired, but path is obstructed.
25 		Kamikaze,					//	Crash into target
26 		No_dynamic,					//	Not allowed to get dynamic goals
27 		Avoiding_small_ship,		//	Avoiding a player ship.
28 		Avoiding_big_ship,			//	Avoiding a large ship.
29 		Big_ship_collide_recover_1,	//	Collided into a big ship.  Recovering by flying away.
30 		Big_ship_collide_recover_2,	//	Collided into a big ship.  Fly towards big ship sphere perimeter.
31 		Stealth_pursuit,			//  AI is trying to fight stealth ship
32 		Unload_primaries,			//	Fire primaries as fast as possible!
33 		Trying_unsuccessfully_to_warp,	// Trying to warp, but can't warp at the moment
34 		Free_afterburner_use,		// Use afterburners while following waypoints or flying towards objects
35 
36 		NUM_VALUES
37 	};
38 
FLAG_LIST(Goal_Flags)39 	FLAG_LIST(Goal_Flags) {
40 		Docker_index_valid,	// when set, index field for docker is valid
41 		Dockee_index_valid,	// when set, index field for dockee is valid
42 		Goal_on_hold,		// when set, this goal cannot currently be satisfied, although it could be in the future
43 		Subsys_needs_fixup,	// when set, the subsystem index (for a destroy subsystem goal) is invalid and must be gotten from the subsys name stored in docker.name field!!
44 		Goal_override,		// paired with AIG_TYPE_DYNAMIC to mean this goal overrides any other goal
45 		Purge,				// purge this goal next time we process
46 		Goals_purged,		// this goal has already caused other goals to get purged
47 		Depart_sound_played,// Goober5000 - replacement for AL's hack ;)
48 		Target_own_team,
49 
50 		NUM_VALUES
51 	};
52 
FLAG_LIST(Maneuver_Override_Flags)53 	FLAG_LIST(Maneuver_Override_Flags) {
54 		Full_rot,	//	full sexp control over pitch/bank/heading rotation
55 		Roll,		//	Sexp forced roll maneuver
56 		Pitch,		//	Sexp forced pitch change
57 		Heading,	//	Sexp forced heading change
58 		Full_lat,	//  full control over up/side/forward movement
59 		Up,			//	Sexp forced vertical movement
60 		Sideways,	//	Sexp forced horizontal movement
61 		Forward,	//	Sexp forced forward movement
62 
63 		Dont_bank_when_turning,		// maps to CIF_DONT_BANK_WHEN_TURNING
64 		Dont_clamp_max_velocity,	// maps to CIF_DONT_CLAMP_MAX_VELOCITY
65 		Instantaneous_acceleration,	// maps to CIF_INSTANTANEOUS_ACCELERATION
66 		Lateral_never_expire,       // don't clear the lateral maneuver when the timestamp is up
67 		Rotational_never_expire,    // don't clear the rotational maneuver when the timestamp is up
68 		Dont_override_old_maneuvers,// doesn't clear any previous maneuvers
69 
70 		NUM_VALUES
71 	};
72 
FLAG_LIST(Profile_Flags)73 	FLAG_LIST(Profile_Flags) {
74         Advanced_turret_fov_edge_checks,
75         Ai_aims_from_ship_center,
76         Ai_can_slow_down_attacking_big_ships,
77         Ai_guards_specific_ship_in_wing,
78         All_ships_manage_shields,
79         Allow_multi_event_scoring,
80         Allow_primary_link_at_start,
81         Allow_rapid_secondary_dumbfire,
82         Allow_turrets_target_weapons_freely,
83         Allow_vertical_dodge,
84         Aspect_invulnerability_fix,
85         Aspect_lock_countermeasure,
86         Assist_scoring_scales_with_damage,
87         Beams_damage_weapons,
88         Big_ships_can_attack_beam_turrets_on_untargeted_ships,
89 		Check_comms_for_non_player_ships,
90         Disable_linked_fire_penalty,
91         Disable_player_secondary_doublefire,
92         Disable_ai_secondary_doublefire,
93         Disable_weapon_damage_scaling,
94         Dont_insert_random_turret_fire_delay,
95         Fix_ai_class_bug,
96         Fix_ai_path_order_bug,
97         Fix_heat_seeker_stealth_bug,
98         Fix_linked_primary_bug,
99 		Fix_ramming_stationary_targets_bug,
100         Force_beam_turret_fov,
101 		Free_afterburner_use,
102         Glide_decay_requires_thrust,
103         Hack_improve_non_homing_swarm_turret_fire_accuracy,
104         Huge_turret_weapons_ignore_bombs,
105         Include_beams_in_stat_calcs,
106         Kill_scoring_scales_with_damage,
107         Multi_allow_empty_primaries,
108         Multi_allow_empty_secondaries,
109         Navigation_subsys_governs_warp,
110         No_min_dock_speed_cap,
111         No_special_player_avoid,
112         No_warp_camera,
113         Perform_fewer_scream_checks,
114         Player_weapon_scale_fix,
115         Prevent_targeting_bombs_beyond_range,
116         Require_turret_to_have_target_in_fov,
117         Shockwaves_damage_small_ship_subsystems,
118         Smart_afterburner_management,
119         Smart_primary_weapon_selection,
120         Smart_secondary_weapon_selection,
121         Smart_shield_management,
122         Smart_subsystem_targeting_for_turrets,
123         Strict_turret_tagged_only_targeting,
124 		Support_dont_add_primaries, //Prevents support ship from equipping new primary as requested in http://scp.indiegames.us/mantis/view.php?id=3198
125         Turrets_ignore_target_radius,
126         Use_actual_primary_range,
127         Use_subsystem_path_point_radii,
128         Use_additive_weapon_velocity,
129         Use_newtonian_dampening,
130         Use_only_single_fov_for_turrets,
131         No_turning_directional_bias,
132 		Use_axial_turnrate_differences,
133 		all_nonshielded_ships_can_manage_ets,
134 		fightercraft_nonshielded_ships_can_manage_ets,
135 		Better_collision_avoidance,
136 		Require_exact_los,
137 		Improved_missile_avoidance,
138 		Friendlies_use_countermeasure_firechance,
139 		Improved_subsystem_attack_pathing,
140 		Fixed_ship_weapon_collision,
141 		No_shield_damage_from_ship_collisions,
142 		Reset_last_hit_target_time_for_player_hits,
143 
144 		NUM_VALUES
145 	};
146 }
147 
148 #endif