Wing Commander II
Reconstructed Win32 source (1996)
Toggle main menu visibility
Loading...
Searching...
No Matches
destroy.c
Go to the documentation of this file.
1
/*
2
* Ship destruction and mission ejection pods.
3
*
4
* Retail object 0x446710-0x44690F (link order; see docs/ORDER.md).
5
*/
6
#include "
game.h
"
7
8
short
g_bMissionDeathSequencePending
= 0;
/* 0x0049b720 */
9
short
g_bMissionEjectionPodSpawned
= 0;
/* 0x0049b724 */
10
11
/* Function start: 0x446710 */
12
void
BeginShipDestructionSequence
(
short
obj)
13
{
14
send_message
(obj, 9);
15
g_nPendingEjectionShip
= obj;
16
set_special
(obj,
SPECIAL_MANEUVER_UNKNOWN_9
);
17
if
(
g_aObjectTypeData
[
OBJECT_DATA_INDEX
(
OBJECT_TYPE_EXPLOSION2
)].shapeSet != 0)
18
g_asObjectCounter
[obj] = 8;
19
else
20
g_asObjectCounter
[obj] = 4;
21
if
(
g_aObjectTypeData
[
OBJECT_DATA_INDEX
(
OBJECT_TYPE_EXPLOSION2
)].shapeSet != 0)
22
g_7_asShipBurstStageCountdown
[obj] = 8;
23
else
24
g_7_asShipBurstStageCountdown
[obj] = 4;
25
g_aMissionShips
[
g_asShipMissionIndex
[obj]].
state
= 3;
26
ShipExplosion
(obj);
27
explosion_shock_wave
(
28
obj,
29
g_aObjectTypeData
[
30
(
signed
char
)
g_acObjectType
[obj]].explosionDamage);
31
if
(
g_asObjectScreenX
[obj] != -32767)
32
PlaySfxWaveFileByNumber
(4, obj, 0);
33
g_bMissionDeathSequencePending
= 1;
34
g_bMissionEjectionPodSpawned
= 0;
35
}
36
37
void
set_objects_data
(
short
obj,
short
type,
short
owner,
short
matchObjectClass);
38
void
PlaySfxWaveFileByNumber
(
int
soundNumber,
int
sourceObject,
int
looping);
39
void
set_special
(
short
ship,
short
special);
40
void
zero_vector
(
FixedVector
*vector);
41
42
/* Function start: 0x446823 */
43
void
SpawnMissionEjectionPod
(
short
obj)
44
{
45
short
initialShip;
46
47
if
(
g_aObjectTypeData
[
48
OBJECT_DATA_EJECTION_POD
].shapeSet == 0) {
49
g_aObjectTypeData
[
50
OBJECT_DATA_EJECTION_POD
].
shapeSet
=
51
FetchDiskPacketRetrying
(
"pilotanm.vga"
, 2, 0);
52
}
53
set_objects_data
(obj,
OBJECT_DATA_EJECTION_POD
, -1, 0);
54
zero_vector
(&
g_aShipVelocity
[obj]);
55
RecordCannedSceneObjectEvent
(obj, 0);
56
g_bMissionEjectionPodSpawned
= 1;
57
for
(initialShip = 0; initialShip < 8; initialShip++) {
58
if
(
g_13_stMissionHeaderBlock
.
initialMissionShips
[initialShip] ==
59
g_asShipMissionIndex
[obj]) {
60
g_acMissionShipStatusFlagsBytes
[initialShip] |= 2;
61
if
(obj ==
g_nYourWingman
)
62
g_nYourWingman
= -1;
63
}
64
}
65
}
66
67
/* Linker commons defined here. LINK lays a unit's commons out by the
68
* identifiers' hash keys, so these spellings follow the original addresses. */
69
short
g_nPendingEjectionShip
;
/* 0x005d1bc4 */
set_special
void set_special(short ship, short special)
Definition
logic.c:493
ShipExplosion
short ShipExplosion(short obj)
Definition
ship.c:1786
FetchDiskPacketRetrying
void * FetchDiskPacketRetrying(char *fileName, short section, short flags)
Definition
disk.c:187
zero_vector
void zero_vector(FixedVector *vector)
Definition
geom.c:197
BeginShipDestructionSequence
void BeginShipDestructionSequence(short obj)
Definition
destroy.c:12
SpawnMissionEjectionPod
void SpawnMissionEjectionPod(short obj)
Definition
destroy.c:43
PlaySfxWaveFileByNumber
void PlaySfxWaveFileByNumber(int soundNumber, int sourceObject, int looping)
Definition
music.c:490
send_message
void send_message(short obj, signed char message)
Definition
cockpt.c:3116
RecordCannedSceneObjectEvent
void RecordCannedSceneObjectEvent(short obj, int event)
Definition
taperec.c:176
set_objects_data
void set_objects_data(short obj, short type, short owner, short matchObjectClass)
Definition
ship.c:347
explosion_shock_wave
void explosion_shock_wave(short obj, short blastDamage)
Definition
ship.c:1729
game.h
Shared Win32 declarations, types and library interfaces.
OBJECT_DATA_EJECTION_POD
@ OBJECT_DATA_EJECTION_POD
Definition
game_data.h:457
OBJECT_TYPE_EXPLOSION2
@ OBJECT_TYPE_EXPLOSION2
Definition
game_data.h:105
OBJECT_DATA_INDEX
#define OBJECT_DATA_INDEX(sourceType)
Definition
game_data.h:1596
SPECIAL_MANEUVER_UNKNOWN_9
@ SPECIAL_MANEUVER_UNKNOWN_9
Definition
game_data.h:269
g_nYourWingman
short g_nYourWingman
Definition
viewrect.c:75
g_7_asShipBurstStageCountdown
short g_7_asShipBurstStageCountdown[10]
Definition
ship.c:3063
g_bMissionEjectionPodSpawned
short g_bMissionEjectionPodSpawned
Definition
destroy.c:9
g_aObjectTypeData
ObjectTypeData g_aObjectTypeData[OBJECT_DATA_COUNT]
Definition
campglob.c:310
g_asObjectScreenX
short g_asObjectScreenX[SPACE_OBJECT_COUNT]
Definition
viewrect.c:95
g_acMissionShipStatusFlagsBytes
signed char g_acMissionShipStatusFlagsBytes[8]
Definition
logic.c:1054
g_aShipVelocity
FixedVector g_aShipVelocity[SPACE_OBJECT_COUNT]
Definition
viewrect.c:109
g_asShipMissionIndex
short g_asShipMissionIndex[12]
Definition
viewrect.c:153
g_aMissionShips
MissionShipRecord g_aMissionShips[MISSION_SHIP_COUNT]
Definition
hotspot.c:240
g_acObjectType
signed char g_acObjectType[SPACE_OBJECT_COUNT]
Definition
viewrect.c:101
g_asObjectCounter
short g_asObjectCounter[SPACE_OBJECT_COUNT]
Definition
viewrect.c:110
g_nPendingEjectionShip
short g_nPendingEjectionShip
Definition
destroy.c:69
g_13_stMissionHeaderBlock
MissionHeader g_13_stMissionHeaderBlock
Definition
hotspot.c:253
g_bMissionDeathSequencePending
short g_bMissionDeathSequencePending
Definition
destroy.c:8
FixedVector
Definition
game_data.h:318
MissionHeader::initialMissionShips
short initialMissionShips[8]
Definition
game_data.h:1347
MissionShipRecord::state
signed char state
Definition
game_data.h:1380
ObjectTypeData::shapeSet
unsigned char * shapeSet
Definition
game_data.h:392
src
destroy.c
Generated by
1.18.0