16 { 0, 8, 6, 5, 0, 3, 5, 5, 7, 6 },
17 { 0, 8, 6, 5, 4, 3, 4, 0, 4, 4 },
18 { 1, 2, 5, 2, 7, 3, 4, 7, 5, 1 },
19 { 1, 4, 1, 5, 2, 3, 4, 7, 2, 1 },
20 { 4, 4, 4, 4, 0, 8, 6, 5, 4, 0 }
75 unsigned char *weapons;
79 for (; (short)(
signed char)weapons[0] > weapon; weapon++) {
113 for (; count > weapon; weapon++) {
115 weapon].type == 0x0b)
124 unsigned char *weapons;
129 for (; (short)(
signed char)weapons[0] > weapon; weapon++) {
179 short matchLoadedType)
196 for (i = 10; i <= 66; i++) {
203 for (i = 10; i <= 66; i++) {
211 for (i = 10; i <= 66; i++) {
221 for (i = 10; i <= 66; i++) {
245 if (obj == -1 && owner == 0 && type >= 7 && type < 11)
252 short matchLoadedType)
271 for (; (short)(
signed char)loadout[0] > weapon && selected == 0;
275 .objectClass == objectClass &&
288 struct ShipLoadout *slots;
297 if (slots->count - 1 > weapon) {
298 for (index = weapon; slots->count - 1 > index; index++) {
299 slots->slots[index].type = slots->slots[index + 1].type;
300 slots->slots[index].mount = slots->slots[index + 1].mount;
301 slots->slots[index].disabled = slots->slots[index + 1].disabled;
302 slots->slots[index].weaponType =
303 slots->slots[index + 1].weaponType;
309 if (slots->count < 0x10)
310 slots->slots[slots->count].disabled = 1;
314 if (
any_selected((
unsigned char *)slots, objectClass) == 0) {
333 weaponCount = (short)(
signed char)
336 for (weaponIndex = 0; weaponIndex < weaponCount; weaponIndex++) {
348 short matchResourceType)
351 unsigned char *animation;
358 if (matchResourceType != 0) {
359 for (weapon = 0; weapon < 5; weapon++) {
487 while (weapon-- > 0) {
490 weapon].disabled == 0) {
494 weapon].weaponType].objectClass ==
523 if (animation == 0) {
526 (short)(typeData->
yawRate + frameIndex);
539 short totalError,
short rate)
541 if (totalError != 0) {
546 rate =
MaxShort(1, (
short)(abs(*rotation - *goal) * rate /
548 if (*goal != *rotation || abs(*rotation) > rate) {
550 *rotation = (short)(*rotation +
553 (
short)(
MinShort(*goal, rate) - *rotation),
557 *rotation = (short)(*rotation +
560 (
short)(
MaxShort(*goal, (
short)-rate) -
569 *goal =
MaxShort((
short)(*goal - *rotation), 0);
571 *goal =
MinShort((
short)(*goal - *rotation), 0);
606 rate = (short)(turnScale * rate / 100);
613 rate = (short)(turnScale * rate / 100);
620 rate = (short)(turnScale * rate / 100);
647 turnScale / 100 + turnAbility);
649 turnScale / 100 + turnAbility);
655 overshoot = (short)(overshoot / turnAbility);
666#pragma intrinsic(abs)
692 if (abs(delta) > acceleration)
731 for (j = (
short)(outer + 1);
835 if (attacker != -1 &&
855 return explode(attacker, victim);
857 if (attacker != -1 &&
912 for (ally = 1; ally < 10; ally++) {
942 damage = (short)(damage - *protection);
946 *protection = (short)-damage;
947 if (attacker != -1 &&
958 if (attacker != -1 &&
968 if (sideProjection > 0xb5)
970 else if (sideProjection < -0xb5)
973 damage = (short)(damage - *protection);
985 destroyed =
explode(attacker, victim);
991 victim, damage, quadrant);
993 if (destroyed == 1) {
1003 *protection = (short)-damage;
1021 }
else if (
skill_check(obj, 9) == 0 && obj != 0) {
1052 return debris != -1;
1061 for (; other < 10; other++) {
1078 short damage,
short quadrant)
1106 MaxShort(1, (
short)(damage >> 3)));
1111 if (ship != -1 && ship < 10 &&
1122 MaxShort(1, (
short)(damage / 10)));
1129 return explode(attacker, victim);
1136 MaxShort(1, (
short)(damage / 40)));
1138 damage =
MaxShort(1, (
short)(damage / 6));
1143 while (damage > 0) {
1177 (
short)((
signed char)
1186 return explode(attacker, victim);
1200 return explode(attacker, victim);
1208 type].lifetime / 4));
1211 return explode(attacker, victim);
1259 if (weapon != candidate &&
1263 weaponType].objectClass ==
1267 return otherGuns == 0;
1288 damage =
MaxShort(1, (
short)(damage >> 4));
1294 damage =
MaxShort(1, (
short)(damage >> 7));
1300 damage =
MaxShort(1, (
short)(damage >> 5));
1311 while (damage > 0) {
1317 if (quadrant != 0) {
1332 }
else if (roll < 7) {
1339 if (quadrant != 0) {
1349 if (quadrant != 0) {
1365 if (quadrant != 1) {
1399 craftType].lifetime / 4));
1408 if (quadrant != 1) {
1428 sprintf(message,
"%s FIXD",
1473 for (piece = 0; piece < count; piece++) {
1496 for (i = 0; i < 10; i++) {
1505 if (objectiveData->
type == 5 &&
1518 for (obj = 0; obj < 10; obj++) {
1537 for (obj = 1; obj < 10; obj++) {
1565 for (i = 0; i < 5; i++) {
1574 for (index = 0; index < 7; index++) {
1595 for (index = 0; index < 8; index++) {
1654 score = (short)(amount * 2);
1715 if (attacker == 0) {
1718 for (initialShip = 0; initialShip < 8; initialShip++) {
1720 .initialMissionShips[initialShip] ==
1737 for (target = 0; target < 10; target++) {
1738 if (obj != target &&
1754 else if (range > 500)
1758 damage = (short)((blastDamage / range) / range);
1766 damage =
MaxShort(1, (
short)(damage * 3 >> 2));
1777 MinShort(2500, (
short)(damage * 4)),
1788 unsigned short savedScale;
1790 short explosionType;
1794 if (explosion == -1) {
1848 for (slot = 0; slot < 8; slot++) {
1870 for (slot = 0; slot < 4; slot++)
1974 if (attacker != -1 &&
2002void fire_flack(
short owner,
short explosion,
short range,
2035 for (obj = 0; obj < 10; obj++) {
2070 short weaponVelocity;
2088 if (missileOk != 0 &&
2093 if (missileOk != 0 &&
2109 (short)(*(
int *)&stats->
lifetime * weaponVelocity);
2110 reachable = weaponRange > distance;
2116 ready != 0 && reachable != 0) {
2138 if (shouldFire != 0)
2144 if (shouldFire != 0) {
2159 if (missileOk != 0 && reachable != 0) {
2165 if (shouldFire != 0 &&
2169 for (; other < 10; other++) {
2210 if (shouldFire != 0) {
2237 short projectileVelocity;
2242 if (burstMode == 0) {
2243 lifetime = (short)(range / projectileVelocity - 5 -
2248 projectileVelocity = 220;
2250 (short)(range / projectileVelocity);
2287 short predictionSteps;
2291 if (burstObject != -1) {
2292 aimRadius =
MaxShort(400, (
short)(range >> 3));
2295 if (burstMode == 0) {
2306 if (burstMode != 0) {
2309 predictionSteps = (short)(range / 70);
2310 if (predictionSteps < 0)
2311 predictionSteps = 0;
2312 if (predictionSteps > 20)
2313 predictionSteps = 20;
2315 predictionSteps << 8, &targetMotion);
2317 fire_flack(obj, burstObject, range, &burstPoint, burstMode);
2324 fire_flack(obj, burstObject, range, &burstPoint, burstMode);
2343 for (other = 0; other < 10; other++) {
2357 short targetHemisphere;
2367 targetRange = 10000;
2373 turret++, fitting++) {
2375 turret].type == 0x0c)
2382 turret++, fitting++) {
2383 if (fitting->
type == 0x0d || fitting->
type == 0x0e)
2391 if (fitting->
type == 0x0c) {
2392 for (candidate = 1; candidate < 10; candidate++) {
2402 (
short)(mounts * 4 - 1)) == 0) {
2404 (
signed char)candidate;
2413 if (hostiles != 0) {
2415 (
short)(hostiles - 1));
2422 if (fitting->
type != 0x0c &&
2425 if (targetHemisphere > 60 &&
2429 if (fitting->
type == 0x13) {
2432 (
signed char)lockedShip;
2437 (
signed char)lockedShip;
2445 (
signed char)lockedShip;
2452 if (pick > hostiles - 1)
2454 }
while (pick != startTarget);
2462void copy_frame(
short source,
short destination);
2467 short triggerDistance;
2470 short projectileSpeed;
2480 short weaponDataIndex;
2483 projectileSpeed = 10;
2490 if (typeCode == 0x0c) {
2496 for (target = 1; target < 10; target++) {
2508 if (missile != -1) {
2523 weaponDataIndex].lifetime;
2532 leadRange = (short)(targetRange + 100);
2534 leadRange = (short)((*(
int *)&weaponData->
lifetime + 5) *
2538 leadRange << 8, &travel);
2544 (
int)projectileSpeed << 8, &travel);
2553 if (obj == 0 && typeCode != 0x14)
2582 interceptScale, &travel);
2602 if (triggerDistance > 9 ||
2617 0xa00, &mountOffset);
2689 weapon++, index++) {
2693 if (index->
type != 0x13 ||
2697 if ((index->
type == 0x10 || index->
type == 0x12 ||
2698 index->
type == 0x13) &&
2722 weapon++, index++) {
2760 angle = (short)(180 - angle);
2762 angle = (short)-angle;
2773 short *exhaustTable;
2781 for (ship = 0; ship < 10; ship++) {
2795 if (exhaustTable != 0) {
2808 tableOffset = exhaustTable[viewFrame];
2809 if (tableOffset != -1) {
2811 (
short *)((
unsigned char *)exhaustTable +
2813 while (*exhaustTable != -1) {
2818 shapeFrame = *exhaustTable++;
2819 scale = *exhaustTable++;
2822 scale = (short)(scale +
2826 scale = (short)(scale +
2830 scale = (short)(scale - 0x20);
2844 (short)(shapeFrame * 3 +
2851 shapeFrame * 2 + 12);
2880 (short)((
unsigned short)
2890 (short)((
unsigned short)
2904 (short)((
unsigned short)
2909 right *= (
unsigned short)
2914 up *= (
unsigned short)
2957 for (shield = 0; shield <= 1; shield++) {
2975 short maximumShield;
2998 if (maximumShield > shieldEnergy) {
3020 amount = (short)(amount - 2);
void(__cdecl *g_pIxFree)(void *)
void SetVectorFixedPoint(unsigned int *p, short v)
int RandomFixedAimComponent(short radius, short speed, short maximum)
void ComputeVectorDelta(FixedVector *from, FixedVector *to, FixedVector *delta)
void housekeep_power_plant_and_fuel(short ship)
short your_internal_damage(short attacker, short owner, short damage, short quadrant)
short HasShipActiveMissile(short obj)
void replenish_shields(short ship)
void damage_ion_drive(short ship, short amount, short maximum)
short kilrathi_near(short obj, short range)
void set_special(short ship, short special)
short pilot_hit(short obj)
short ShipExplosion(short obj)
short HasShipCockpitGunDisplay(short ship)
void fire_super_brake(short ship)
short fire_missile(short ship)
short MaxShort(short a, short b)
long MultiplyFixed(int left, int right)
void IncreaseAdaptiveDifficulty(void)
int send_at_point(short obj, FixedVector *point, short speed)
short explode(short attacker, short victim)
void place_damage_on_cockpit(short damage)
void FillFixedVectorWithRandomComponents(short limit, FixedVector *vector)
int dot_product(const FixedVector *left, const FixedVector *right)
signed char damage_your_component(char component, char amount, char maximum)
void Create_ship_hit_debris(short obj, short count)
void remove_object(short obj)
void fire_afterburner(short obj, short time)
long Vector_magnitude(const FixedVector *vector)
void ejection_sequence(short outcome, signed char restoreCockpit)
void Create_explosion_debris(short obj)
void AddFixedVectors(const FixedVector *left, const FixedVector *right, FixedVector *sum)
unsigned int match_rotation_goal(short *rotation, short *goal, short totalError, short rate)
void position_child(short parent, short weapon, FixedVector *position)
void affect_mission_score(short pilot, int event, short amount)
void check_next_wave(void)
short RandomSign(short v)
void rotate_object_to_goal(short obj)
void your_afterburner(void)
void repair_internal_damage(void)
void ScaleFixedVector(FixedVector *vector, int scale, FixedVector *result)
void replenish_weapon_energy_bank(short ship)
short ShipHasCloakingDevice(short ship)
short onboard_explosion(short obj)
int launch_object(short parent, short child, FixedVector direction, short speed)
short FixedToShortSaturating(int value)
short get_ship_slot(void)
long SinFixed(short degrees)
short MinShort(short a, short b)
void check_for_lost_control(short obj)
short any_enemy(short obj, short range)
short find_ratio(short inputMinimum, short inputMaximum, short input, short outputMinimum, short outputMaximum)
short fire_weapon(short obj, short weapon)
short get_ship_max_velocity(short obj)
short inflict_damage(short attacker, short victim, short damage, const FixedVector *impactDirection)
void InvalidateVduMode(short i)
short skill_check(short obj, short margin)
short CanShipWeaponDamageTarget(short ship, short target)
void analyze_kill(short attacker, short victim)
short ResolveObjectDestruction(short attacker, short victim)
short distance_from_object(short obj, short other)
short find_child_object(short parent, short objectClass)
short vector_angle(FixedVector left, FixedVector right)
unsigned int approach_speed(short ship, int targetSpeed)
void copy_frame(short source, short destination)
short SpawnFlakBurst(short obj, short range, FixedVector *hardpoint, short burstMode)
void apply_force_to_objects_center(FixedVector *force, short obj)
short internal_damage(short attacker, short owner, short victim, short damage, short quadrant)
void ResetShipCloakState(short ship)
short find_weapon(short obj, short weaponType)
void steady_object(short ship)
short any_selected(unsigned char *loadout, short objectClass)
long CosFixed(short degrees)
void RemovePlayerReleaseWeapon(signed char weapon)
void ShowComponentHitHudMessage(const char *text, unsigned short colour, short flashCount)
void InitializeShipWeaponTypeIndices(short obj)
short GetAdaptiveTurnRate(void)
void fire_fixed_projectile_weapon(short obj)
short build_target_list(short obj, short range)
void animate_shape(short obj)
void zero_vector(FixedVector *vector)
void child_object(short hardpoint, short child, short parent)
void SubtractFixedVectors(FixedVector *left, FixedVector *right, FixedVector *difference)
short real_velocity(short obj)
void revise_shields(short obj)
void SortViableTargetsByDistance(void)
void select_new_gun(void)
unsigned int fix_velocity(short obj)
short RandomBelow(short n)
void MakeRandomVectorFixed(short minimum, short maximum, FixedVector *vector)
void check_computer_damage(void)
short hemisphere(FixedVector *target, FixedVector *parent, FixedVector *hardpoint)
short malf(char component)
void new_space_music_changes(short attacker, short victim)
void BeginShipDestructionSequence(short obj)
void remove_weapon(short obj, short weapon)
short ReportComponentRepaired(short component, short minimumDamage)
short find_vacant_3d_object(void)
void place_exhaust_on_ships(void)
short IsCapitalShipObject(short obj)
void reposition_fixed_child_objects(void)
void get_facing_range_from_object(short obj, short other)
short flip_angle(short ship, short angle)
short new_object(short type, short owner)
void PlaySfxWaveFileByNumber(int soundNumber, int sourceObject, int looping)
short Explosion(short obj)
void point_at(short obj, FixedVector point)
void fire(short obj, short target)
void send_message(short obj, signed char message)
void flag_objective(short objective, unsigned char flags)
void call_enemy(short obj)
void ProcessEnemyWaveCompletion(void)
void RecordCannedSceneObjectEvent(short obj, int event)
void fire_flack(short owner, short explosion, short range, FixedVector *aim, short burstMode)
void divide_vector(FixedVector *vector, int divisor, FixedVector *result)
void TriggerPlayerHitPaletteFlash(void)
void recalc_max_velocity(short ship)
short find_child_ship(short parent, short objectClass, short target)
void score_for_kill(short pilot, short victim)
void celerate(short ship, int delta)
short initialize_ship(short type, short owner, short matchLoadedType)
void select_new_release_weapon(short preferredType)
short ShipHasTorpedo(short ship)
short IsOnlyShipGun(short ship, short weapon)
void vector_component_in_dir(const FixedVector *vector, const FixedVector *direction, FixedVector *component)
void accelerate(short amount)
void send_appropriate_message(short attacker, short victim)
short CountShipProjectiles(short ship)
short fire_turrets(short obj)
short set_up_next_wave(void)
void DecreaseAdaptiveDifficulty(void)
unsigned short RandomInRange(unsigned short lo, unsigned short hi)
void FreePacketAndClear(void *slot, unsigned short releaseFlags)
void set_objects_data(short obj, short type, short owner, short matchObjectClass)
short find_ship_index(short missionShip)
unsigned int SignFixed(int v)
short initialize_object(short obj, short type, short owner, short matchLoadedType)
void reset_maneuver(short ship, short maneuver)
short RandomBelowOrEqual(short n)
void explosion_shock_wave(short obj, short blastDamage)
short NormalizeFixedVector(FixedVector *vector)
void drain_fuel(short ship, short amount)
short alert_flag(short ship, unsigned int bits)
int GetShipAccelerationRate(short ship)
Shared Win32 declarations, types and library interfaces.
#define OBJECT_DATA_CHAFF_POD
#define OBJECT_DATA_SPACE_DUST
#define OBJECT_DATA_DEBRIS_DUST
#define OBJECT_DATA_EXPLOSION_SMALL
#define SPACE_LAST_MOVING_OBJECT
#define OBJECT_DATA_O_RING
#define OBJECT_DATA_ROCK_CHUNK
#define OBJECT_DATA_ASTEROID6
#define OBJECT_DATA_EXPLOSION_MEDIUM
#define OBJECT_DATA_ASTEROID4
#define OBJECT_DATA_BURNING_DEBRIS
#define OBJECT_DATA_GIRDER_CHUNK
#define OBJECT_DATA_METAL_SHEET
#define SPACE_OBJECT_COUNT
#define OBJECT_DATA_TORPEDO
#define OBJECT_DATA_SHIP_WING
#define OBJECT_DATA_ASTEROID5
#define OBJECT_DATA_ASTEROID1
@ SPECIAL_MANEUVER_BLOWING_UP
@ SPECIAL_MANEUVER_SUPER_BRAKE
@ SPECIAL_MANEUVER_UNKNOWN_9
@ SPECIAL_MANEUVER_KILL_ENGINES
@ SPECIAL_MANEUVER_AFTERBURNER
#define OBJECT_DATA_ASTEROID3
#define OBJECT_DATA_EXPLOSION_LARGE
#define OBJECT_DATA_SHIP_TUBING
#define MISSION_OBJECTIVE_COUNT
@ OBJECT_CLASS_FIXED_OBJECT
@ OBJECT_CLASS_CAPITAL_SHIP
@ OBJECT_CLASS_PROJECTILE
#define OBJECT_DATA_ASTEROID2
short g_nObjectType62Index
short g_asObjectScreenAngle[SPACE_OBJECT_COUNT]
short g_asObjectCollisionRadius[SPACE_OBJECT_COUNT]
short g_aasPlayerDamageSystemTable[5][10]
short g_aasShipMaximumShield[10][2]
short g_asShipAfterburnerTimer[10]
short g_bApplyingCollisionDamage
short g_asShipMissionParameter[12]
short g_nExternalViewShip
unsigned char * g_apObjectShape[SPACE_OBJECT_COUNT]
short g_asShipFriendlyFireCooldown[10]
signed char g_acPlayerComponentDamage[9]
short g_asObjectDistance[SPACE_OBJECT_COUNT]
short g_asCapitalHitDamageStepTable[10]
signed char g_acGunRefireDelay[4]
short g_anObjectRollRotation[SPACE_OBJECT_COUNT]
short g_bAiMissileFiringEnabled
signed char g_acShipIonDriveDamage[16]
short g_nPendingEjectionSequenceCount
short g_7_asShipBurstStageCountdown[10]
short g_bMissionEjectionPodSpawned
short g_nObjectType63Index
signed char g_acShipCommunicator[16]
signed char g_acShipExhaustHeat[16]
short g_aeObjectClass[SPACE_OBJECT_COUNT]
signed char g_acLastCollisionObject[SPACE_OBJECT_COUNT]
signed char g_abProjectileCollisionBonus[SPACE_OBJECT_COUNT]
short g_asViableTargetDistance[10]
short g_nSelectedReleaseWeaponIndex
signed char g_acShipTarget[16]
short g_anObjectYawRotation[SPACE_OBJECT_COUNT]
short g_asObjectType[SPACE_OBJECT_COUNT]
unsigned char g_cYellowColour
short g_aasShipShield[10][2]
short g_nEjectionSequenceState
short g_asObjectFlip[SPACE_OBJECT_COUNT]
signed char g_acShipComputerDamage[16]
ObjectTypeData g_aObjectTypeData[OBJECT_DATA_COUNT]
short g_nEscapedEnemyCount
short g_asPlayerHitsCreditValues[10]
FixedVector g_aShipForwardVector[SPACE_OBJECT_COUNT]
short g_asLoadedShipViewFrame[12]
short g_asObjectScreenX[SPACE_OBJECT_COUNT]
signed char g_abPilotEjectionAttempted[16]
short g_asWingmanDamageCredit[10]
signed char g_cMissionObjectiveCount
unsigned char * g_pGenericMissileShape
short g_aeSpecialManeuver[12]
signed char g_acMissionShipStatusFlagsBytes[8]
signed char g_acShipPortrait[12]
unsigned short g_asObjectScale[SPACE_OBJECT_COUNT]
FixedVector g_aShipRightVector[SPACE_OBJECT_COUNT]
short g_bJumpSequenceActive
short g_asShipWeaponEnergy[10]
short g_bMissileLockAcquired
short g_bDeathSequenceActive
signed char g_10_abExplosionEntityDoneBytes[SPACE_OBJECT_COUNT]
unsigned char g_ucPendingEjectionTransition
unsigned char * g_pGenericMissileExhaustShape
signed char g_acViableTarget[16]
signed char g_acObjectOwner[SPACE_OBJECT_COUNT]
short g_bExplosionTraversalIdle
short g_asObjectDamage[SPACE_OBJECT_COUNT]
short g_asObjectScreenScale[SPACE_OBJECT_COUNT]
short g_anObjectPitchRotation[SPACE_OBJECT_COUNT]
ShortPoint g_116_aWeaponDisplayPositions[16]
short g_8_bUserDestroyedFlag
signed char g_acShipList[16]
short g_asShipMaximumVelocity[12]
short g_asObjectAnimationIndex[SPACE_OBJECT_COUNT]
signed char g_acObjectCollisionGraceTicks[SPACE_OBJECT_COUNT]
short g_nSavedPlayerTarget
int g_anShipSpeed[SPACE_OBJECT_COUNT]
unsigned char g_aShipWeapons[10][0xA1]
short g_aeShipHitDebrisTypes[4]
short g_asMissileProximityFuseValues[16]
unsigned char g_cRedColour
signed char g_36_cPilotKillCountValue
short g_9_nScreenMessageTimeNumber
signed char g_abShipEjectionSequenceEnabled[12]
int g_anShipCloakState[10]
unsigned char * g_apObjectExhaustShape[10]
short g_bEjectionTriggerImmediately
signed char g_4_acInitialShipKillNumber[8]
signed char g_acPilotHitPoints[16]
FixedVector g_aShipPosition[SPACE_OBJECT_COUNT]
short g_nLastAdaptiveDifficultyChangeFrame
short g_bExpandedShipGraphicsEnabled
short g_1_asObjectCreationFrameTable[SPACE_OBJECT_COUNT]
FixedVector g_aShipUpVector[SPACE_OBJECT_COUNT]
short g_asShipManeuver[12]
short g_bPlayerDamageEnabled
short g_bEjectionWaitForEnemyWave
FixedVector g_aShipVelocity[SPACE_OBJECT_COUNT]
short g_asShipMissionIndex[12]
int g_3_bAfterburnerSfxActive
short g_bTargetLockActive
signed char g_acShipStress[16]
short g_asShipTurretFireEnabled[10]
short g_aeShipObjective[12]
ObjectResourceSlot g_aObjectResourceSlots[5]
MissionObjective g_aMissionObjectives[MISSION_OBJECTIVE_COUNT]
short g_nTargetCameraZoom
signed char g_cViableTargetCount
short g_asShipListRange[16]
MissionShipRecord g_aMissionShips[MISSION_SHIP_COUNT]
short g_aasShipArmor[10][4]
int g_6_nPendingAfterburnerSfxFrame
signed char g_acShipDamage[16]
signed char g_acShipLastAttacker[16]
PilotProfile g_stCurrentPilotProfile
short g_asShipMissionType[12]
short g_bFriendlyFireWarningIssued
signed char g_acObjectType[SPACE_OBJECT_COUNT]
short g_asDifficultyLevels[16][4]
short g_nLastFriendlyFireObjectFrame
short g_nAdaptiveDifficulty
signed char g_acObjectAnimationDelay[SPACE_OBJECT_COUNT]
short g_asObjectScreenY[SPACE_OBJECT_COUNT]
short g_asObjectCounter[SPACE_OBJECT_COUNT]
short g_1_nGunShowEnergyPercent
MissionHeader g_13_stMissionHeaderBlock
short g_bMissionDeathSequencePending
short g_nTargetLockCountdown
const char * g_apszComponentNames[9]
short g_asObjectViewFrame[SPACE_OBJECT_COUNT]
static short g_aaeExplosionDebris[4][7]
unsigned char * animation
unsigned char weaponLoadout[0xA1]