47 #define SHIP_GUARDIAN_THRESHOLD_DEFAULT 1 // Goober5000
49 #define HULL_DAMAGE_THRESHOLD_PERCENT 0.25f // Apply damage to hull, not shield if shield < this
52 #define WEAPON_RESERVE_THRESHOLD 0.01f // energy threshold where ship is considered to have no weapon energy system
53 #define SUBSYS_MAX_HITS_THRESHOLD 0.01f // max_hits threshold where subsys is considered to take damage
55 #define HP_SCALE 1.2 // 1.2 means die when 20% of hits remaining
56 #define MAX_SHIP_HITS 8 // hits to kill a ship
57 #define MAX_SHIP_DETAIL_LEVELS 5 // maximum detail levels that a ship can render at
58 #define MAX_REINFORCEMENTS 32
62 #define CYCLE_PRIMARY_NEXT 0
63 #define CYCLE_PRIMARY_PREV 1
75 #define TYPE_ATTACK_PROTECT 0
76 #define TYPE_REPAIR_REARM 1
78 #define MAX_REINFORCEMENT_MESSAGES 5
80 #define RF_IS_AVAILABLE (1<<0) // reinforcement is now available
94 #define SW_FLAG_BEAM_FREE (1<<0) // if this is a beam weapon, its free to fire
95 #define SW_FLAG_TURRET_LOCK (1<<1) // is this turret is free to fire or locked
96 #define SW_FLAG_TAGGED_ONLY (1<<2) // only fire if target is tagged
172 #define ADT_DIFF_SCALE_BAD_VAL -1 // error mode
173 #define ADT_DIFF_SCALE_FIRST 0
174 #define ADT_DIFF_SCALE_LAST 1
175 #define ADT_DIFF_SCALE_MANUAL 2 // this is the user defined mode where the modder has to handle difficulty scaling in their calculations
179 #define AT_CONSTANT_NOT_USED -1 // will probibly never get used
180 #define AT_CONSTANT_BAD_VAL -2 // this conveys table error to the user
181 #define AT_CONSTANT_BASE_DMG -3 // what the damage was at start of calculations
182 #define AT_CONSTANT_CURRENT_DMG -4 // what the damage currently is
183 #define AT_CONSTANT_DIFF_FACTOR -5 // difficulty factor (by default 0.2 (easy) to 1.0 (insane))
184 #define AT_CONSTANT_RANDOM -6 // number between 0 and 1 (redundant but saves a calculation)
185 #define AT_CONSTANT_PI -7 // because everyone likes pi
197 float shieldpierce_pct;
200 float piercing_start_pct;
203 int difficulty_scale_type;
222 float GetDamage(
float damage_applied,
int in_damage_type_idx,
float diff_dmg_scale);
243 #define SAF_IGNORE_SS_ARMOR (1 << 0) // hull armor is applied regardless of the subsystem armor for hull damage
245 #define SADTF_PIERCING_NONE 0 // no piercing effects, no beam tooling
246 #define SADTF_PIERCING_DEFAULT 1 // piercing effects, beam tooling
247 #define SADTF_PIERCING_RETAIL 2 // no piercing effects, beam tooling
251 #define SLT_DEFAULT 1
253 #define NUM_TURRET_ORDER_TYPES 3
279 #define SSF_CARGO_REVEALED (1 << 0)
280 #define SSF_UNTARGETABLE (1 << 1)
281 #define SSF_NO_SS_TARGETING (1 << 2)
284 #define SSF_HAS_FIRED (1 << 3) //used by scripting to flag a turret as having been fired
285 #define SSF_FOV_REQUIRED (1 << 4)
286 #define SSF_FOV_EDGE_CHECK (1 << 5)
288 #define SSF_NO_REPLACE (1 << 6) // prevents 'destroyed' submodel from being rendered if subsys is destroyed.
289 #define SSF_NO_LIVE_DEBRIS (1 << 7) // prevents subsystem from generating live debris
290 #define SSF_VANISHED (1 << 8) // allows subsystem to be made to disappear without a trace (for swapping it for a true model for example.
291 #define SSF_MISSILES_IGNORE_IF_DEAD (1 << 9) // forces homing missiles to target hull if subsystem is dead before missile hits it.
292 #define SSF_ROTATES (1 << 10)
293 #define SSF_DAMAGE_AS_HULL (1 << 11) // Applies armor damage instead of subsystem damge. - FUBAR
294 #define SSF_NO_AGGREGATE (1 << 12) // exclude this subsystem from the aggregate subsystem-info tracking - Goober5000
295 #define SSF_PLAY_SOUND_FOR_PLAYER ( 1 << 13) // If this subsystem is a turret on a player ship, play firing sounds - The E
296 #define SSF_NO_DISAPPEAR ( 1 << 14) // prevents submodel from disappearing when subsys destroyed
297 #define SSF_AUTOREPAIR_IF_DISABLED (1 << 15) // Allows the subsystem to repair itself even when disabled - MageKing17
298 #define SSF_NO_AUTOREPAIR_IF_DISABLED (1 << 16) // 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
302 #define SSSF_ALIVE (1 << 0) // subsystem has active alive sound
303 #define SSSF_DEAD (1 << 1) // subsystem has active dead sound
304 #define SSSF_ROTATE (1 << 2) // subsystem has active rotation sound
305 #define SSSF_TURRET_ROTATION (1 << 3) // rotation sound to be scaled like turrets do
407 : next(NULL), prev(NULL)
429 #define MAX_SHIP_FLAG_NAMES 19
436 #define SF_IGNORE_COUNT (1 << 0) // ignore this ship when counting ship types for goals
437 #define SF_REINFORCEMENT (1 << 1) // this ship is a reinforcement ship
438 #define SF_ESCORT (1 << 2) // this ship is an escort ship
439 #define SF_NO_ARRIVAL_MUSIC (1 << 3) // don't play arrival music when ship arrives
440 #define SF_NO_ARRIVAL_WARP (1 << 4) // no arrival warp in effect
441 #define SF_NO_DEPARTURE_WARP (1 << 5) // no departure warp in effect
446 #define SF_KILL_BEFORE_MISSION (1 << 31)
447 #define SF_DYING (1 << 30)
448 #define SF_DISABLED (1 << 29)
449 #define SF_DEPART_WARP (1 << 28) // ship is departing via warp-out
450 #define SF_DEPART_DOCKBAY (1 << 27) // ship is departing via docking bay
451 #define SF_ARRIVING_STAGE_1 (1 << 26) // ship is arriving. In other words, doing warp in effect, stage 1
452 #define SF_ARRIVING_STAGE_2 (1 << 25) // ship is arriving. In other words, doing warp in effect, stage 2
453 #define SF_ARRIVING (SF_ARRIVING_STAGE_1|SF_ARRIVING_STAGE_2)
454 #define SF_ENGINES_ON (1 << 24) // engines sound should play if set
455 #define SF_DOCK_LEADER (1 << 23) // Goober5000 - this guy is in charge of everybody he's docked to
456 #define SF_CARGO_REVEALED (1 << 22) // ship's cargo is revealed to all friendly ships
457 #define SF_FROM_PLAYER_WING (1 << 21) // set for ships that are members of any player starting wing
458 #define SF_PRIMARY_LINKED (1 << 20) // ships primary weapons are linked together
459 #define SF_SECONDARY_DUAL_FIRE (1 << 19) // ship is firing two missiles from the current secondary bank
460 #define SF_WARP_BROKEN (1 << 18) // set when warp drive is not working, but is repairable
461 #define SF_WARP_NEVER (1 << 17) // set when ship can never warp
462 #define SF_TRIGGER_DOWN (1 << 16) // ship has its "trigger" held down
463 #define SF_AMMO_COUNT_RECORDED (1 << 15) // we've recorded the initial secondary weapon count (which is used to limit support ship rearming)
464 #define SF_HIDDEN_FROM_SENSORS (1 << 14) // ship doesn't show up on sensors, blinks in/out on radar
465 #define SF_SCANNABLE (1 << 13) // ship is "scannable". Play scan effect and report as "Scanned" or "not scanned".
466 #define SF_WARPED_SUPPORT (1 << 12) // set when this is a support ship which was warped in automatically
467 #define SF_EXPLODED (1 << 11) // ship has exploded (needed for kill messages)
468 #define SF_SHIP_HAS_SCREAMED (1 << 10) // ship has let out a death scream
469 #define SF_RED_ALERT_STORE_STATUS (1 << 9) // ship status should be stored/restored if red alert mission
470 #define SF_VAPORIZE (1<<8) // ship is vaporized by beam - alternative death sequence
471 #define SF_DEPARTURE_ORDERED (1<<7) // departure of this ship was ordered by player - Goober5000, similar to WF_DEPARTURE_ORDERED
475 #define SF_DEPARTING (SF_DEPART_WARP | SF_DEPART_DOCKBAY) // ship is departing
476 #define SF_CANNOT_WARP (SF_WARP_BROKEN | SF_WARP_NEVER | SF_DISABLED) // ship cannot warp out
479 #define DEFAULT_SHIP_PRIMITIVE_SENSOR_RANGE 10000 // Goober5000
483 #define SF2_PRIMITIVE_SENSORS (1<<0) // Goober5000 - primitive sensor display
484 #define SF2_FRIENDLY_STEALTH_INVIS (1<<1) // Goober5000 - when stealth, don't appear on radar even if friendly
485 #define SF2_STEALTH (1<<2) // Goober5000 - is this particular ship stealth
486 #define SF2_DONT_COLLIDE_INVIS (1<<3) // Goober5000 - is this particular ship don't-collide-invisible
487 #define SF2_NO_SUBSPACE_DRIVE (1<<4) // Goober5000 - this ship has no subspace drive
488 #define SF2_NAVPOINT_CARRY (1<<5) // Kazan - This ship autopilots with the player
489 #define SF2_AFFECTED_BY_GRAVITY (1<<6) // Goober5000 - ship affected by gravity points
490 #define SF2_TOGGLE_SUBSYSTEM_SCANNING (1<<7) // Goober5000 - switch whether subsystems are scanned
491 #define SF2_NO_BUILTIN_MESSAGES (1<<8) // Karajorma - ship should not send built-in messages
492 #define SF2_PRIMARIES_LOCKED (1<<9) // Karajorma - This ship can't fire primary weapons
493 #define SF2_SECONDARIES_LOCKED (1<<10) // Karajorma - This ship can't fire secondary weapons
494 #define SF2_GLOWMAPS_DISABLED (1<<11) // taylor - to disable glow maps
495 #define SF2_NO_DEATH_SCREAM (1<<12) // Goober5000 - for WCS
496 #define SF2_ALWAYS_DEATH_SCREAM (1<<13) // Goober5000 - for WCS
497 #define SF2_NAVPOINT_NEEDSLINK (1<<14) // Kazan - This ship requires "linking" for autopilot (when player ship gets within specified distance SF2_NAVPOINT_NEEDSLINK is replaced by SF2_NAVPOINT_CARRY)
498 #define SF2_HIDE_SHIP_NAME (1<<15) // Karajorma - Hides the ships name (like the -wcsaga command line used to but for any selected ship)
499 #define SF2_AFTERBURNER_LOCKED (1<<16) // KeldorKatarn - This ship can't use its afterburners
500 #define SF2_SET_CLASS_DYNAMICALLY (1<<18) // Karajorma - This ship should have its class assigned rather than simply read from the mission file
501 #define SF2_LOCK_ALL_TURRETS_INITIALLY (1<<19) // Karajorma - Lock all turrets on this ship at mission start or on arrival
502 #define SF2_FORCE_SHIELDS_ON (1<<20)
503 #define SF2_NO_ETS (1<<21) // The E - This ship does not have an ETS
504 #define SF2_CLOAKED (1<<22) // The E - This ship will not be rendered
505 #define SF2_NO_THRUSTERS (1<<23) // The E - Thrusters on this ship are not rendered.
506 #define SF2_SHIP_LOCKED (1<<24) // Karajorma - Prevents the player from changing the ship class on loadout screen
507 #define SF2_WEAPONS_LOCKED (1<<25) // Karajorma - Prevents the player from changing the weapons on the ship on the loadout screen
508 #define SF2_SHIP_SELECTIVE_LINKING (1<<26) // RSAXVC - Allow pilot to pick firing configuration
509 #define SF2_SCRAMBLE_MESSAGES (1<<27) // Goober5000 - all messages sent from this ship appear scrambled
510 #define SF2_NO_SECONDARY_LOCKON (1<<28) // zookeeper - secondary lock-on disabled
511 #define SF2_NO_DISABLED_SELF_DESTRUCT (1<<29) // Goober5000 - ship will not self-destruct after 90 seconds if engines or weapons destroyed (c.f. ai_maybe_self_destruct)
516 #define MAX_DAMAGE_SLOTS 32
517 #define MAX_SHIP_ARCS 2 // How many "arcs" can be active at once... Must be less than MAX_ARC_EFFECTS in model.h.
518 #define NUM_SUB_EXPL_HANDLES 2 // How many different big ship sub explosion sounds can be played.
520 #define MAX_SHIP_CONTRAILS 24
521 #define MAX_MAN_THRUSTERS 128
529 #define AWACS_WARN_NONE (1 << 0)
530 #define AWACS_WARN_25 (1 << 1)
531 #define AWACS_WARN_75 (1 << 2)
846 #define SEF_DESTROYED (1<<0)
847 #define SEF_DEPARTED (1<<1)
848 #define SEF_CARGO_KNOWN (1<<2)
849 #define SEF_PLAYER_DELETED (1<<3) // ship deleted by a player in ship select
850 #define SEF_BEEN_TAGGED (1<<4)
851 #define SEF_RED_ALERT_CARRY (1<<5)
874 #define SIF_NO_COLLIDE (1 << 0)
875 #define SIF_PLAYER_SHIP (1 << 1)
876 #define SIF_DEFAULT_PLAYER_SHIP (1 << 2)
877 #define SIF_PATH_FIXUP (1 << 3) // when set, path verts have been set for this ship's model
878 #define SIF_SUPPORT (1 << 4) // this ship can perform repair/rearm functions
879 #define SIF_AFTERBURNER (1 << 5) // this ship has afterburners
880 #define SIF_BALLISTIC_PRIMARIES (1 << 6) // this ship can equip ballistic primaries - Goober5000
884 #define SIF_CARGO (1 << 7) // is this ship a cargo type ship -- used for docking purposes
885 #define SIF_FIGHTER (1 << 8) // this ship is a fighter
886 #define SIF_BOMBER (1 << 9) // this ship is a bomber
887 #define SIF_CRUISER (1 << 10) // this ship is a cruiser
888 #define SIF_FREIGHTER (1 << 11) // this ship is a freighter
889 #define SIF_CAPITAL (1 << 12) // this ship is a capital/installation ship
890 #define SIF_TRANSPORT (1 << 13) // this ship is a transport
891 #define SIF_NAVBUOY (1 << 14) // AL 11-24-97: this is a navbuoy
892 #define SIF_SENTRYGUN (1 << 15) // AL 11-24-97: this is a navbuoy with turrets
893 #define SIF_ESCAPEPOD (1 << 16) // AL 12-09-97: escape pods that fire from big ships
894 #define SIF_NO_SHIP_TYPE (1 << 17) // made distinct to help trap errors
896 #define SIF_SHIP_COPY (1 << 18) // this ship is a copy of another ship in the table -- meaningful for scoring and possible other things
897 #define SIF_IN_TECH_DATABASE (1 << 19) // is ship type to be listed in the tech database?
898 #define SIF_IN_TECH_DATABASE_M (1 << 20) // is ship type to be listed in the tech database for multiplayer?
900 #define SIF_STEALTH (1 << 21) // the ship has stealth capabilities
901 #define SIF_SUPERCAP (1 << 22) // the ship is a supercap
902 #define SIF_DRYDOCK (1 << 23) // the ship is a drydock
903 #define SIF_SHIP_CLASS_DONT_COLLIDE_INVIS (1 << 24) // Don't collide with this ship's invisible polygons
905 #define SIF_BIG_DAMAGE (1 << 25) // this ship is classified as a big damage ship
906 #define SIF_HAS_AWACS (1 << 26) // ship has an awacs subsystem
908 #define SIF_CORVETTE (1 << 27) // corvette class (currently this only means anything for briefing icons)
909 #define SIF_GAS_MINER (1 << 28) // also just for briefing icons
910 #define SIF_AWACS (1 << 29) // ditto
912 #define SIF_KNOSSOS_DEVICE (1 << 30) // this is the knossos device
914 #define SIF_NO_FRED (1 << 31) // not available in fred
918 #define SIF2_DEFAULT_IN_TECH_DATABASE (1 << 0) // default in tech database - Goober5000
919 #define SIF2_DEFAULT_IN_TECH_DATABASE_M (1 << 1) // ditto - Goober5000
920 #define SIF2_FLASH (1 << 2) // makes a flash when it explodes
921 #define SIF2_SHOW_SHIP_MODEL (1 << 3) // Show ship model even in first person view
922 #define SIF2_SURFACE_SHIELDS (1 << 4) // _argv[-1], 16 Jan 2005: Enable surface shields for this ship.
923 #define SIF2_GENERATE_HUD_ICON (1 << 5) // Enable generation of a HUD shield icon
924 #define SIF2_DISABLE_WEAPON_DAMAGE_SCALING (1 << 6) // WMC - Disable weapon scaling based on flags
925 #define SIF2_GUN_CONVERGENCE (1 << 7) // WMC - Gun convergence based on model weapon norms.
926 #define SIF2_NO_THRUSTER_GEO_NOISE (1 << 8) // Echelon9 - No thruster geometry noise.
927 #define SIF2_INTRINSIC_NO_SHIELDS (1 << 9) // Chief - disables shields for this ship even without No Shields in mission.
928 #define SIF2_NO_PRIMARY_LINKING (1 << 10) // Chief - slated for 3.7 originally, but this looks pretty simple to implement.
929 #define SIF2_NO_PAIN_FLASH (1 << 11) // The E - disable red pain flash
930 #define SIF2_ALLOW_LANDINGS (1 << 12) // SUSHI: Automatically set if any subsystems allow landings (as a shortcut)
931 #define SIF2_NO_ETS (1 << 13) // The E - No ETS on this ship class
932 #define SIF2_NO_LIGHTING (1 << 14) // Valathil - No lighting for this ship
933 #define SIF2_DYN_PRIMARY_LINKING (1 << 15) // RSAXVC - Dynamically generate weapon linking options
934 #define SIF2_AUTO_SPREAD_SHIELDS (1 << 16) // zookeeper - auto spread shields
935 #define SIF2_DRAW_WEAPON_MODELS (1 << 17) // the ship draws weapon models of any sort (used to be a boolean)
936 #define SIF2_MODEL_POINT_SHIELDS (1 << 18) // zookeeper - uses model-defined shield points instead of quadrants
937 #define SIF2_SUBSYS_REPAIR_WHEN_DISABLED (1 << 19) // MageKing17 - Subsystems auto-repair themselves even when disabled.
939 #define SIF_DEFAULT_VALUE 0
940 #define SIF2_DEFAULT_VALUE 0
942 #define SIF_ALL_SHIP_TYPES (SIF_CARGO | SIF_FIGHTER | SIF_BOMBER | SIF_CRUISER | SIF_FREIGHTER | SIF_CAPITAL | SIF_TRANSPORT | SIF_SUPPORT | SIF_NO_SHIP_TYPE | SIF_NAVBUOY | SIF_SENTRYGUN | SIF_ESCAPEPOD | SIF_SUPERCAP | SIF_CORVETTE | SIF_GAS_MINER | SIF_AWACS | SIF_KNOSSOS_DEVICE)
943 #define SIF_SMALL_SHIP (SIF_FIGHTER | SIF_BOMBER | SIF_SUPPORT | SIF_ESCAPEPOD )
944 #define SIF_BIG_SHIP (SIF_CRUISER | SIF_FREIGHTER | SIF_TRANSPORT | SIF_CORVETTE | SIF_GAS_MINER | SIF_AWACS)
945 #define SIF_HUGE_SHIP (SIF_CAPITAL | SIF_SUPERCAP | SIF_DRYDOCK | SIF_KNOSSOS_DEVICE)
946 #define SIF_NOT_FLYABLE (SIF_CARGO | SIF_NAVBUOY | SIF_SENTRYGUN) // AL 11-24-97: this useful to know for targeting reasons
947 #define SIF_HARMLESS (SIF_CARGO | SIF_NAVBUOY | SIF_ESCAPEPOD) // AL 12-3-97: ships that are not a threat
949 #define SIF_BEAM_JITTER (SIF_CARGO | SIF_FIGHTER | SIF_BOMBER | SIF_FREIGHTER | SIF_TRANSPORT | SIF_SENTRYGUN | SIF_NAVBUOY | SIF_ESCAPEPOD)
952 #define SIF_AVOID_SHOCKWAVE SIF_SMALL_SHIP
955 #define SIF_MASK SIF_AFTERBURNER
956 #define SIF2_MASK SIF2_DRAW_WEAPON_MODELS
958 #define REGULAR_WEAPON (1<<0)
959 #define DOGFIGHT_WEAPON (1<<1)
961 #define AIM_FLAG_AUTOAIM (1 << 0) // has autoaim
962 #define AIM_FLAG_AUTO_CONVERGENCE (1 << 1) // has automatic convergence
963 #define AIM_FLAG_STD_CONVERGENCE (1 << 2) // has standard - ie. non-automatic - convergence
964 #define AIM_FLAG_AUTOAIM_CONVERGENCE (1 << 3) // has autoaim with convergence
965 #define AIM_FLAG_CONVERGENCE_OFFSET (1 << 4) // marks that convergence has offset value
988 #define STI_MSG_COUNTS_FOR_ALONE (1<<0)
989 #define STI_MSG_PRAISE_DESTRUCTION (1<<1)
991 #define STI_HUD_HOTKEY_ON_LIST (1<<0)
992 #define STI_HUD_TARGET_AS_THREAT (1<<1)
993 #define STI_HUD_SHOW_ATTACK_DIRECTION (1<<2)
994 #define STI_HUD_NO_CLASS_DISPLAY (1<<3)
996 #define STI_SHIP_SCANNABLE (1<<0)
997 #define STI_SHIP_WARP_PUSHES (1<<1)
998 #define STI_SHIP_WARP_PUSHABLE (1<<2)
999 #define STI_TURRET_TGT_SHIP_TGT (1<<3)
1001 #define STI_WEAP_BEAMS_EASILY_HIT (1<<0)
1002 #define STI_WEAP_NO_HUGE_IMPACT_EFF (1<<1)
1004 #define STI_AI_ACCEPT_PLAYER_ORDERS (1<<0)
1005 #define STI_AI_AUTO_ATTACKS (1<<1)
1006 #define STI_AI_ATTEMPT_BROADSIDE (1<<2)
1007 #define STI_AI_GUARDS_ATTACK (1<<3)
1008 #define STI_AI_TURRETS_ATTACK (1<<4)
1009 #define STI_AI_CAN_FORM_WING (1<<5)
1010 #define STI_AI_PROTECTED_ON_CRIPPLE (1<<6)
1054 : message_bools( 0 ), hud_bools( 0 ), ship_bools( 0 ), debris_max_speed( 0.
f ),
1055 weapon_bools( 0 ), ff_multiplier( 0.
f ), emp_multiplier( 0.
f ),
1056 fog_start_dist( 0.
f ), fog_complete_dist( 0.
f ),
1057 ai_valid_goals( 0 ), ai_player_orders( 0 ), ai_bools( 0 ), ai_active_dock( 0 ), ai_passive_dock( 0 ),
1058 vaporize_chance( 0.
f )
1076 #define MT_BANK_RIGHT (1<<0)
1077 #define MT_BANK_LEFT (1<<1)
1078 #define MT_PITCH_UP (1<<2)
1079 #define MT_PITCH_DOWN (1<<3)
1080 #define MT_ROLL_RIGHT (1<<4)
1081 #define MT_ROLL_LEFT (1<<5)
1082 #define MT_SLIDE_RIGHT (1<<6)
1083 #define MT_SLIDE_LEFT (1<<7)
1084 #define MT_SLIDE_UP (1<<8)
1085 #define MT_SLIDE_DOWN (1<<9)
1086 #define MT_FORWARD (1<<10)
1087 #define MT_REVERSE (1<<11)
1106 #define WT_DEFAULT 0
1107 #define WT_KNOSSOS 1
1108 #define WT_DEFAULT_THEN_KNOSSOS 2
1109 #define WT_IN_PLACE_ANIM 3
1110 #define WT_SWEEPER 4
1111 #define WT_HYPERSPACE 5
1500 #define MAX_WING_FLAGS 8 // total number of flags in the wing structure -- used for parsing wing flags
1501 #define WF_WING_GONE (1<<0) // all ships were either destroyed or departed
1502 #define WF_WING_DEPARTING (1<<1) // wing's departure cue turned true
1503 #define WF_IGNORE_COUNT (1<<2) // ignore all ships in this wing for goal counting purposes.
1504 #define WF_REINFORCEMENT (1<<3) // is this wing a reinforcement wing
1505 #define WF_RESET_REINFORCEMENT (1<<4) // needed when we need to reset the wing's reinforcement flag (after calling it in)
1506 #define WF_NO_ARRIVAL_MUSIC (1<<5) // don't play arrival music when wing arrives
1507 #define WF_EXPANDED (1<<6) // wing expanded in hotkey select screen
1508 #define WF_NO_ARRIVAL_MESSAGE (1<<7) // don't play any arrival message
1509 #define WF_NO_ARRIVAL_WARP (1<<8) // don't play warp effect for any arriving ships in this wing.
1510 #define WF_NO_DEPARTURE_WARP (1<<9) // don't play warp effect for any departing ships in this wing.
1511 #define WF_NO_DYNAMIC (1<<10) // members of this wing relentlessly pursue their ai goals
1512 #define WF_DEPARTURE_ORDERED (1<<11) // departure of this wing was ordered by player
1513 #define WF_NAV_CARRY (1<<12) // Kazan - Wing has nav-carry-status
1601 #define WING_INDEX(wingp) (wingp-Wings)
1602 #define SHIP_INDEX(shipp) (shipp-Ships)
1622 #define SHIP_VANISHED (1<<0)
1623 #define SHIP_DESTROYED (1<<1)
1624 #define SHIP_DEPARTED_WARP (1<<2)
1625 #define SHIP_DEPARTED_BAY (1<<3)
1626 #define SHIP_DEPARTED ( SHIP_DEPARTED_BAY | SHIP_DEPARTED_WARP )
1628 extern void ship_cleanup(
int shipnum,
int cleanup_mode);
1651 extern int subsys_set(
int objnum,
int ignore_subsys_info = 0);
1786 #define SHIP_GET_ANY_SHIP 0
1787 #define SHIP_GET_NO_PLAYERS 1
1788 #define SHIP_GET_ONLY_PLAYERS 2
1789 #define SHIP_GET_UNSILENCED 3 // Karajorma - Returns no_players that can send builtin messages.
float ship_get_warpout_speed(object *objp)
void ship_destroy_instantly(object *ship_obj, int shipnum)
void ship_get_global_turret_info(object *objp, model_subsystem *tp, vec3d *gpos, vec3d *gvec)
char fg_filename[MAX_FILENAME_LEN]
float debris_max_rotspeed
int num_swarm_missiles_to_fire
int ship_get_index_from_subsys(ship_subsys *ssp, int objnum, int error_bypass=0)
void parse_weapon_targeting_priorities()
int shader_effect_duration
int get_available_primary_weapons(object *objp, int *outlist, int *outbanklist)
int thruster_tertiary_glow_bitmap
int tertiary_bank_rearm_time
void ship_maybe_praise_player(ship *deader_sp)
void ship_set_hud_cockpit_targets()
int wing_has_conflicting_teams(int wing_index)
SCP_vector< ship_type_info > Ship_types
fix time_subsys_cargo_revealed
int thruster_secondary_glow_bitmap
thrust_pair_bitmap thruster_secondary_glow_info
int ship_explode_area_calc_damage(vec3d *pos1, vec3d *pos2, float inner_rad, float outer_rad, float max_damage, float max_blast, float *damage, float *blast)
char wing_status_wing_pos
int subsys_set(int objnum, int ignore_subsys_info=0)
SCP_vector< HudGauge * > hud_gauges
ubyte pre_death_explosion_happened
float minimum_convergence_distance
bool ship_has_dock_bay(int shipnum)
fix team_change_timestamp
int ship_template_lookup(const char *name=NULL)
void ship_process_post(object *objp, float frametime)
model_subsystem * system_info
void change_ship_type(int n, int ship_type, int by_sexp=0)
int primary_bank_weapons[MAX_SHIP_PRIMARY_BANKS]
void ship_assign_sound(ship *sp)
int is_support_allowed(object *objp, bool do_simple_check=false)
int last_primary_fire_sound_stamp[MAX_SHIP_PRIMARY_BANKS]
float compute_shield_strength(object *objp)
void ship_end_render_cockpit_display(int cockpit_display_num)
int ship_info_lookup(const char *name=NULL)
void add_shield_point_multi(int objnum, int tri_num, vec3d *hit_pos)
#define MAX_SHIP_PRIMARY_BANKS
void ship_start_targeting_laser(ship *shipp)
EModelAnimationPosition turret_animation_position
geometry_batcher man_batcher
SCP_string secondary_team_name
int previous_primary_bank
#define NUM_SUB_EXPL_HANDLES
void ship_model_stop(object *objp)
int secondary_bank_weapons[MAX_SHIP_SECONDARY_BANKS]
float max_overclocked_speed
struct cockpit_display cockpit_display
thrust_pair_bitmap thruster_tertiary_glow_info
int thrusters_sounds[MAX_MAN_THRUSTERS]
bool draw_primary_models[MAX_SHIP_PRIMARY_BANKS]
np_update np_updates[MAX_PLAYERS]
int ship_get_random_targetable_ship()
int num_target_priorities
float afterburner_trail_width_factor
int ship_check_collision_fast(object *obj, object *other_obj, vec3d *hitpos)
shockwave_create_info shockwave
struct ship_counts ship_counts
int bii_index_ship_with_cargo
int ship_find_repair_ship(object *requester_obj, object **ship_we_found=NULL)
float debris_min_lifetime
SCP_vector< thruster_particles > normal_thruster_particles
ubyte bay_doors_launched_from
SCP_vector< ship_effect > Ship_effects
float radar_projection_size_mult
SCP_vector< engine_wash_info > Engine_wash_info
void ship_maybe_tell_about_low_ammo(ship *sp)
void ship_subsystem_set_new_ai_class(int ship_num, char *subsystem, int new_ai_class)
bool IsName(char *in_name)
SCP_vector< ship_info > Ship_info
ai_target_priority init_ai_target_priorities()
submodel_instance_info submodel_info_1
float ship_quadrant_shield_strength(object *hit_objp, vec3d *hitpos)
float thruster_glow_noise
float warpout_player_speed
void wing_load_squad_bitmap(wing *w)
RadarVisibility radar_current_status
int last_primary_fire_stamp[MAX_SHIP_PRIMARY_BANKS]
char icon_filename[MAX_FILENAME_LEN]
void init_path_metadata(path_metadata &metadata)
char wing_status_wing_index
void ship_scream(ship *sp)
void ship_maybe_praise_self(ship *deader_sp, ship *killer_sp)
int ship_query_general_type(int ship)
struct ship_flag_name ship_flag_name
void ship_model_change(int n, int ship_type)
void wing_bash_ship_name(char *ship_name, const char *wing_name, int index)
float ship_calculate_rearm_duration(object *objp)
float ship_get_exp_damage(object *objp)
int ship_is_shield_up(object *obj, int quadrant)
ship_subsys fighter_beam_turret_data
void ship_render_DEPRECATED(object *objp)
void ship_do_cap_subsys_cargo_hidden(ship *shipp, ship_subsys *subsys, int from_network=0)
int turret_max_target_ownage
int ship_get_turret_type(ship_subsys *subsys)
int corkscrew_missile_bank
float ship_max_shield_strength
thrust_pair thruster_glow_info
int next_primary_fire_stamp[MAX_SHIP_PRIMARY_BANKS]
SCP_vector< cockpit_display > Player_displays
float thruster_glow_noise_mult
int ship_iff_color[MAX_IFFS][MAX_IFFS]
int ship_find_exited_ship_by_signature(int signature)
#define SHIP_DEPARTED_WARP
int allowed_bank_restricted_weapons[MAX_SHIP_WEAPONS][MAX_WEAPON_TYPES]
int ship_get_by_signature(int signature)
void ship_init_cockpit_displays(ship *shipp)
reinforcements Reinforcements[MAX_REINFORCEMENTS]
int next_secondary_fire_stamp[MAX_SHIP_SECONDARY_BANKS]
SCP_vector< vec3d > shield_points
bool ship_subsys_takes_damage(ship_subsys *ss)
int parse_ship_values(ship_info *sip, const bool is_template, const bool first_time, const bool replace)
submodel_instance_info submodel_info_2
int get_available_secondary_weapons(object *objp, int *outlist, int *outbanklist)
void ship_clear_cockpit_displays()
char sub_name[NAME_LENGTH]
int weapon_recharge_index
vec3d turret_big_attack_point
void ship_add_exited_ship(ship *shipp, int reason)
int ship_get_texture(int bitmap)
int turret_next_enemy_check_stamp
int subsys_guardian_threshold
struct ship_spark ship_spark
int ship_select_next_secondary(object *objp)
int secondary_bank_start_ammo[MAX_SHIP_SECONDARY_BANKS]
int ship_name_lookup(const char *name, int inc_players=0)
int afterburner_trail_faded_out_sections
ship_flag_name Ship_flag_names[]
char pof_file_hud[MAX_FILENAME_LEN]
void ship_maybe_ask_for_help(ship *sp)
int bitmask_2_bitnum(int num)
int subsys_disrupted_check_timestamp
char Squadron_wing_names[MAX_SQUADRON_WINGS][NAME_LENGTH]
char flag_name[TOKEN_LENGTH]
#define NUM_TURRET_ORDER_TYPES
void ship_obj_list_rebuild()
int ship_get_random_team_ship(int team_mask, int flags=SHIP_GET_ANY_SHIP, float max_dist=0.0f)
float afterburner_fuel_capacity
int object_in_turret_fov(object *objp, ship_subsys *ss, vec3d *tvec, vec3d *tpos, float dist)
bool ship_subsys_is_fighterbay(ship_subsys *ss)
EModelAnimationPosition bay_doors_status
void parse_ship_particle_effect(ship_info *sip, particle_effect *pe, char *id_string)
model_subsystem * subsystems
int ship_start_render_cockpit_display(int cockpit_display_num)
float piercing_damage_draw_limit
int wing_insignia_texture
int ship_fire_primary_debug(object *objp)
int ship_has_engine_power(ship *shipp)
void ship_render(object *obj, draw_list *scene)
int get_subsystem_pos(vec3d *pos, object *objp, ship_subsys *subsysp)
int restricted_loadout_flag[MAX_SHIP_WEAPONS]
int turret_next_fire_stamp
int primary_bank_weapons[MAX_SHIP_PRIMARY_BANKS]
#define MAX_SHIPS_PER_WING
std::basic_string< char, std::char_traits< char >, std::allocator< char > > SCP_string
char ship_name[NAME_LENGTH]
float debris_max_hitpoints
float primary_rotate_rate[MAX_SHIP_PRIMARY_BANKS]
int primary_bank_capacity[MAX_SHIP_PRIMARY_BANKS]
int tertiary_bank_start_ammo
int current_secondary_bank
int tertiary_bank_capacity
#define MAX_SQUADRON_WINGS
int detail_distance[MAX_SHIP_DETAIL_LEVELS]
struct DamageTypeStruct DamageTypeStruct
int special_warpin_objnum
int auto_shield_spread_from_lod
ship_subsys_info subsys_info[SUBSYSTEM_MAX]
#define MAX_REINFORCEMENT_MESSAGES
man_thruster_renderer(int id)
char tech_title[NAME_LENGTH]
char * ship_subsys_get_name(ship_subsys *ss)
int ship_return_subsys_path_normal(ship *sp, ship_subsys *ss, vec3d *gsubpos, vec3d *norm)
void ship_model_update_instance(object *objp)
float base_rotation_rate_pct
ship_subsys * last_fired_turret
int ship_navigation_ok_to_warp(ship *sp)
std::deque< bool > glow_point_bank_active
float thruster03_glow_rad_factor
void ship_stop_targeting_laser(ship *shipp)
int ship_get_ship_for_departure(int team)
float GetShieldPiercePCT(int damage_type_idx)
bool ship_useful_for_departure(int shipnum, int path_mask=0)
int ship_select_next_primary(object *objp, int direction)
ubyte num_corkscrew_to_fire
int ship_fire_primary(object *objp, int stream_weapons, int force=0)
int ship_get_reinforcement_team(int r_index)
int turret_pick_big_attack_point_timestamp
void ship_add_ship_type_count(int ship_info_index, int num)
SCP_vector< exited_ship > Ships_exited
ship_subsys * ship_return_next_subsys(ship *shipp, int type, vec3d *attacker_pos)
bool use_special_explosion
#define MAX_SHIP_SECONDARY_BANKS
void ship_wing_cleanup(int shipnum, wing *wingp)
EModelAnimationPosition secondary_animation_position[MAX_SHIP_SECONDARY_BANKS]
float get_adjusted_turret_rof(ship_subsys *ss)
int previous_secondary_bank
void create_shield_explosion(int objnum, int model_num, matrix *orient, vec3d *centerp, vec3d *tcp, int tr0)
char pof_file[MAX_FILENAME_LEN]
int shader_effect_start_time
WarpEffect * warpout_effect
ubyte arc_type[MAX_SHIP_ARCS]
int ship_type_name_lookup(const char *name)
ship_spark sparks[MAX_SHIP_HITS]
int Starting_wings[MAX_STARTING_WINGS]
SCP_vector< alt_class > s_alt_classes
bool auto_shield_spread_bypass
int bii_index_wing_with_cargo
void ship_do_cargo_hidden(ship *shipp, int from_network=0)
int GetPiercingType(int damage_type_idx)
int ship_get_type(char *output, ship_info *sip)
float ship_max_hull_strength
float afterburner_forward_accel
float thruster_dist_rad_factor
float afterburner_reverse_accel
float ship_get_subsystem_strength(ship *shipp, int type)
void create_shield_explosion_all(object *objp)
int primary_bank_ammo[MAX_SHIP_PRIMARY_BANKS]
int ship_get_subsys_index(ship *sp, char *ss_name, int error_bypass=0)
int * ship_replacement_textures
SCP_vector< int > ai_cripple_ignores
GLboolean GLboolean GLboolean GLboolean a
int secondary_bank_capacity[MAX_SHIP_SECONDARY_BANKS]
int ship_get_exp_propagates(ship *sp)
int ship_is_tagged(object *objp)
int ship_get_default_orders_accepted(ship_info *sip)
int wing_lookup(const char *name)
int ship_has_energy_weapons(ship *shipp)
void ship_cleanup(int shipnum, int cleanup_mode)
void parse_ai_target_priorities()
int bay_doors_anim_done_time
float target_shields_delta
#define MAX_STARTING_WINGS
int ship_iff_info[MAX_IFFS][MAX_IFFS]
void ship_assign_sound_all()
int subsys_disrupted_flags
int ship_secondary_bank_has_ammo(int shipnum)
int primary_animation_done_time[MAX_SHIP_PRIMARY_BANKS]
char TVT_wing_names[MAX_TVT_WINGS][NAME_LENGTH]
float damage_ship[MAX_DAMAGE_SLOTS]
trail_info ab_info[MAX_SHIP_CONTRAILS]
SCP_string default_team_name
int warptype_match(char *p)
int next_tertiary_fire_stamp
int num_turret_swarm_info
struct thruster_particles thruster_particles
bool ship_has_sound(object *objp, GameSoundsIndex id)
Specifies if a ship has a custom sound for the specified id.
generic_bitmap afterburner_trail
int sub_expl_sound_handle[NUM_SUB_EXPL_HANDLES]
float debris_max_lifetime
int special_exp_deathroll_time
trail * ABtrail_ptr[MAX_SHIP_CONTRAILS]
SCP_vector< ai_target_priority > Ai_tp_list
float reorient_max_rot_angle
EModelAnimationPosition primary_animation_position[MAX_SHIP_PRIMARY_BANKS]
model_subsystem beam_sys_info
float primary_rotate_ang[MAX_SHIP_PRIMARY_BANKS]
int engine_recharge_index
float max_shield_strength
int ship_get_random_ship_in_wing(int wingnum, int flags=SHIP_GET_ANY_SHIP, float max_dist=0.0f, int get_first=0)
int secondary_bank_weapons[MAX_SHIP_SECONDARY_BANKS]
int ship_class_query_general_type(int ship_class)
int arc_timestamp[MAX_SHIP_ARCS]
int ship_find_exited_ship_by_name(char *name)
float thruster_glow_frame
int ship_dumbfire_threat(ship *sp)
void ship_model_start(object *objp)
int bay_doors_wanting_open
void ship_subsys_set_name(ship_subsys *ss, char *n_name)
int * Player_cockpit_textures
int ship_fire_tertiary(object *objp)
float aggregate_current_hits
struct man_thruster man_thruster
int collision_damage_type_idx
void ship_set_default_weapons(ship *shipp, ship_info *sip)
int ship_docking_valid(int docker, int dockee)
int turret_targeting_order[NUM_TURRET_ORDER_TYPES]
bool scripting_target_override
int large_ship_blowup_index
int secondary_bank_ammo_capacity[MAX_SHIP_SECONDARY_BANKS]
void ship_page_out_textures(int ship_index, bool release=false)
particle_effect regular_end_particles
bool ship_subsys_has_instance_name(ship_subsys *ss)
char filename[MAX_FILENAME_LEN]
int really_final_death_time
int ship_lock_threat(ship *sp)
ship_subsys * ship_get_indexed_subsys(ship *sp, int index, vec3d *attacker_pos=NULL)
char bg_filename[MAX_FILENAME_LEN]
SCP_vector< texture_replace > replacement_textures
#define MAX_NONDARK_COLORS
float sup_subsys_repair_rate
float ship_class_get_length(ship_info *sip)
void ship_subsys_set_disrupted(ship_subsys *ss, int time)
void ship_do_submodel_rotation(ship *shipp, model_subsystem *psub, ship_subsys *pss)
float ship_get_exp_outer_rad(object *ship_objp)
void ship_actually_depart(int shipnum, int method=SHIP_DEPARTED_WARP)
trail_info ct_info[MAX_SHIP_CONTRAILS]
int secondary_bank_ammo[MAX_SHIP_SECONDARY_BANKS]
int primary_bank_ammo_capacity[MAX_SHIP_PRIMARY_BANKS]
int primary_out_of_ammo(ship_weapon *swp, int bank)
char cockpit_pof_file[MAX_FILENAME_LEN]
trail * trail_ptr[MAX_SHIP_CONTRAILS]
int ship_get_SIF(ship *shipp)
SCP_vector< thruster_particles > afterburner_thruster_particles
void ship_delete(object *objp)
int damage_ship_id[MAX_DAMAGE_SLOTS]
char Starting_wing_names[MAX_STARTING_WINGS][NAME_LENGTH]
int shield_impact_explosion_anim
int was_firing_last_frame[MAX_SHIP_PRIMARY_BANKS]
void ship_do_cargo_revealed(ship *shipp, int from_network=0)
float sup_hull_repair_rate
int turret_max_bomb_ownage
int ship_is_beginning_warpout_speedup(object *objp)
int ship_engine_ok_to_warp(ship *sp)
int radar_color_image_2d_idx
int ship_do_rearm_frame(object *objp, float frametime)
SCP_vector< SCP_string > ai_actively_pursues_temp
float primary_bank_fof_cooldown[MAX_SHIP_PRIMARY_BANKS]
void ship_recalc_subsys_strength(ship *shipp)
void ship_clear_ship_type_counts()
char warpin_anim[MAX_FILENAME_LEN]
int shield_armor_type_idx
SCP_map< SCP_string, path_metadata > pathMetadata
void physics_ship_init(object *objp)
int damage_ship_id[MAX_DAMAGE_SLOTS]
int armor_type_get_idx(char *name)
RadarVisibility radar_last_status
int red_alert_skipped_ships
int ship_guardian_threshold
vec3d Original_vec_to_deader
int damage_type_add(char *name)
int last_secondary_fire_stamp[MAX_SHIP_SECONDARY_BANKS]
char * ship_return_orders(char *outbuf, ship *sp)
int ship_starting_wing_lookup(const char *wing_name)
SCP_vector< ArmorType > Armor_types
void ship_primary_changed(ship *sp)
int do_facing_check(const vec3d *norm, vertex **vertlist, const vec3d *p)
SCP_unordered_map< int, void * > glowpoint_bank_override_map
int ship_get_num_subsys(ship *shipp)
float target_weapon_energy_delta
void ship_process_pre(object *objp, float frametime)
float thruster01_glow_rad_factor
int targeting_laser_objnum
void ship_maybe_tell_about_rearm(ship *sp)
void ship_draw_shield(object *objp)
int special_warpout_objnum
int collision_damage_type_idx
int shield_point_augment_ctrls[4]
bool newtonian_damp_override
int turret_animation_done_time
int ship_subsys_disrupted(ship_subsys *ss)
char warpout_anim[MAX_FILENAME_LEN]
GLuint const GLchar * name
struct particle_effect particle_effect
int thruster_glow_anim_load(generic_anim *ga)
void ship_add_ship_type_kill_count(int ship_info_index)
int secondary_bank_rearm_time[MAX_SHIP_SECONDARY_BANKS]
vec3d turret_last_fire_direction
float death_roll_time_mult
man_thruster maneuvering[MAX_MAN_THRUSTERS]
float thruster02_glow_len_factor
int ship_subsystem_in_sight(object *objp, ship_subsys *subsys, vec3d *eye_pos, vec3d *subsys_pos, int do_facing_check=1, float *dot_out=NULL, vec3d *vec_out=NULL)
int get_quadrant(vec3d *hit_pnt, object *shipobjp=NULL)
void shield_point_multi_setup()
float gun_rotation_rate_pct
float total_damage_received
SCP_vector< SCP_string > ai_cripple_ignores_temp
thrust_pair thruster_flame_info
SCP_vector< cockpit_display_info > displays
void ship_maybe_scream(ship *sp)
int get_nearest_bbox_point(object *ship_obj, vec3d *start, vec3d *box_pt)
ship_subsys * ship_get_subsys(ship *shipp, char *subsys_name)
float turret_time_enemy_in_range
void add_shield_point(int objnum, int tri_num, vec3d *hit_pos)
int get_max_ammo_count_for_bank(int ship_class, int bank, int ammo_type)
char alt_name[NAME_LENGTH]
int damage_lightning_type
int get_max_ammo_count_for_turret_bank(ship_weapon *swp, int bank, int ammo_type)
int primitive_sensor_range
fix base_texture_anim_frametime
ship_type_info * ship_get_type_info(object *objp)
int secondary_next_slot[MAX_SHIP_SECONDARY_BANKS]
float favor_current_facing
char anim_filename[MAX_FILENAME_LEN]
void compute_slew_matrix(matrix *orient, angles *a)
int ship_find_num_crewpoints(object *objp)
char splodeing_texture_name[MAX_FILENAME_LEN]
GLubyte GLubyte GLubyte GLubyte w
void ship_render_show_ship_cockpit(object *objp)
int check_world_pt_in_expanded_ship_bbox(vec3d *world_pt, object *objp, float delta_box)
struct path_metadata path_metadata
int TVT_wings[MAX_TVT_WINGS]
int ship_stop_fire_primary(object *obj)
char short_name[NAME_LENGTH]
#define SHIP_GET_ANY_SHIP
void ship_get_global_turret_gun_info(object *objp, ship_subsys *ssp, vec3d *gpos, vec3d *gvec, int use_angles, vec3d *targetp)
void ship_update_artillery_lock()
int last_fired_point[MAX_SHIP_PRIMARY_BANKS]
struct ship_collision_physics ship_collision_physics
int external_model_fp_counter[MAX_SHIP_PRIMARY_BANKS+MAX_SHIP_SECONDARY_BANKS]
struct ship_type_info ship_type_info
float weapon_model_draw_distance
void ship_do_cap_subsys_cargo_revealed(ship *shipp, ship_subsys *subsys, int from_network=0)
ubyte nondark_colors[MAX_NONDARK_COLORS][3]
ship_subsys * targeted_subsys
float max_weapon_regen_per_second
bool turret_adv_fov_test(ship_subsys *ss, vec3d *gvec, vec3d *v2e, float size_mod=0)
void clone(const ship_info &other)
int ship_get_random_player_wing_ship(int flags=SHIP_GET_ANY_SHIP, float max_dist=0.0f, int persona_index=-1, int get_first=0, int multi_team=-1)
bool shader_effect_active
float apply_damage_to_shield(object *objp, int quadrant, float damage)
struct ship_subsys_info ship_subsys_info
int Squadron_wings[MAX_SQUADRON_WINGS]
#define MAX_REINFORCEMENTS
int ship_fire_secondary(object *objp, int allow_swarm=0)
int secondary_animation_done_time[MAX_SHIP_SECONDARY_BANKS]
vec3d afterburner_max_vel
ship_subsys * last_targeted_subobject[MAX_PLAYERS]
int bay_doors_parent_shipnum
bool turret_std_fov_test(ship_subsys *ss, vec3d *gvec, vec3d *v2e, float size_mod=0)
particle_effect damage_spew
float debris_min_hitpoints
SCP_vector< DamageTypeStruct > Damage_types
void ship_render_cockpit(object *objp)
float GetPiercingLimit(int damage_type_idx)
int ship_create(matrix *orient, vec3d *pos, int ship_type, char *ship_name=NULL)
#define MAX_MAN_THRUSTERS
float afterburner_max_reverse_vel
char * maneuverability_str
void ship_set_new_ai_class(int ship_num, int new_ai_class)
GLsizei GLsizei GLuint * obj
float ship_recoil_modifier
float thruster_dist_len_factor
int debris_damage_type_idx
float ship_get_max_speed(ship *shipp)
void ship_maybe_warn_player(ship *enemy_sp, float dist)
particle_effect knossos_end_particles
bool draw_secondary_models[MAX_SHIP_SECONDARY_BANKS]
#define MAX_SHIP_CONTRAILS
SCP_vector< int > ai_actively_pursues
char * ship_return_time_to_goal(char *outbuf, ship *sp)
struct engine_wash_info engine_wash_info
SCP_vector< int > weapon_class
void ship_get_eye(vec3d *eye_pos, matrix *eye_orient, object *obj, bool do_slew=true, bool from_origin=false)
int ammo_low_complaint_count
SCP_vector< int > ship_type
matrix world_to_turret_matrix
float damage_ship[MAX_DAMAGE_SLOTS]
int triggered_rotation_index
vec3d arc_pts[MAX_SHIP_ARCS][2]
void ship_page_in_textures(int ship_index=-1)
ship_collision_physics collision_physics
SCP_vector< int > explosion_bitmap_anims
WarpEffect * warpin_effect
int primary_bank_rearm_time[MAX_SHIP_PRIMARY_BANKS]
int thruster_distortion_bitmap
void ship_add_cockpit_display(cockpit_display_info *display, int cockpit_model_num)
SCP_vector< int > explosion_bitmap_anims
char * Turret_target_order_names[NUM_TURRET_ORDER_TYPES]
int primary_bank_start_ammo[MAX_SHIP_PRIMARY_BANKS]
struct ship_effect ship_effect
int turret_swarm_info_index[MAX_TFP]
char targeting_laser_bank
int shield_armor_type_idx
float afterburner_trail_life
void object_jettison_cargo(object *objp, object *cargo_objp)
int last_fired_weapon_signature
int current_tertiary_bank
int ship_squadron_wing_lookup(const char *wing_name)
bool ship_fighterbays_all_destroyed(ship *shipp)
bool turret_fov_test(ship_subsys *ss, vec3d *gvec, vec3d *v2e, float size_mod=0)
int valid_cap_subsys_cargo_list(char *subsys_name)
float ship_get_secondary_weapon_range(ship *shipp)
int ship_query_state(char *name)
void ship_process_targeting_lasers()
int ship_class_compare(int ship_class_1, int ship_class_2)
void ship_subsystem_delete(ship *shipp)
void ship_set_eye(object *obj, int eye_index)
int ship_get_sound(object *objp, GameSoundsIndex id)
Returns a ship-specific sound index.
char overhead_filename[MAX_FILENAME_LEN]
struct exited_ship exited_ship
SCP_vector< ship_counts > Ship_type_counts
float afterburner_recover_rate
float landing_max_rot_angle
int TARGET_SHIP_IGNORE_FLAGS
float max_shield_recharge
struct ship_weapon ship_weapon
int ship_primary_bank_has_ammo(int shipnum)
float max_shield_recharge
int shield_recharge_index
particle_effect impact_spew
int ship_tvt_wing_lookup(const char *wing_name)
int burst_counter[MAX_SHIP_PRIMARY_BANKS+MAX_SHIP_SECONDARY_BANKS]
int get_max_ammo_count_for_primary_bank(int ship_class, int bank, int ammo_type)
int primary_bank_slot_count[MAX_SHIP_PRIMARY_BANKS]
int wing_name_lookup(const char *name, int ignore_count=0)
int ship_launch_countermeasure(object *objp, int rand_val=-1)
char ship_name[NAME_LENGTH]
int allowed_weapons[MAX_WEAPON_TYPES]
int special_exp_shockwave_speed
float afterburner_burn_rate
int get_default_player_ship_index()
Returns the index of the default player ship.
thrust_pair_bitmap thruster_distortion_info
size_t primary_bank_pattern_index[MAX_SHIP_PRIMARY_BANKS]
int last_fired_weapon_index
float GetDamage(float damage_applied, int in_damage_type_idx, float diff_dmg_scale)
float thruster02_glow_rad_factor
float sup_shield_repair_rate
float convergence_distance
int debris_damage_type_idx
int ship_find_num_turrets(object *objp)
int thrusters_start[MAX_MAN_THRUSTERS]
int last_fired_weapon_info_index
SCP_map< GameSoundsIndex, int > ship_sounds
particle_effect split_particles
size_t secondary_bank_pattern_index[MAX_SHIP_SECONDARY_BANKS]
float secondary_point_reload_pct[MAX_SHIP_SECONDARY_BANKS][MAX_SLOTS]
float afterburner_trail_alpha_factor
float auto_shield_spread_min_span
float max_shield_regen_per_second
struct cockpit_display_info cockpit_display_info
generic_anim thruster_bitmap
void ship_secondary_changed(ship *sp)
#define MAX_SHIP_DETAIL_LEVELS
SCP_vector< man_thruster_renderer > Man_thrusters
float debris_min_rotspeed
int primary_next_slot[MAX_SHIP_PRIMARY_BANKS]
ship_subsys * ship_get_closest_subsys_in_sight(ship *sp, int subsys_type, vec3d *attacker_pos)
SCP_vector< int > ship_class