mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-09 13:01:29 -10:00
* add wing display names Adds display name capability for wings, matching the pattern and infrastructure of display names for ships. As in #7234, wing display names take precedence over ship display names, if both are provided; because if ship display names took precedence, a ship would have the same display name in every wave. All the relevant display locations are handled, including the HUD, escort list, message box, and mission log. Lua API support is provided as well. Adds full support for both FRED and QtFRED, including the always-save-display-names setting. Addresses #7189 and the last request from #1730. * add help text from #7234
317 lines
16 KiB
C++
317 lines
16 KiB
C++
#ifndef SHIP_FLAGS_H
|
|
#define SHIP_FLAGS_H
|
|
|
|
#include "globalincs/flagset.h"
|
|
|
|
namespace Ship {
|
|
|
|
FLAG_LIST(Weapon_Flags){
|
|
Beam_Free = 0, // if this is a beam weapon, its free to fire
|
|
Turret_Lock, // is this turret is free to fire or locked
|
|
Tagged_Only, // only fire if target is tagged
|
|
Secondary_trigger_down, // indicates that the trigger is held down, used for multilock hold-to-lock type missiles
|
|
Primary_trigger_down, // indicates that the trigger is held down
|
|
|
|
NUM_VALUES
|
|
};
|
|
|
|
FLAG_LIST(Subsystem_Flags) {
|
|
Cargo_revealed = 0,
|
|
Untargetable,
|
|
No_SS_targeting,
|
|
Has_fired, // used by scripting to flag a turret as having been fired
|
|
FOV_Required,
|
|
FOV_edge_check,
|
|
No_replace, // prevents 'destroyed' submodel from being rendered if subsys is destroyed.
|
|
No_live_debris, // prevents subsystem from generating live debris
|
|
Vanished, // allows subsystem to be made to disappear without a trace (for swapping it for a true model for example.
|
|
Missiles_ignore_if_dead, // forces homing missiles to target hull if subsystem is dead before missile hits it.
|
|
Rotates,
|
|
Translates,
|
|
Damage_as_hull, // Applies armor damage instead of subsystem damge. - FUBAR
|
|
No_aggregate, // exclude this subsystem from the aggregate subsystem-info tracking - Goober5000
|
|
Play_sound_for_player, // If this subsystem is a turret on a player ship, play firing sounds - The E
|
|
No_disappear, // prevents submodel from disappearing when subsys destroyed
|
|
Autorepair_if_disabled, // Allows the subsystem to repair itself even when disabled - MageKing17
|
|
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
|
|
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
|
|
Forced_subsys_target, // The turrets current subsystem target is being forced by SEXP, implies Forced_target
|
|
|
|
NUM_VALUES
|
|
};
|
|
|
|
FLAG_LIST(System_Flags) {
|
|
Alive = 0, // subsystem has active alive sound
|
|
Dead, // subsystem has active dead sound
|
|
Rotate, // subsystem has active rotation sound
|
|
Turret_rotation, // rotation sound to be scaled like turrets do
|
|
|
|
NUM_VALUES
|
|
};
|
|
|
|
FLAG_LIST(Ship_Flags) {
|
|
Ignore_count = 0, // ignore this ship when counting ship types for goals
|
|
Reinforcement, // this ship is a reinforcement ship
|
|
Escort, // this ship is an escort ship
|
|
No_arrival_music, // don't play arrival music when ship arrives
|
|
No_arrival_warp, // no arrival warp in effect
|
|
No_departure_warp, // no departure warp in effect
|
|
Kill_before_mission,
|
|
Dying,
|
|
Disabled,
|
|
Depart_warp, // ship is departing via warp-out
|
|
Depart_dockbay, // ship is departing via docking bay
|
|
Arriving_stage_1, // ship is arriving. In other words, doing warp in effect, stage 1
|
|
Arriving_stage_1_dock_follower, // "Arriving but Not the Dock Leader"; these guys need some warp stuff done but not all
|
|
Arriving_stage_2, // ship is arriving. In other words, doing warp in effect, stage 2
|
|
Arriving_stage_2_dock_follower, // "Arriving but Not the Dock Leader"; these guys need some warp stuff done but not all
|
|
Engine_sound_on, // engines sound should play if set
|
|
Dock_leader, // Goober5000 - this guy is in charge of everybody he's docked to
|
|
Cargo_revealed, // ship's cargo is revealed to all friendly ships
|
|
From_player_wing, // set for ships that are members of any player starting wing
|
|
Primary_linked, // ships primary weapons are linked together
|
|
Secondary_dual_fire, // ship is firing two missiles from the current secondary bank
|
|
Warp_broken, // set when warp drive is not working, but is repairable
|
|
Warp_never, // set when ship can never warp
|
|
Trigger_down, // ship has its "trigger" held down, PLAYER ONLY
|
|
Ammo_count_recorded, // we've recorded the initial secondary weapon count (which is used to limit support ship rearming)
|
|
Hidden_from_sensors, // ship doesn't show up on sensors, blinks in/out on radar
|
|
Scannable, // ship is "scannable". Play scan effect and report as "Scanned" or "not scanned".
|
|
Warped_support, // set when this is a support ship which was warped in automatically
|
|
Exploded, // ship has exploded (needed for kill messages)
|
|
Ship_has_screamed, // ship has let out a death scream
|
|
Red_alert_store_status, // ship status should be stored/restored if red alert mission
|
|
Vaporize, // ship is vaporized by beam - alternative death sequence
|
|
Departure_ordered, // departure of this ship was ordered by player - Goober5000, similar to WF_DEPARTURE_ORDERED
|
|
Primitive_sensors, // Goober5000 - primitive sensor display
|
|
Friendly_stealth_invis, // Goober5000 - when stealth, don't appear on radar even if friendly
|
|
Stealth, // Goober5000 - is this particular ship stealth
|
|
Dont_collide_invis, // Goober5000 - is this particular ship don't-collide-invisible
|
|
No_subspace_drive, // Goober5000 - this ship has no subspace drive
|
|
Navpoint_carry, // Kazan - This ship autopilots with the player
|
|
Affected_by_gravity, // Goober5000 - ship affected by gravity points
|
|
Toggle_subsystem_scanning, // Goober5000 - switch whether subsystems are scanned
|
|
No_builtin_messages, // Karajorma - ship should not send built-in messages
|
|
Primaries_locked, // Karajorma - This ship can't fire primary weapons
|
|
Secondaries_locked, // Karajorma - This ship can't fire secondary weapons
|
|
Glowmaps_disabled, // taylor - to disable glow maps
|
|
No_death_scream, // Goober5000 - for WCS
|
|
Always_death_scream, // Goober5000 - for WCS
|
|
Navpoint_needslink, // Kazan - This ship requires "linking" for autopilot (when player ship gets within specified distance NAVPOINT_NEEDSLINK is replaced by NAVPOINT_CARRY)
|
|
Hide_ship_name, // Karajorma - Hides the ships name (like the -wcsaga command line used to but for any selected ship)
|
|
Afterburner_locked, // KeldorKatarn - This ship can't use its afterburners
|
|
Set_class_dynamically, // Karajorma - This ship should have its class assigned rather than simply read from the mission file
|
|
Lock_all_turrets_initially, // Karajorma - Lock all turrets on this ship at mission start or on arrival
|
|
Force_shields_on,
|
|
No_ets, // The E - This ship does not have an ETS
|
|
Cloaked, // The E - This ship will not be rendered
|
|
No_thrusters, // The E - Thrusters on this ship are not rendered.
|
|
Ship_locked, // Karajorma - Prevents the player from changing the ship class on loadout screen
|
|
Weapons_locked, // Karajorma - Prevents the player from changing the weapons on the ship on the loadout screen
|
|
Scramble_messages, // Goober5000 - all messages sent from or received by this ship appear scrambled
|
|
EMP_doesnt_scramble_messages, // Goober5000 - when EMP is active, messages will not have the scramble effect
|
|
No_secondary_lockon, // zookeeper - secondary lock-on disabled
|
|
No_disabled_self_destruct, // Goober5000 - ship will not self-destruct after 90 seconds if engines or weapons destroyed (c.f. ai_maybe_self_destruct)
|
|
Subsystem_movement_locked, // The_E -- Rotating subsystems are locked in place.
|
|
Draw_as_wireframe, // The_E -- Ship will be rendered in wireframe mode
|
|
Render_without_diffuse, // The_E -- Ship will be rendered without diffuse map (needed for the lab)
|
|
Render_without_glowmap,
|
|
Render_without_specmap,
|
|
Render_without_normalmap,
|
|
Render_without_heightmap,
|
|
Render_without_ambientmap,
|
|
Render_without_miscmap,
|
|
Render_without_reflectmap,
|
|
Render_full_detail,
|
|
Render_without_light,
|
|
Render_without_weapons, // The_E -- Skip weapon model rendering
|
|
Render_with_alpha_mult,
|
|
Has_display_name, // Goober5000
|
|
Attempting_to_afterburn, // set and unset by afterburner_start and stop, used by afterburner_min_fuel_to_consume
|
|
Hide_mission_log, // Goober5000 - mission log events generated for this ship will not be viewable
|
|
No_passive_lightning, // Asteroth - disables ship passive lightning
|
|
Same_arrival_warp_when_docked, // Goober5000
|
|
Same_departure_warp_when_docked, // Goober5000
|
|
Fail_sound_locked_primary, // Kiloku -- Play the firing fail sound when the weapon is locked.
|
|
Fail_sound_locked_secondary, // Kiloku -- Play the firing fail sound when the weapon is locked.
|
|
Subsystem_cache_valid, // Goober5000 - whether the subsystem list index caches can be used
|
|
Aspect_immune, // Kiloku -- Ship cannot be targeted by Aspect Seekers.
|
|
Cannot_perform_scan_hide_cargo, // Goober5000 - ship cannot scan other ships, and cargo will not be shown on the HUD
|
|
Cannot_perform_scan_show_cargo, // Goober5000 - ship cannot scan other ships, but cargo will be shown on the HUD
|
|
No_targeting_limits, //MjnMixael -- Ship is always targetable regardless of AWACS or targeting range limits
|
|
Maneuver_despite_engines, // Goober5000 - ship can move even when engines are disabled or disrupted
|
|
Force_primary_unlinking, // plieblang - turned on when the ship is under good-primary-time
|
|
No_scanned_cargo, //MjnMixael -- The cargo will never be revealed, instead always returning "Scanned" or "Not Scanned"
|
|
No_insignias, // Cyborg -- do not render insignias, even when one is defined for them.
|
|
|
|
NUM_VALUES
|
|
|
|
};
|
|
|
|
FLAG_LIST(Exit_Flags) {
|
|
Destroyed = 0,
|
|
Departed,
|
|
Cargo_known,
|
|
Player_deleted,
|
|
Been_tagged,
|
|
Red_alert_carry,
|
|
From_player_wing,
|
|
|
|
NUM_VALUES
|
|
};
|
|
|
|
FLAG_LIST(Info_Flags) {
|
|
No_collide = 0,
|
|
Player_ship,
|
|
Default_player_ship,
|
|
Path_fixup, // when set, path verts have been set for this ship's model
|
|
Support, // this ship can perform repair/rearm functions
|
|
Afterburner, // this ship has afterburners
|
|
Ballistic_primaries, // this ship can equip ballistic primaries - Goober5000
|
|
Cargo, // is this ship a cargo type ship -- used for docking purposes
|
|
Fighter, // this ship is a fighter
|
|
Bomber, // this ship is a bomber
|
|
Cruiser, // this ship is a cruiser
|
|
Freighter, // this ship is a freighter
|
|
Capital, // this ship is a capital/installation ship
|
|
Transport, // this ship is a transport
|
|
Navbuoy, // AL 11-24-97: this is a navbuoy
|
|
Sentrygun, // AL 11-24-97: this is a navbuoy with turrets
|
|
Escapepod, // AL 12-09-97: escape pods that fire from big ships
|
|
No_ship_type, // made distinct to help trap errors
|
|
Ship_copy, // this ship is a copy of another ship in the table -- meaningful for scoring and possible other things
|
|
In_tech_database, // is ship type to be listed in the tech database?
|
|
In_tech_database_m, // is ship type to be listed in the tech database for multiplayer?
|
|
Stealth, // the ship has stealth capabilities
|
|
Supercap, // the ship is a supercap
|
|
Drydock, // the ship is a drydock
|
|
Ship_class_dont_collide_invis, // Don't collide with this ship's invisible polygons
|
|
Big_damage, // this ship is classified as a big damage ship
|
|
Has_awacs, // ship has an awacs subsystem
|
|
Corvette, // corvette class (currently this only means anything for briefing icons)
|
|
Gas_miner, // also just for briefing icons
|
|
Awacs, // ditto
|
|
Knossos_device, // this is the knossos device
|
|
No_fred, // not available in fred
|
|
Default_in_tech_database, // this entry's default tech database status, as specified in ships.tbl; used when the tech db is "reset to default" - Goober5000
|
|
Default_in_tech_database_m, // ditto for multiplayer - Goober5000
|
|
Flash, // makes a flash when it explodes
|
|
Show_ship_model, // Show ship model even in first person view
|
|
Surface_shields, // _argv[-1], 16 Jan 2005: Enable surface shields for this ship.
|
|
Generate_hud_icon, // Enable generation of a HUD shield icon
|
|
Disable_weapon_damage_scaling, // WMC - Disable weapon scaling based on flags
|
|
Gun_convergence, // WMC - Gun convergence based on model weapon norms.
|
|
No_thruster_geo_noise, // Echelon9 - No thruster geometry noise.
|
|
Intrinsic_no_shields, // Chief - disables shields for this ship even without No Shields in mission.
|
|
No_primary_linking, // Chief - slated for 3.7 originally, but this looks pretty simple to implement.
|
|
No_pain_flash, // The E - disable red pain flash
|
|
Allow_landings, // SUSHI: Automatically set if any subsystems allow landings (as a shortcut)
|
|
No_ets, // The E - No ETS on this ship class
|
|
No_lighting, // Valathil - No lighting for this ship
|
|
Dyn_primary_linking, // RSAXVC - Dynamically generate weapon linking options
|
|
Auto_spread_shields, // zookeeper - auto spread shields
|
|
Draw_weapon_models, // the ship draws weapon models of any sort (used to be a boolean)
|
|
Model_point_shields, // zookeeper - uses model-defined shield points instead of quadrants
|
|
Subsys_repair_when_disabled, // MageKing17 - Subsystems auto-repair themselves even when disabled.
|
|
Dont_bank_when_turning, // Goober5000
|
|
Dont_clamp_max_velocity, // Goober5000
|
|
Instantaneous_acceleration, // Goober5000
|
|
Has_display_name, // Goober5000
|
|
Large_ship_deathroll, // Asteroth - big ships dont normally deathroll, this makes them do it!
|
|
Disable_all_generic_impact_debris, // wookieejedi - Don't spawn debris on impact
|
|
Disable_all_generic_explosion_debris, // wookieejedi - Don't spawn debris on explosion
|
|
|
|
NUM_VALUES
|
|
};
|
|
|
|
FLAG_LIST(Type_Info_Flags) {
|
|
Counts_for_alone,
|
|
Praise_destruction,
|
|
Hotkey_on_list,
|
|
Target_as_threat,
|
|
Show_attack_direction,
|
|
No_class_display,
|
|
Targetable_as_unscanned,
|
|
Scannable_by_default,
|
|
Warp_pushes,
|
|
Warp_pushable,
|
|
Turret_tgt_ship_tgt,
|
|
Beams_easily_hit,
|
|
No_huge_impact_eff,
|
|
AI_accept_player_orders,
|
|
AI_auto_attacks,
|
|
AI_attempt_broadside,
|
|
AI_guards_attack,
|
|
AI_turrets_attack,
|
|
AI_can_form_wing,
|
|
AI_protected_on_cripple,
|
|
Targeted_by_huge_Ignored_by_small_only,
|
|
|
|
NUM_VALUES
|
|
};
|
|
|
|
FLAG_LIST(Thruster_Flags) {
|
|
Bank_right,
|
|
Bank_left,
|
|
Pitch_up,
|
|
Pitch_down,
|
|
Yaw_right,
|
|
Yaw_left,
|
|
Slide_right,
|
|
Slide_left,
|
|
Slide_up,
|
|
Slide_down,
|
|
Forward,
|
|
Reverse,
|
|
|
|
NUM_VALUES
|
|
};
|
|
|
|
|
|
// Not all wing flags are parseable or saveable in mission files. Right now, the only ones which can be set by mission designers are:
|
|
// ignore_count, reinforcement, no_arrival_music, no_arrival_message, no_first_wave_message, no_arrival_warp, no_departure_warp,
|
|
// same_arrival_warp_when_docked, same_departure_warp_when_docked, no_dynamic, and nav_carry_status
|
|
// The list of parseable flags is in missionparse.cpp
|
|
|
|
FLAG_LIST(Wing_Flags) {
|
|
Gone, // all ships were either destroyed or departed
|
|
Departing, // wing's departure cue turned true
|
|
Ignore_count, // ignore all ships in this wing for goal counting purposes.
|
|
Reinforcement, // is this wing a reinforcement wing
|
|
Reset_reinforcement, // needed when we need to reset the wing's reinforcement flag (after calling it in)
|
|
No_arrival_music, // don't play arrival music when wing arrives
|
|
Expanded, // wing expanded in hotkey select screen
|
|
No_arrival_message, // don't play any arrival message
|
|
No_arrival_warp, // don't play warp effect for any arriving ships in this wing.
|
|
No_departure_warp, // don't play warp effect for any departing ships in this wing.
|
|
No_dynamic, // members of this wing relentlessly pursue their ai goals
|
|
Departure_ordered, // departure of this wing was ordered by player
|
|
Never_existed, // this wing never existed because something prevented it from being created (like its mother ship being destroyed)
|
|
Nav_carry, // Kazan - Wing has nav-carry-status
|
|
Same_arrival_warp_when_docked, // Goober5000
|
|
Same_departure_warp_when_docked, // Goober5000
|
|
No_first_wave_message, // don't play arrival message for the first wave
|
|
Waypoints_no_formation, // wing will not try to form up when running a waypoint together
|
|
Has_display_name, // Goober5000
|
|
|
|
NUM_VALUES
|
|
};
|
|
|
|
FLAG_LIST(Subsys_Sound_Flags) {
|
|
Alive,
|
|
Dead,
|
|
Rotate,
|
|
Turret_rotation,
|
|
|
|
NUM_VALUES
|
|
};
|
|
|
|
FLAG_LIST(Awacs_Warning_Flags) {
|
|
Warn_25,
|
|
Warn_75,
|
|
|
|
NUM_VALUES
|
|
};
|
|
}
|
|
#endif
|