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