1 #ifndef SHIP_FLAGS_H 2 #define SHIP_FLAGS_H 3 4 #include "globalincs/flagset.h" 5 6 namespace Ship { 7 FLAG_LIST(Weapon_Flags)8 FLAG_LIST(Weapon_Flags){ 9 Beam_Free = 0, // if this is a beam weapon, its free to fire 10 Turret_Lock, // is this turret is free to fire or locked 11 Tagged_Only, // only fire if target is tagged 12 Trigger_Lock, // // indicates that the trigger is held down 13 14 NUM_VALUES 15 }; 16 FLAG_LIST(Subsystem_Flags)17 FLAG_LIST(Subsystem_Flags) { 18 Cargo_revealed = 0, 19 Untargetable, 20 No_SS_targeting, 21 Has_fired, // used by scripting to flag a turret as having been fired 22 FOV_Required, 23 FOV_edge_check, 24 No_replace, // prevents 'destroyed' submodel from being rendered if subsys is destroyed. 25 No_live_debris, // prevents subsystem from generating live debris 26 Vanished, // allows subsystem to be made to disappear without a trace (for swapping it for a true model for example. 27 Missiles_ignore_if_dead, // forces homing missiles to target hull if subsystem is dead before missile hits it. 28 Rotates, 29 Damage_as_hull, // Applies armor damage instead of subsystem damge. - FUBAR 30 No_aggregate, // exclude this subsystem from the aggregate subsystem-info tracking - Goober5000 31 Play_sound_for_player, // If this subsystem is a turret on a player ship, play firing sounds - The E 32 No_disappear, // prevents submodel from disappearing when subsys destroyed 33 Autorepair_if_disabled, // Allows the subsystem to repair itself even when disabled - MageKing17 34 No_autorepair_if_disabled, // Inversion of the above; allow a specific subsystem not to repair itself after being disabled if the ship has the "repair disabled subsystems" flag - MageKing17 35 Forced_target, // The turrets current target is being forced by SEXP, and won't let it go until it dies or is cleared by SEXP 36 Forced_subsys_target, // The turrets current subsystem target is being forced by SEXP, implies Forced_target 37 38 NUM_VALUES 39 }; 40 FLAG_LIST(System_Flags)41 FLAG_LIST(System_Flags) { 42 Alive = 0, // subsystem has active alive sound 43 Dead, // subsystem has active dead sound 44 Rotate, // subsystem has active rotation sound 45 Turret_rotation, // rotation sound to be scaled like turrets do 46 47 NUM_VALUES 48 }; 49 FLAG_LIST(Ship_Flags)50 FLAG_LIST(Ship_Flags) { 51 Ignore_count = 0, // ignore this ship when counting ship types for goals 52 Reinforcement, // this ship is a reinforcement ship 53 Escort, // this ship is an escort ship 54 No_arrival_music, // don't play arrival music when ship arrives 55 No_arrival_warp, // no arrival warp in effect 56 No_departure_warp, // no departure warp in effect 57 Kill_before_mission, 58 Dying, 59 Disabled, 60 Depart_warp, // ship is departing via warp-out 61 Depart_dockbay, // ship is departing via docking bay 62 Arriving_stage_1, // ship is arriving. In other words, doing warp in effect, stage 1 63 Arriving_stage_1_dock_follower, // "Arriving but Not the Dock Leader"; these guys need some warp stuff done but not all 64 Arriving_stage_2, // ship is arriving. In other words, doing warp in effect, stage 2 65 Arriving_stage_2_dock_follower, // "Arriving but Not the Dock Leader"; these guys need some warp stuff done but not all 66 Engines_on, // engines sound should play if set 67 Dock_leader, // Goober5000 - this guy is in charge of everybody he's docked to 68 Cargo_revealed, // ship's cargo is revealed to all friendly ships 69 From_player_wing, // set for ships that are members of any player starting wing 70 Primary_linked, // ships primary weapons are linked together 71 Secondary_dual_fire, // ship is firing two missiles from the current secondary bank 72 Warp_broken, // set when warp drive is not working, but is repairable 73 Warp_never, // set when ship can never warp 74 Trigger_down, // ship has its "trigger" held down 75 Ammo_count_recorded, // we've recorded the initial secondary weapon count (which is used to limit support ship rearming) 76 Hidden_from_sensors, // ship doesn't show up on sensors, blinks in/out on radar 77 Scannable, // ship is "scannable". Play scan effect and report as "Scanned" or "not scanned". 78 Warped_support, // set when this is a support ship which was warped in automatically 79 Exploded, // ship has exploded (needed for kill messages) 80 Ship_has_screamed, // ship has let out a death scream 81 Red_alert_store_status, // ship status should be stored/restored if red alert mission 82 Vaporize, // ship is vaporized by beam - alternative death sequence 83 Departure_ordered, // departure of this ship was ordered by player - Goober5000, similar to WF_DEPARTURE_ORDERED 84 Primitive_sensors, // Goober5000 - primitive sensor display 85 Friendly_stealth_invis, // Goober5000 - when stealth, don't appear on radar even if friendly 86 Stealth, // Goober5000 - is this particular ship stealth 87 Dont_collide_invis, // Goober5000 - is this particular ship don't-collide-invisible 88 No_subspace_drive, // Goober5000 - this ship has no subspace drive 89 Navpoint_carry, // Kazan - This ship autopilots with the player 90 Affected_by_gravity, // Goober5000 - ship affected by gravity points 91 Toggle_subsystem_scanning, // Goober5000 - switch whether subsystems are scanned 92 No_builtin_messages, // Karajorma - ship should not send built-in messages 93 Primaries_locked, // Karajorma - This ship can't fire primary weapons 94 Secondaries_locked, // Karajorma - This ship can't fire secondary weapons 95 Glowmaps_disabled, // taylor - to disable glow maps 96 No_death_scream, // Goober5000 - for WCS 97 Always_death_scream, // Goober5000 - for WCS 98 Navpoint_needslink, // Kazan - This ship requires "linking" for autopilot (when player ship gets within specified distance NAVPOINT_NEEDSLINK is replaced by NAVPOINT_CARRY) 99 Hide_ship_name, // Karajorma - Hides the ships name (like the -wcsaga command line used to but for any selected ship) 100 Afterburner_locked, // KeldorKatarn - This ship can't use its afterburners 101 Set_class_dynamically, // Karajorma - This ship should have its class assigned rather than simply read from the mission file 102 Lock_all_turrets_initially, // Karajorma - Lock all turrets on this ship at mission start or on arrival 103 Force_shields_on, 104 No_ets, // The E - This ship does not have an ETS 105 Cloaked, // The E - This ship will not be rendered 106 No_thrusters, // The E - Thrusters on this ship are not rendered. 107 Ship_locked, // Karajorma - Prevents the player from changing the ship class on loadout screen 108 Weapons_locked, // Karajorma - Prevents the player from changing the weapons on the ship on the loadout screen 109 Ship_selective_linking, // RSAXVC - Allow pilot to pick firing configuration 110 Scramble_messages, // Goober5000 - all messages sent from this ship appear scrambled 111 No_secondary_lockon, // zookeeper - secondary lock-on disabled 112 No_disabled_self_destruct, // Goober5000 - ship will not self-destruct after 90 seconds if engines or weapons destroyed (c.f. ai_maybe_self_destruct) 113 Rotators_locked, // The_E -- Rotating subobjects are locked in place 114 Draw_as_wireframe, // The_E -- Ship will be rendered in wireframe mode 115 Render_without_diffuse, // The_E -- Ship will be rendered without diffuse map (needed for the lab) 116 Render_without_glowmap, 117 Render_without_specmap, 118 Render_without_normalmap, 119 Render_without_heightmap, 120 Render_without_ambientmap, 121 Render_without_miscmap, 122 Render_without_reflectmap, 123 Render_full_detail, 124 Render_without_light, 125 Render_without_weapons, // The_E -- Skip weapon model rendering 126 Has_display_name, // Goober5000 127 Attempting_to_afterburn, // set and unset by afterburner_start and stop, used by afterburner_min_fuel_to_consume 128 129 NUM_VALUES 130 131 }; 132 FLAG_LIST(Exit_Flags)133 FLAG_LIST(Exit_Flags) { 134 Destroyed = 0, 135 Departed, 136 Cargo_known, 137 Player_deleted, 138 Been_tagged, 139 Red_alert_carry, 140 141 NUM_VALUES 142 }; 143 FLAG_LIST(Info_Flags)144 FLAG_LIST(Info_Flags) { 145 No_collide = 0, 146 Player_ship, 147 Default_player_ship, 148 Path_fixup, // when set, path verts have been set for this ship's model 149 Support, // this ship can perform repair/rearm functions 150 Afterburner, // this ship has afterburners 151 Ballistic_primaries, // this ship can equip ballistic primaries - Goober5000 152 Cargo, // is this ship a cargo type ship -- used for docking purposes 153 Fighter, // this ship is a fighter 154 Bomber, // this ship is a bomber 155 Cruiser, // this ship is a cruiser 156 Freighter, // this ship is a freighter 157 Capital, // this ship is a capital/installation ship 158 Transport, // this ship is a transport 159 Navbuoy, // AL 11-24-97: this is a navbuoy 160 Sentrygun, // AL 11-24-97: this is a navbuoy with turrets 161 Escapepod, // AL 12-09-97: escape pods that fire from big ships 162 No_ship_type, // made distinct to help trap errors 163 Ship_copy, // this ship is a copy of another ship in the table -- meaningful for scoring and possible other things 164 In_tech_database, // is ship type to be listed in the tech database? 165 In_tech_database_m, // is ship type to be listed in the tech database for multiplayer? 166 Stealth, // the ship has stealth capabilities 167 Supercap, // the ship is a supercap 168 Drydock, // the ship is a drydock 169 Ship_class_dont_collide_invis, // Don't collide with this ship's invisible polygons 170 Big_damage, // this ship is classified as a big damage ship 171 Has_awacs, // ship has an awacs subsystem 172 Corvette, // corvette class (currently this only means anything for briefing icons) 173 Gas_miner, // also just for briefing icons 174 Awacs, // ditto 175 Knossos_device, // this is the knossos device 176 No_fred, // not available in fred 177 Default_in_tech_database, // default in tech database - Goober5000 178 Default_in_tech_database_m, // ditto - Goober5000 179 Flash, // makes a flash when it explodes 180 Show_ship_model, // Show ship model even in first person view 181 Surface_shields, // _argv[-1], 16 Jan 2005: Enable surface shields for this ship. 182 Generate_hud_icon, // Enable generation of a HUD shield icon 183 Disable_weapon_damage_scaling, // WMC - Disable weapon scaling based on flags 184 Gun_convergence, // WMC - Gun convergence based on model weapon norms. 185 No_thruster_geo_noise, // Echelon9 - No thruster geometry noise. 186 Intrinsic_no_shields, // Chief - disables shields for this ship even without No Shields in mission. 187 No_primary_linking, // Chief - slated for 3.7 originally, but this looks pretty simple to implement. 188 No_pain_flash, // The E - disable red pain flash 189 Allow_landings, // SUSHI: Automatically set if any subsystems allow landings (as a shortcut) 190 No_ets, // The E - No ETS on this ship class 191 No_lighting, // Valathil - No lighting for this ship 192 Dyn_primary_linking, // RSAXVC - Dynamically generate weapon linking options 193 Auto_spread_shields, // zookeeper - auto spread shields 194 Draw_weapon_models, // the ship draws weapon models of any sort (used to be a boolean) 195 Model_point_shields, // zookeeper - uses model-defined shield points instead of quadrants 196 Subsys_repair_when_disabled, // MageKing17 - Subsystems auto-repair themselves even when disabled. 197 Dont_bank_when_turning, // Goober5000 198 Dont_clamp_max_velocity, // Goober5000 199 Instantaneous_acceleration, // Goober5000 200 Has_display_name, // Goober5000 201 Large_ship_deathroll, // Asteroth - big ships dont normally deathroll, this makes them do it! 202 No_impact_debris, // wookieejedi - Don't spawn the small debris on impact 203 204 NUM_VALUES 205 }; 206 FLAG_LIST(Aiming_Flags)207 FLAG_LIST(Aiming_Flags) { 208 Autoaim = 0, // has autoaim 209 Auto_convergence, // has automatic convergence 210 Std_convergence, // has standard - ie. non-automatic - convergence 211 Autoaim_convergence, // has autoaim with convergence 212 Convergence_offset, // marks that convergence has offset value 213 214 NUM_VALUES 215 }; 216 FLAG_LIST(Type_Info_Flags)217 FLAG_LIST(Type_Info_Flags) { 218 Counts_for_alone, 219 Praise_destruction, 220 Hotkey_on_list, 221 Target_as_threat, 222 Show_attack_direction, 223 No_class_display, 224 Scannable, 225 Warp_pushes, 226 Warp_pushable, 227 Turret_tgt_ship_tgt, 228 Beams_easily_hit, 229 No_huge_impact_eff, 230 AI_accept_player_orders, 231 AI_auto_attacks, 232 AI_attempt_broadside, 233 AI_guards_attack, 234 AI_turrets_attack, 235 AI_can_form_wing, 236 AI_protected_on_cripple, 237 Targeted_by_huge_Ignored_by_small_only, 238 239 NUM_VALUES 240 }; 241 FLAG_LIST(Thruster_Flags)242 FLAG_LIST(Thruster_Flags) { 243 Bank_right, 244 Bank_left, 245 Pitch_up, 246 Pitch_down, 247 Roll_right, 248 Roll_left, 249 Slide_right, 250 Slide_left, 251 Slide_up, 252 Slide_down, 253 Forward, 254 Reverse, 255 256 NUM_VALUES 257 }; 258 259 260 // Not all wing flags are parseable or saveable in mission files. Right now, the only ones which can be set by mission designers are: 261 // ignore_count, reinforcement, no_arrival_music, no_arrival_message, no_arrival_warp, no_departure_warp, no_dynamic and nav_carry_status 262 // Should that change, bump this variable and make sure to make the necessary changes to parse_wing (in missionparse) 263 #define PARSEABLE_WING_FLAGS 8 264 FLAG_LIST(Wing_Flags)265 FLAG_LIST(Wing_Flags) { 266 Gone, // all ships were either destroyed or departed 267 Departing, // wing's departure cue turned true 268 Ignore_count, // ignore all ships in this wing for goal counting purposes. 269 Reinforcement, // is this wing a reinforcement wing 270 Reset_reinforcement, // needed when we need to reset the wing's reinforcement flag (after calling it in) 271 No_arrival_music, // don't play arrival music when wing arrives 272 Expanded, // wing expanded in hotkey select screen 273 No_arrival_message, // don't play any arrival message 274 No_arrival_warp, // don't play warp effect for any arriving ships in this wing. 275 No_departure_warp, // don't play warp effect for any departing ships in this wing. 276 No_dynamic, // members of this wing relentlessly pursue their ai goals 277 Departure_ordered, // departure of this wing was ordered by player 278 Never_existed, // this wing never existed because something prevented it from being created (like its mother ship being destroyed) 279 Nav_carry, // Kazan - Wing has nav-carry-status 280 281 NUM_VALUES 282 }; 283 FLAG_LIST(Subsys_Sound_Flags)284 FLAG_LIST(Subsys_Sound_Flags) { 285 Alive, 286 Dead, 287 Rotate, 288 Turret_rotation, 289 290 NUM_VALUES 291 }; 292 FLAG_LIST(Awacs_Warning_Flags)293 FLAG_LIST(Awacs_Warning_Flags) { 294 Warn_25, 295 Warn_75, 296 297 NUM_VALUES 298 }; 299 } 300 #endif 301