21 { 0, 0, 0 }, { -750, 0, 0 }, { 750, 0, 0 }, { 0, 0, -750 },
22 { 0, 0, 750 }, { -750, 0, -750 }, { 750, 0, -750 },
26 { 0, 0, 0 }, { 750, 0, 0 }, { -750, -100, -250 },
27 { 1500, -100, -250 }, { -1500, -200, -500 },
28 { -2250, -300, -750 }, { 2250, -200, -500 },
32 { 0, 0, 0 }, { 750, 0, -500 }, { -750, 0, -500 },
33 { 0, 0, -1000 }, { -1500, 0, -1000 }, { -750, 0, -1500 },
34 { 1500, 0, -1000 }, { 750, 0, -1500 }
37 { 0, 0, 0 }, { 750, 0, -250 }, { 0, 325, -500 },
38 { 750, -325, -750 }, { 0, 325, -500 }, { 750, -325, -750 },
39 { 0, 0, -1000 }, { 750, 0, -1250 }
42 { 0, 0, 0 }, { 0, 0, -750 }, { -750, 0, -500 },
43 { -750, 0, -1250 }, { 750, 0, -500 }, { 750, 0, -1250 },
44 { 0, 500, -500 }, { 0, 500, -1250 }
48 5, 5, 4, 4, 3, 1, 1, 0
81 for (index = 0; index < 16; index++)
113 for (index = 0; index < 10; index++) {
127 for (index = 0; index < 5; index++)
183 while (weapon-- > 0) {
184 if (((
struct ShipLoadout *)
g_aShipWeapons)[obj].slots[weapon].disabled == 0) {
186 ((
struct ShipLoadout *)
g_aShipWeapons)[obj].slots[weapon].weaponType].objectClass == 8) {
209#pragma function(strcat, strcpy)
216 unsigned char *keptAnimation;
217 unsigned char *savedShape;
219 unsigned char *savedShapeSet;
229 strcpy(filename,
"altships.");
231 strcat(filename,
"0");
233 strcat(filename,
"0");
245#pragma intrinsic(strcat, strcpy)
257 for (source = 0; source < 8; source++) {
285 short playerMissionShip;
290 for (slot = 0; slot < 7; slot++)
319 for (slot = 0; slot < 9; slot++)
323 for (slot = 0; slot < 8; slot++) {
326 if (playerMissionShip != -1) {
328 if (portraitIndex == 25 ||
361 for (obj = 0; obj < 10; obj++) {
378 for (slot = 0; slot < 5; slot++) {
387 for (obj = 1; obj < 10; obj++) {
405 for (slot = 0; slot <= 5; slot++) {
413#pragma function(strcat, strcpy, strlen)
416 short objectClass,
short slot)
420 char resourceNumber[4];
424 if (resourceType != -1) {
428 strcpy(fileName,
"missile.v");
430 strcpy(fileName,
"ship.v");
434 strcpy(fileName,
"xship.v");
436 itoa((
int)resourceType, resourceNumber, 10);
437 if (strlen(resourceNumber) == 1)
438 strcat(fileName,
"0");
439 strcat(fileName, resourceNumber);
443 if (objectType == 0x3d) {
448 for (entry = 1; entry < 10; entry++) {
455 }
else if (objectType == 0x2c) {
462 for (entry = 1; entry < 70; entry++) {
469 }
else if (objectType == 5) {
495 }
else if (objectType == 6) {
509 objectType != 0x33) ||
537 for (entry = 0; entry < 10; entry++) {
566 for (section = 0; section < 0x25; section++) {
567 packetRefs[section] =
569 if (packetRefs[section] == 0)
587 for (entry = 0; entry < 10; entry++) {
624 for (section = 0; section < 0x25; section++) {
645 for (obj = 1; obj < 10; obj++) {
695 for (obj = 0; obj < 10; obj++) {
708 for (slot = 0; slot < 4; slot++) {
724 for (slot = 0; slot < 4; slot++) {
733 for (
object = 0;
object < 10;
object++) {
746 for (i = 0; i < 10; i++)
755 for (slot = 0; slot < 5; slot++) {
767 for (slot = 0; slot < 5; slot++) {
779 if (resourceType != -1) {
780 for (preload = 0; preload < 3; preload++) {
798 for (slot = 1; slot < 4; slot++) {
807 for (preload = 0; preload < 3; preload++) {
843 switch ((
unsigned char)navPoint->
waveCommands[offset]) {
849 strcpy(fileName,
"altint.");
851 strcat(fileName,
"0");
853 strcat(fileName,
"0");
854 strcat(fileName, itoa((
int)number, digits, 10));
868 switch ((
unsigned char)
873 (
signed char)ejectTarget;
878 (
signed char)ejectTarget;
882 (
signed char)ejectTarget;
887 (
signed char)ejectTarget;
899 (
signed char)ejectTarget;
915 offset = (short)(offset + 3);
919#pragma intrinsic(strcat, strcpy)
943 for (stale = 0; stale < 10; stale++) {
958 for (leftover = 1; leftover < 10; leftover++) {
981 for (slot = 0; slot < 10; slot++) {
987 for (slot = 0; slot < 8; slot += 2) {
988 if (((
signed char *)point->
triggers)[slot] != -1) {
989 trigger = ((
signed char *)point->
triggers)[slot + 1];
991 ((
signed char *)point->
triggers)[slot];
1045 if (obj == -1 || obj == 0)
1069 if (waveRecord->
type == prevWave) {
1078 waveRecord->
type = -1;
1079 for (entry = 0; entry < 10; entry++) {
1097 difference->
x = left->
x - right->
x;
1098 difference->
y = left->
y - right->
y;
1099 difference->
z = left->
z - right->
z;
1164 for (gun = 0; gun < 3; gun++)
1204 if (record->
name[0] ==
'?')
1223 for (index = 0; index < 8; index++) {
1238 for (other = 1; other <= 9; other++) {
1263 if (missionShip == -1)
1266 shipType = record->
type;
1269 if (objectType == 0x3d || objectType == 0x2c) {
1276 }
else if (objectType == 5 || objectType == 6) {
1280 (
short)(record->
speed + 3000),
1286 if (record->
pilot == 5 && record->
side == 0)
1291 record->
navPoint = (
signed char)navPoint;
1311#pragma function(strcat, strcpy)
1323 short shipIntelFile;
1325 char intelDigits[8];
1348 for (navEntry = 0; navEntry < 10; navEntry++) {
1349 for (member = 0; member < 10;
1352 .missionShips[member] ==
1393 for (index = 0; index < 5; index++)
1394 usedSlots[index] = 0;
1397 for (index = 0; index < 10; index++) {
1403 shipIntelFile * 100 + intelNum) {
1408 (short)(shipIntelFile * 100 + intelNum);
1413 for (index = 0; index < 5; index++) {
1414 if (usedSlots[index] == 0)
1419 (short)(shipIntelFile * 100 + intelNum);
1421 strcpy(filename,
"intel.0");
1422 if (shipIntelFile != 0)
1423 strcpy(filename,
"intelshp.0");
1425 strcat(filename,
"0");
1426 itoa((
int)intelNum, intelDigits, 10);
1427 strcat(filename, intelDigits);
1444 }
else if (shipIntelFile == 0) {
void clear_alert(short obj)
void set_formation_position(short obj, const MissionShipRecord *record)
short find_ships_sphere(short missionShip)
void ComputeVectorDelta(FixedVector *from, FixedVector *to, FixedVector *delta)
void load_ship(short resourceType, short objectType, short objectClass, short slot)
void Build_objective_list(void)
void Set_up_ship_info(short obj, short missionShip, signed char navPoint)
short IsVectorWithinRange(FixedVector *vector, short range)
void init_mission(short series, short mission)
short HasShipCockpitGunDisplay(short ship)
void LoadMissionData(short series, short mission)
void initialize_view_buffer(void)
short explode(short attacker, short victim)
void LoadCommPortraitResources(short portrait)
void InitializeCockpitResources(short shipType)
short LocateMobileObjective(short objective)
void free_ship(short slot)
void remove_object(short obj)
void alter_pitch(short angle, short obj)
short is_alive(signed char pilot)
short shape_needed(const MissionNavPoint *navPoint, short resourceType)
void ejection_sequence(short outcome, signed char restoreCockpit)
short get_shape_slot(void)
void add_hazard_field(short type, FixedVector center, short radius, short density)
short is_team_member(short missionShip)
void AddFixedVectors(const FixedVector *left, const FixedVector *right, FixedVector *sum)
void ProcessMissionWaveCommands(MissionNavPoint *navPoint)
void alter_roll(short angle, short obj)
short ShipHasCloakingDevice(short ship)
void ReportFatalErrorCode(const char *errorCode)
void set_up_action_sphere(short navPoint)
unsigned int offset_location(short obj, const ShortVector *offset, FixedVector *location)
void LoadAlternateShipType(short resourceType, short logicalFile)
int LoadPacketResourceList(PacketResourceDescriptor *resources, short flags, int availableBytes, char *defaultFileName)
void release_all_capital_ship_shapes(void)
void init_3Space_objects(short scene)
short distance_from_object(short obj, short other)
void copy_frame(short source, short destination)
void place_ship_near_player_until_valid(short obj, short minimum, short maximum)
void load_all_slots(void)
void * AllocateTaggedMemory(unsigned int size, short flags)
void ApplyAlternateShipType(short obj)
void * FetchDiskPacketRetrying(char *fileName, short section, short flags)
void alter_yaw(short angle, short obj)
void remove_nav_point_objects(void)
void find_next_ship_turn_slot(short obj)
void check_futurion(short i)
void InitializeShipWeaponTypeIndices(short obj)
void init_intelligence_data(short obj)
void release_capital_ship_shapes(short resourceType)
void zero_vector(FixedVector *vector)
void ResetWeaponDisplayPositions(void)
short locate_ship(short missionShip, FixedVector *point)
short init_ship(short missionShip, short navPoint)
void prepare_mission(void)
short shape_loaded(short resourceType)
void * LoadPacketIntoBuffer(char *fileName, short section, void *destination, int registerHandle)
void sub_int_vector(const ShortVector *left, const ShortVector *right, ShortVector *difference)
void flag_objective(short objective, unsigned char flags)
void ReleasePacketHandle(void *handle)
short room_for_me(short obj, short minimum)
void RefreshObjectiveShipNavPoints(void)
void recalc_max_velocity(short ship)
void random_radial(const FixedVector *center, short radius, FixedVector *position)
short initialize_ship(short type, short owner, short matchLoadedType)
void free_all_slots(void)
void reset_mission_type(short obj, short missionType)
void new_sphere_shapes(MissionNavPoint *navPoint)
void clean_up_cockpit(void)
short set_up_next_wave(void)
void free_view_buffer(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)
void set_sphere_point(const MissionShipRecord *record, FixedVector *position)
short FindObjectResourceSlot(short resourceType)
void remove_all_hazards(void)
void ResetCannedSceneRecording(void)
Shared Win32 declarations, types and library interfaces.
#define HOST_POINTER_SIZE
#define LOAD_OBJECT_TYPE_RECORD(fileName, section, record)
#define SPACE_LAST_MOVING_OBJECT
@ MISSION_TYPE_WARP_ARRIVE
#define SPACE_OBJECT_COUNT
#define OBJECT_DATA_SHIP_WING
#define OBJECT_DATA_EJECTED_PILOT
@ OBJECT_CLASS_CAPITAL_SHIP
short g_asObjectScreenAngle[SPACE_OBJECT_COUNT]
MissionShipRecord * g_apShipMissionRecord[10]
short g_asShipCloakCooldown[10]
signed char g_acShipNavPoint[12]
short g_27_aasGunCooldown[10][3]
short g_asObjectCollisionRadius[SPACE_OBJECT_COUNT]
short g_asProjectileEvasionTicks[8]
short g_bCockpitDamageFrame2Shown
short g_aasShipMaximumShield[10][2]
short g_2_asCarrierLaunchTimer[10]
short g_bMissionShipInitializationInProgress
ShortVector g_aShipFormationOffset[10]
short g_bCockpitDamageFrame0Shown
short g_asShipMissionParameter[12]
unsigned char * g_apObjectShape[SPACE_OBJECT_COUNT]
short g_asShipFriendlyFireCooldown[10]
short g_nCurStellarSystem
short g_bBriefingMapActive
signed char g_acPlayerComponentDamage[9]
short g_nEnemyTauntCommandBase
short g_asCapitalHitDamageStepTable[10]
short g_78_bHighMemoryBuffersSetState
short g_bFuelGaugeDamaged
unsigned char g_aShipIntelligenceData[5][0x51]
signed char g_acShipIonDriveDamage[16]
short g_nPendingEjectionSequenceCount
signed char g_acShipCommunicator[16]
signed char g_acShipExhaustHeat[16]
short g_asSpikeriCooldown[16]
short g_aeObjectClass[SPACE_OBJECT_COUNT]
signed char g_acLastCollisionObject[SPACE_OBJECT_COUNT]
short g_nSelectedReleaseWeaponIndex
short g_asShipIdentified[12]
signed char g_acShipTarget[16]
signed char g_13_abShipArrivalMessageSent[16]
signed char g_cCurrentObjective
short g_asObjectType[SPACE_OBJECT_COUNT]
short g_aasShipShield[10][2]
short g_bKilrathiAceGreetingSent
short g_nEjectionSequenceState
short g_asObjectFlip[SPACE_OBJECT_COUNT]
signed char g_acShipComputerDamage[16]
signed char g_acShipCollisionCooldown[16]
short g_asSpikeriLaunchCountdown[10]
ObjectTypeData g_aObjectTypeData[OBJECT_DATA_COUNT]
short g_nEscapedEnemyCount
PacketResourceDescriptor g_aMissionResourceDescriptors[8]
MissionNavPoint g_aMissionNavPoints[MISSION_NAV_POINT_COUNT]
short g_asPlayerHitsCreditValues[10]
short g_asLoadedShipViewFrame[12]
short g_asObjectScreenX[SPACE_OBJECT_COUNT]
int g_98_nMemConfiguration
signed char g_abPilotEjectionAttempted[16]
short g_asWingmanDamageCredit[10]
short g_bWingmanKilledThisMission
short g_asShipIntelSlot[10]
signed char g_cMissionObjectiveCount
int g_11_nMissionResourceBudget
short g_aeSpecialManeuver[12]
short g_nSelectedCampaignSlot
signed char g_acShipPortrait[12]
unsigned short g_asObjectScale[SPACE_OBJECT_COUNT]
short g_nCommDeathSequenceFrame
short g_bJumpSequenceActive
short g_asShipWeaponEnergy[10]
signed char g_acTurnInterval[16]
short g_bMissileLockAcquired
short g_bEjectionAwaitingCommCommand
unsigned char g_ucPendingEjectionTransition
short g_nEnemyCommPilotIndex
short g_bShipResourceReloadInProgress
signed char g_acObjectOwner[SPACE_OBJECT_COUNT]
short g_6_nHomeOperationShipIndexValue
short g_asObjectDamage[SPACE_OBJECT_COUNT]
signed char g_bLandingCommRequestPending
short g_asShipIntelResourceKey[10]
ShortPoint g_116_aWeaponDisplayPositions[16]
short g_bDisplayWingmanTargetData
int g_nMissionMusicTrackOverride
signed char g_cQueuedNpcPortrait
short g_8_bUserDestroyedFlag
MissionObjectiveSource g_69_aMissionObjectiveSources[8]
ShortVector g_aaFormationPositions[5][8]
short g_anPilotTurnInterval[8]
short g_bAutopilotSequenceActive
ShipIntelligenceMetadata g_stWingmanIntelligence
int g_anShipSpeed[SPACE_OBJECT_COUNT]
short g_nMissionEntryNavOverride
unsigned char g_aShipWeapons[10][0xA1]
short g_2_asFlakCooldownTable[16]
short g_asShipIntelState[10]
signed char g_36_cPilotKillCountValue
short g_asShipWingLeader[12]
signed char g_abShipEjectionSequenceEnabled[12]
short g_asActionCount[12]
int g_anShipCloakState[10]
signed char g_acShipPendingMessage[16]
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_asShipManeuver[12]
short g_19_bStoredHighMemoryEnabled
short g_bEjectionWaitForEnemyWave
FixedVector g_aShipVelocity[SPACE_OBJECT_COUNT]
short g_asShipMissionIndex[12]
signed char g_acTurnRegulator[16]
void ** g_apPacketReferenceGroups[5]
short g_bTargetLockActive
signed char g_cQueuedNpcMessage
signed char g_acShipStress[16]
signed char g_abShipTurn[16]
short g_asShipTurretFireEnabled[10]
ObjectResourceSlot g_aObjectResourceSlots[5]
signed char g_acJumpDriveUsedBySystem[5]
MissionObjective g_aMissionObjectives[MISSION_OBJECTIVE_COUNT]
short g_nLoadedCommPortraitPilot
MissionShipRecord g_aMissionShips[MISSION_SHIP_COUNT]
ShortPoint g_aDefaultWeaponDisplayPositions[16]
unsigned char * g_pCommPortraitResource
short g_aasShipArmor[10][4]
signed char g_acShipDamage[16]
signed char g_acShipLastAttacker[16]
PilotProfile g_stCurrentPilotProfile
short g_asShipMissionType[12]
short g_bFriendlyFireWarningIssued
FixedVector g_aShipMissionSpot[20]
signed char g_acObjectType[SPACE_OBJECT_COUNT]
short g_asDifficultyLevels[16][4]
short g_nAdaptiveDifficulty
int g_nAvailableGameMemoryNumber
FixedVector g_vCollisionDelta
short g_1_nEnemyCommCommandBase
short g_asObjectCounter[SPACE_OBJECT_COUNT]
MissionHeader g_13_stMissionHeaderBlock
short g_bMissionDeathSequencePending
short g_asObjectViewFrame[SPACE_OBJECT_COUNT]
short g_nHazardFieldCount
short g_1_nResourcePaletteState
short preloadObjectTypes[3]
short preloadObjectClasses[3]
signed char waveCommands[8]
short preloadLogicalFiles[3]
signed char triggers[4][2]
signed char missionParameter
signed char leaderMissionIndex
signed char formationIndex
signed char formationSpot
unsigned char * animation
unsigned char * animation
unsigned char weaponLoadout[0xA1]