112 if (contactRange < gap) {
113 if ((contactRange + contactRange) >> 4 > gap)
120 while (crash == 0 && checkTime < time) {
121 checkTime +=
MaxShort(1, (
short)((time - checkTime) >> 1));
125 if (contactRange >= gap)
155 for (
object = 0;
object <= 0x42;
object++) {
161 if (time < soonest) {
168 for (
object = 0;
object <= 9;
object++) {
173 if (time < soonest) {
218 for (obj = 0; obj < 10; obj++) {
256 if (missionShip != -1) {
257 for (obj = 0; obj < 10; obj++) {
279 for (other = 0; other < 10; other++) {
299 return (
short)(hasBase == 0);
334 for (other = 0; other < 10; other++) {
361 for (other = 0; other < 10; other++) {
378 for (obj = 0; obj < 10; obj++) {
554 (
int)distance << 8, point);
563 -((
int)distance << 8), point);
583 for (other = 0; other < 10; other++) {
591 if (distance < range &&
615 for (other = 0; other < 10; other++) {
640 for (other = 0; other < 10; other++) {
646 if (range > enemyRange)
668 for (other = 0; other < 10; other++) {
690 unsigned short range;
694 for (attacker = 0; attacker < 10; attacker++) {
735 for (other = 0; other < 10; other++) {
745 if (distance < range) {
784 for (other = 0; other < 10; other++) {
800 return missionShip == -1 ||
827 navIndex++, navPoint++) {
831 if (navPoint->
type == 1)
833 else if (fallback == -1)
838 if (fallback != -1) {
861 if (navPoint != -1) {
921 for (slot = 0; slot < 10; slot++) {
924 if (missionIndex != -1 &&
952void engage(
short obj,
short target,
short objective)
1014 short input,
short outputMinimum,
1015 short outputMaximum)
1017 if (input < inputMinimum)
1018 return outputMinimum;
1019 if (input > inputMaximum)
1020 return outputMaximum;
1021 return outputMinimum + ((int)(outputMaximum - outputMinimum) *
1022 (int)(input - inputMinimum)) /
1023 (
int)(inputMaximum - inputMinimum);
void clear_alert(short obj)
unsigned int approach_full_speed(short ship)
short real_crash_time(short obj, short other)
short find_ships_sphere(short missionShip)
void ComputeVectorDelta(FixedVector *from, FixedVector *to, FixedVector *delta)
unsigned int approach_zero_speed(short ship)
short IsVectorWithinRange(FixedVector *vector, short range)
void set_alert(short obj, unsigned int bits)
void set_special(short ship, short special)
void get_follow_point(short obj, FixedVector *point)
short MaxShort(short a, short b)
short enemy_within_range(short obj, short range)
short detect_collisions(short obj)
short explode(short attacker, short victim)
unsigned int get_first_follow_point(short obj, FixedVector *point)
short distance_from_point(short obj, const FixedVector *point)
unsigned int find_squad_center(FixedVector *center)
void ComputePointAheadOfObject(short obj, unsigned short distance, FixedVector *point)
short abandoned(short obj, short other)
long Vector_magnitude(const FixedVector *vector)
unsigned int alter_objective(short ship, short objective)
void AddFixedVectors(const FixedVector *left, const FixedVector *right, FixedVector *sum)
short hostile_sphere(short obj, short navPoint)
short evaluate_damage(short obj)
void init_formation_burst(short obj)
signed char CanSetNewShipTurnGoal(short ship)
short unactive(short ship)
void ScaleFixedVector(FixedVector *vector, int scale, FixedVector *result)
short are_alive(short obj)
short FixedToShortSaturating(int value)
short crash_time(short obj, short other)
short any_enemy(short obj, short range)
short find_ratio(short inputMinimum, short inputMaximum, short input, short outputMinimum, short outputMaximum)
short scan_for_enemy(short obj, unsigned short range)
short skill_check(short obj, short margin)
short CanShipWeaponDamageTarget(short ship, short target)
unsigned int approach_ship_speed(short obj, short other)
short distance_from_object(short obj, short other)
unsigned int approach_speed(short ship, int targetSpeed)
void try2end_collision_alert(short obj)
void inherit_leader_mission(short obj)
short signed_random(short range)
short visited(short objective)
void steady_object(short ship)
void SendKilrathiAceGreetingOnce(short obj)
short being_tailed(short obj, short other)
short attacker_in_range(short obj, unsigned short range)
unsigned int reset_tactic(short ship, short tactic)
short in_danger(short obj)
short GetAdaptiveTurnRate(void)
signed char no_goal(short ship)
short build_target_list(short obj, short range)
long DivideFixed(int numerator, int denominator)
void zero_vector(FixedVector *vector)
unsigned int reset_objective(short ship, short objective)
short real_velocity(short obj)
short ships_within_range(short obj, short other, short range)
short is_ship_tailing_player_target(short obj)
short FindNearestNavPoint(short ship)
void trim_goals(short obj, short amount)
void engage(short obj, short target, short objective)
short locate_ship(short missionShip, FixedVector *point)
unsigned int approach_min_speed(short obj)
short try2rout(short obj)
short report_kilrathi_rout(int mode)
short detect_enemy_tail(short obj)
short FindMissileTargetingObject(short obj)
void get_facing_range_from_object(short obj, short other)
void start_collision_alert(short obj, short other)
void try2reset_maneuver(short obj, short maneuver)
short target_within_range(short obj)
unsigned int approach_cruise_speed(short ship)
short gone_ship(short missionShip)
void inherit_leader(short obj)
void send_message(short obj, signed char message)
short target_valid(short obj, short target)
short dead_ship(short missionShip)
void ProcessEnemyWaveCompletion(void)
void divide_vector(FixedVector *vector, int divisor, FixedVector *result)
void approach_half_speed(short obj)
short ShipHasTorpedo(short ship)
void reset_mission_type(short obj, short missionType)
void ComputePointBehindObject(short obj, unsigned short distance, FixedVector *point)
void maneuver_complete(short ship)
short normal_speed(short obj)
unsigned int alter_tactic(short ship, short tactic)
short find_ship_index(short missionShip)
unsigned int change_mission_type(short obj, short missionType)
void reset_maneuver(short ship, short maneuver)
short RandomBelowOrEqual(short n)
void build_squad_list(short leader)
short alert_flag(short ship, unsigned int bits)
Shared Win32 declarations, types and library interfaces.
@ OBJECTIVE_BREAK_FORMATION
#define MISSION_NAV_POINT_COUNT
#define SHIP_OBJECTIVE_NOT_ALIVE
@ SPECIAL_MANEUVER_LOST_CONTROL
@ SPECIAL_MANEUVER_BLOWING_UP
@ SPECIAL_MANEUVER_UNKNOWN_9
@ SPECIAL_MANEUVER_AFTERBURNER
#define MISSION_OBJECTIVE_COUNT
@ OBJECT_CLASS_CAPITAL_SHIP
HazardField * g_pActiveHazardField
short g_asObjectCollisionRadius[SPACE_OBJECT_COUNT]
short g_asShipAfterburnerTimer[10]
short g_asShipMissionParameter[12]
signed char g_abFlightPath[MISSION_OBJECTIVE_COUNT]
signed char g_acShipSequence[14]
short g_aeObjectClass[SPACE_OBJECT_COUNT]
signed char g_acShipTarget[16]
short g_asObjectType[SPACE_OBJECT_COUNT]
short g_bKilrathiAceGreetingSent
ObjectTypeData g_aObjectTypeData[OBJECT_DATA_COUNT]
MissionNavPoint g_aMissionNavPoints[MISSION_NAV_POINT_COUNT]
unsigned int g_anShipAlertFlags[10]
FixedVector g_aShipForwardVector[SPACE_OBJECT_COUNT]
short g_asObjectScreenX[SPACE_OBJECT_COUNT]
short g_bWingmanKilledThisMission
short g_asShipCloakElapsedFrames[10]
short g_aeSpecialManeuver[12]
signed char g_acMissionShipStatusFlagsBytes[8]
signed char g_abShipNavPointIndex[16]
signed char g_acShipList[16]
short g_asShipMaximumVelocity[12]
int g_anShipSpeed[SPACE_OBJECT_COUNT]
short g_asShipWingLeader[12]
short g_5_nCollisionCountdownNumber
int g_anShipCloakState[10]
signed char g_4_acInitialShipKillNumber[8]
signed char g_cCurrentNavPointIndex
FixedVector g_aShipPosition[SPACE_OBJECT_COUNT]
short g_asShipManeuver[12]
FixedVector g_aShipVelocity[SPACE_OBJECT_COUNT]
short g_asShipMissionIndex[12]
signed char g_acShipAlertSource[12]
signed char g_acShipStress[16]
signed char g_abShipTurn[16]
short g_aeShipObjective[12]
FixedVector g_aShipDestination[10]
MissionObjective g_aMissionObjectives[MISSION_OBJECTIVE_COUNT]
short g_asShipListRange[16]
MissionShipRecord g_aMissionShips[MISSION_SHIP_COUNT]
short g_aasShipArmor[10][4]
signed char g_acShipDamage[16]
short g_asShipMissionType[12]
FixedVector g_aShipMissionSpot[20]
signed char g_acObjectType[SPACE_OBJECT_COUNT]
short g_asShipAlertCountdown[12]