Grouping ship properties together at the top of the ship .c files, from oldlaptop.
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
Changes towards version 0.8:
|
||||
- Grouping ship properties together at the top of the ship .c files, from
|
||||
oldlaptop.
|
||||
- Some added documentation for UIO.
|
||||
- Added a StringHashTable type.
|
||||
- A few superficial fixes to charhashtable.
|
||||
|
||||
@@ -22,22 +22,38 @@
|
||||
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 20
|
||||
#define MAX_ENERGY 24
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 3
|
||||
#define SPECIAL_ENERGY_COST 2
|
||||
#define ENERGY_WAIT 8
|
||||
#define MAX_THRUST 24
|
||||
#define THRUST_INCREMENT 3
|
||||
#define TURN_WAIT 4
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 0
|
||||
|
||||
#define SHIP_MASS 6
|
||||
|
||||
// Bubbles
|
||||
#define WEAPON_ENERGY_COST 3
|
||||
#define WEAPON_WAIT 0
|
||||
#define ANDROSYNTH_OFFSET 14
|
||||
#define MISSILE_OFFSET 3
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (8)
|
||||
#define MISSILE_LIFE 200
|
||||
#define MISSILE_HITS 3
|
||||
#define MISSILE_DAMAGE 2
|
||||
#define TRACK_WAIT 2
|
||||
|
||||
// Blazer
|
||||
#define SPECIAL_ENERGY_COST 2
|
||||
#define BLAZER_DEGENERATION (-1)
|
||||
#define SPECIAL_WAIT 0
|
||||
#define BLAZER_OFFSET 10
|
||||
#define BLAZER_THRUST 60
|
||||
#define BLAZER_TURN_WAIT 1
|
||||
#define BLAZER_DAMAGE 3
|
||||
#define BLAZER_MASS 1
|
||||
|
||||
static RACE_DESC androsynth_desc =
|
||||
{
|
||||
{ /* SHIP_INFO */
|
||||
@@ -149,15 +165,10 @@ SetCustomShipData (RACE_DESC *pRaceDesc, const CustomShipData_t *data)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#define BLAZER_DAMAGE 3
|
||||
#define BLAZER_MASS 1
|
||||
|
||||
static void
|
||||
blazer_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
ELEMENT *ElementPtr1, POINT *pPt1)
|
||||
{
|
||||
#define BLAZER_OFFSET 10
|
||||
BYTE old_offs;
|
||||
COUNT old_crew_level;
|
||||
COUNT old_life;
|
||||
@@ -177,8 +188,6 @@ blazer_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
collision (ElementPtr0, pPt0, ElementPtr1, pPt1);
|
||||
}
|
||||
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (8)
|
||||
|
||||
static void
|
||||
bubble_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -214,23 +223,15 @@ bubble_preprocess (ELEMENT *ElementPtr)
|
||||
facing -= (COUNT)TFB_Random () & (ANGLE_TO_FACING (HALF_CIRCLE) - 1);
|
||||
SetVelocityVector (&ElementPtr->velocity,
|
||||
MISSILE_SPEED, facing);
|
||||
|
||||
#define TRACK_WAIT 2
|
||||
turn_wait = TRACK_WAIT;
|
||||
}
|
||||
|
||||
ElementPtr->turn_wait = MAKE_BYTE (turn_wait, thrust_wait);
|
||||
}
|
||||
|
||||
#define MISSILE_DAMAGE 2
|
||||
#define MISSILE_LIFE 200
|
||||
|
||||
static COUNT
|
||||
initialize_bubble (ELEMENT *ShipPtr, HELEMENT BubbleArray[])
|
||||
{
|
||||
#define ANDROSYNTH_OFFSET 14
|
||||
#define MISSILE_OFFSET 3
|
||||
#define MISSILE_HITS 3
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -364,8 +365,6 @@ androsynth_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
}
|
||||
}
|
||||
|
||||
#define BLAZER_TURN_WAIT 1
|
||||
|
||||
static void
|
||||
androsynth_postprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -375,7 +374,6 @@ androsynth_postprocess (ELEMENT *ElementPtr)
|
||||
/* take care of blazer effect */
|
||||
if (ElementPtr->next.image.farray == StarShipPtr->RaceDescPtr->ship_data.special)
|
||||
{
|
||||
#define BLAZER_DEGENERATION (-1)
|
||||
if ((StarShipPtr->cur_status_flags & SPECIAL)
|
||||
|| StarShipPtr->RaceDescPtr->ship_info.energy_level == 0)
|
||||
{
|
||||
@@ -484,7 +482,6 @@ androsynth_preprocess (ELEMENT *ElementPtr)
|
||||
--ElementPtr->thrust_wait;
|
||||
else
|
||||
{
|
||||
#define BLAZER_THRUST 60
|
||||
COUNT facing;
|
||||
|
||||
facing = StarShipPtr->ShipFacing;
|
||||
|
||||
@@ -22,24 +22,28 @@
|
||||
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 6
|
||||
#define MAX_ENERGY 20
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define SPECIAL_ENERGY_COST 3
|
||||
#define ENERGY_WAIT 6
|
||||
#define MAX_THRUST /* DISPLAY_TO_WORLD (10) */ 40
|
||||
#define THRUST_INCREMENT MAX_THRUST
|
||||
#define TURN_WAIT 0
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT 1
|
||||
#define SPECIAL_WAIT 2
|
||||
|
||||
#define TURN_WAIT 0
|
||||
#define SHIP_MASS 1
|
||||
|
||||
// Tracking Laser
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define WEAPON_WAIT 1
|
||||
#define ARILOU_OFFSET 9
|
||||
#define LASER_RANGE DISPLAY_TO_WORLD (100 + ARILOU_OFFSET)
|
||||
|
||||
// Teleporter
|
||||
#define SPECIAL_ENERGY_COST 3
|
||||
#define SPECIAL_WAIT 2
|
||||
#define HYPER_LIFE 5
|
||||
|
||||
static RACE_DESC arilou_desc =
|
||||
{
|
||||
{ /* SHIP_INFO */
|
||||
@@ -209,7 +213,6 @@ arilou_preprocess (ELEMENT *ElementPtr)
|
||||
&& DeltaEnergy (ElementPtr, -SPECIAL_ENERGY_COST))
|
||||
{
|
||||
/* Special key is pressed; start teleport */
|
||||
#define HYPER_LIFE 5
|
||||
ZeroVelocityComponents (&ElementPtr->velocity);
|
||||
StarShipPtr->cur_status_flags &=
|
||||
~(SHIP_AT_MAX_SPEED | LEFT | RIGHT | THRUST | WEAPON);
|
||||
|
||||
@@ -22,25 +22,48 @@
|
||||
|
||||
#include "uqm/globdata.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW MAX_CREW_SIZE
|
||||
#define MAX_ENERGY MAX_ENERGY_SIZE
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 6
|
||||
#define SPECIAL_ENERGY_COST (MAX_ENERGY_SIZE / 2)
|
||||
#define ENERGY_WAIT 4
|
||||
#define MAX_THRUST 30
|
||||
#define THRUST_INCREMENT 6
|
||||
#define TURN_WAIT 4
|
||||
#define THRUST_WAIT 6
|
||||
#define WEAPON_WAIT 6
|
||||
#define SPECIAL_WAIT 9
|
||||
|
||||
#define SHIP_MASS 10
|
||||
|
||||
// Buzzsaw
|
||||
#define WEAPON_ENERGY_COST 6
|
||||
#define WEAPON_WAIT 6
|
||||
#define MISSILE_OFFSET 9
|
||||
#define KOHR_AH_OFFSET 28
|
||||
#define MISSILE_SPEED 64
|
||||
#define MISSILE_LIFE 64 /* actually, it's as long as you
|
||||
* hold the button down.
|
||||
*/
|
||||
#define MISSILE_LIFE 64
|
||||
/* actually, it's as long as you hold the button down.*/
|
||||
#define MISSILE_HITS 10
|
||||
#define MISSILE_DAMAGE 4
|
||||
#define SAW_RATE 0
|
||||
#define MAX_SAWS 8
|
||||
#define ACTIVATE_RANGE 224
|
||||
/* Originally SPACE_WIDTH - the distance within which
|
||||
* stationary sawblades will home */
|
||||
#define TRACK_WAIT 4
|
||||
#define FRAGMENT_SPEED MISSILE_SPEED
|
||||
#define FRAGMENT_LIFE 10
|
||||
#define FRAGMENT_RANGE (FRAGMENT_LIFE * FRAGMENT_SPEED)
|
||||
|
||||
// F.R.I.E.D.
|
||||
#define SPECIAL_ENERGY_COST (MAX_ENERGY_SIZE / 2)
|
||||
#define SPECIAL_WAIT 9
|
||||
#define GAS_OFFSET 2
|
||||
#define GAS_SPEED 16
|
||||
#define GAS_RATE 2 /* Controls animation of the gas cloud decay - the decay
|
||||
* animation advances one frame every GAS_RATE frames. */
|
||||
#define GAS_HITS 100
|
||||
#define GAS_DAMAGE 3
|
||||
#define GAS_ALT_DAMAGE 50
|
||||
#define NUM_GAS_CLOUDS 16
|
||||
|
||||
static RACE_DESC black_urquan_desc =
|
||||
{
|
||||
@@ -113,9 +136,6 @@ static RACE_DESC black_urquan_desc =
|
||||
0, /* CodeRef */
|
||||
};
|
||||
|
||||
#define SAW_RATE 0
|
||||
#define MAX_SAWS 8
|
||||
|
||||
static void
|
||||
spin_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -154,8 +174,6 @@ spin_preprocess (ELEMENT *ElementPtr)
|
||||
UnlockElement (StarShipPtr->hShip);
|
||||
}
|
||||
|
||||
#define TRACK_WAIT 4
|
||||
|
||||
static void
|
||||
buzztrack_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -172,7 +190,6 @@ buzztrack_preprocess (ELEMENT *ElementPtr)
|
||||
}
|
||||
else
|
||||
{
|
||||
#define ACTIVATE_RANGE 224 /* Originally SPACE_WIDTH */
|
||||
SIZE delta_x, delta_y;
|
||||
ELEMENT *eptr;
|
||||
|
||||
@@ -311,10 +328,6 @@ buzzsaw_postprocess (ELEMENT *ElementPtr)
|
||||
static COUNT
|
||||
initialize_buzzsaw (ELEMENT *ShipPtr, HELEMENT SawArray[])
|
||||
{
|
||||
#define MISSILE_HITS 10
|
||||
#define MISSILE_DAMAGE 4
|
||||
#define MISSILE_OFFSET 9
|
||||
#define KOHR_AH_OFFSET 28
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -379,9 +392,6 @@ black_urquan_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
lpEvalDesc = &ObjectsOfConcern[ENEMY_SHIP_INDEX];
|
||||
if (lpEvalDesc->ObjectPtr)
|
||||
{
|
||||
#define FRAGMENT_LIFE 10
|
||||
#define FRAGMENT_SPEED MISSILE_SPEED
|
||||
#define FRAGMENT_RANGE (FRAGMENT_LIFE * FRAGMENT_SPEED)
|
||||
HELEMENT h, hNext;
|
||||
ELEMENT *BuzzSawPtr;
|
||||
|
||||
@@ -433,8 +443,6 @@ black_urquan_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
}
|
||||
}
|
||||
|
||||
#define GAS_RATE 2
|
||||
|
||||
static void
|
||||
gas_cloud_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -450,8 +458,6 @@ gas_cloud_preprocess (ELEMENT *ElementPtr)
|
||||
}
|
||||
}
|
||||
|
||||
#define GAS_DAMAGE 3
|
||||
|
||||
static void
|
||||
gas_cloud_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
ELEMENT *ElementPtr1, POINT *pPt1)
|
||||
@@ -459,7 +465,7 @@ gas_cloud_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
if (ElementPtr1->state_flags & PLAYER_SHIP)
|
||||
ElementPtr0->mass_points = GAS_DAMAGE;
|
||||
else
|
||||
ElementPtr0->mass_points = 50;
|
||||
ElementPtr0->mass_points = GAS_ALT_DAMAGE;
|
||||
|
||||
weapon_collision (ElementPtr0, pPt0, ElementPtr1, pPt1);
|
||||
}
|
||||
@@ -467,10 +473,6 @@ gas_cloud_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
static void
|
||||
spawn_gas_cloud (ELEMENT *ElementPtr)
|
||||
{
|
||||
#define GAS_SPEED 16
|
||||
#define GAS_HITS 100
|
||||
#define GAS_OFFSET 2
|
||||
#define NUM_GAS_CLOUDS 16
|
||||
SIZE dx, dy;
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -23,27 +23,48 @@
|
||||
#include "uqm/globdata.h"
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 36
|
||||
#define MAX_ENERGY 30
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 5
|
||||
#define SPECIAL_ENERGY_COST MAX_ENERGY
|
||||
#define ENERGY_WAIT 4
|
||||
#define MAX_THRUST /* DISPLAY_TO_WORLD (7) */ 27
|
||||
#define THRUST_INCREMENT /* DISPLAY_TO_WORLD (2) */ 3
|
||||
#define TURN_WAIT 6
|
||||
#define THRUST_WAIT 4
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 0
|
||||
|
||||
#define MAX_DOGGIES 4
|
||||
|
||||
#define TURN_WAIT 6
|
||||
#define SHIP_MASS 10
|
||||
|
||||
// Photon Shard
|
||||
#define WEAPON_ENERGY_COST 5
|
||||
#define WEAPON_WAIT 0
|
||||
#define CHENJESU_OFFSET 16
|
||||
#define MISSILE_OFFSET 0
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (16)
|
||||
#define MISSILE_LIFE 90 /* actually, it's as long as you
|
||||
* hold the button down.
|
||||
*/
|
||||
#define MISSILE_LIFE 90
|
||||
/* actually, it's as long as you hold the button down. */
|
||||
#define MISSILE_HITS 10
|
||||
#define MISSILE_DAMAGE 6
|
||||
#define NUM_SPARKLES 8
|
||||
|
||||
// Shrapnel
|
||||
#define FRAGMENT_OFFSET 2
|
||||
#define NUM_FRAGMENTS 8
|
||||
#define FRAGMENT_LIFE 10
|
||||
#define FRAGMENT_SPEED MISSILE_SPEED
|
||||
#define FRAGMENT_RANGE (FRAGMENT_LIFE * FRAGMENT_SPEED)
|
||||
/* This bit is for the cyborg only. */
|
||||
#define FRAGMENT_HITS 1
|
||||
#define FRAGMENT_DAMAGE 2
|
||||
|
||||
// DOGI
|
||||
#define SPECIAL_ENERGY_COST MAX_ENERGY
|
||||
#define SPECIAL_WAIT 0
|
||||
#define DOGGY_OFFSET 18
|
||||
#define DOGGY_SPEED DISPLAY_TO_WORLD (8)
|
||||
#define ENERGY_DRAIN 10
|
||||
#define MAX_DOGGIES 4
|
||||
#define DOGGY_HITS 3
|
||||
#define DOGGY_MASS 4
|
||||
|
||||
static RACE_DESC chenjesu_desc =
|
||||
{
|
||||
@@ -116,17 +137,9 @@ static RACE_DESC chenjesu_desc =
|
||||
0, /* CodeRef */
|
||||
};
|
||||
|
||||
#define FRAGMENT_LIFE 10
|
||||
#define FRAGMENT_SPEED MISSILE_SPEED
|
||||
#define FRAGMENT_RANGE (FRAGMENT_LIFE * FRAGMENT_SPEED)
|
||||
|
||||
static void
|
||||
crystal_postprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
#define FRAGMENT_HITS 1
|
||||
#define FRAGMENT_DAMAGE 2
|
||||
#define FRAGMENT_OFFSET 2
|
||||
#define NUM_FRAGMENTS 8
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -212,7 +225,6 @@ crystal_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
{
|
||||
ELEMENT *BlastElementPtr;
|
||||
|
||||
#define NUM_SPARKLES 8
|
||||
LockElement (hBlastElement, &BlastElementPtr);
|
||||
BlastElementPtr->current.location = ElementPtr1->current.location;
|
||||
|
||||
@@ -231,9 +243,6 @@ crystal_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
}
|
||||
}
|
||||
|
||||
#define DOGGY_OFFSET 18
|
||||
#define DOGGY_SPEED DISPLAY_TO_WORLD (8)
|
||||
|
||||
static void
|
||||
doggy_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -314,7 +323,6 @@ static void
|
||||
doggy_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
ELEMENT *ElementPtr1, POINT *pPt1)
|
||||
{
|
||||
#define ENERGY_DRAIN 10
|
||||
collision (ElementPtr0, pPt0, ElementPtr1, pPt1);
|
||||
if ((ElementPtr1->state_flags & PLAYER_SHIP)
|
||||
&& !elementsOfSamePlayer (ElementPtr0, ElementPtr1))
|
||||
@@ -335,8 +343,6 @@ doggy_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
ElementPtr0->thrust_wait += COLLISION_THRUST_WAIT << 1;
|
||||
}
|
||||
|
||||
#define CHENJESU_OFFSET 16
|
||||
|
||||
static void
|
||||
spawn_doggy (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -352,8 +358,8 @@ spawn_doggy (ELEMENT *ElementPtr)
|
||||
|
||||
PutElement (hDoggyElement);
|
||||
LockElement (hDoggyElement, &DoggyElementPtr);
|
||||
DoggyElementPtr->hit_points = 3;
|
||||
DoggyElementPtr->mass_points = 4;
|
||||
DoggyElementPtr->hit_points = DOGGY_HITS;
|
||||
DoggyElementPtr->mass_points = DOGGY_MASS;
|
||||
DoggyElementPtr->thrust_wait = 0;
|
||||
DoggyElementPtr->playerNr = ElementPtr->playerNr;
|
||||
DoggyElementPtr->state_flags = APPEARING;
|
||||
@@ -499,9 +505,6 @@ chenjesu_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
static COUNT
|
||||
initialize_crystal (ELEMENT *ShipPtr, HELEMENT CrystalArray[])
|
||||
{
|
||||
#define MISSILE_HITS 10
|
||||
#define MISSILE_DAMAGE 6
|
||||
#define MISSILE_OFFSET 0
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
|
||||
@@ -24,23 +24,36 @@
|
||||
#include "uqm/globdata.h"
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW MAX_CREW_SIZE
|
||||
#define MAX_ENERGY MAX_ENERGY_SIZE
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define SPECIAL_ENERGY_COST 1
|
||||
#define ENERGY_WAIT 1
|
||||
#define MAX_THRUST 35
|
||||
#define THRUST_INCREMENT 7
|
||||
#define TURN_WAIT 3
|
||||
#define THRUST_WAIT 5
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 0
|
||||
|
||||
#define TURN_WAIT 3
|
||||
#define SHIP_MASS 10
|
||||
|
||||
// Laser
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define WEAPON_WAIT 0
|
||||
#define CHMMR_OFFSET 18
|
||||
#define LASER_RANGE DISPLAY_TO_WORLD (150)
|
||||
#define NUM_CYCLES 4
|
||||
|
||||
// Tractor Beam
|
||||
#define SPECIAL_ENERGY_COST 1
|
||||
#define SPECIAL_WAIT 0
|
||||
#define NUM_SHADOWS 5
|
||||
|
||||
// Satellites
|
||||
#define NUM_SATELLITES 3
|
||||
#define SATELLITE_OFFSET DISPLAY_TO_WORLD (64)
|
||||
#define SATELLITE_HITPOINTS 10
|
||||
#define SATELLITE_MASS 10
|
||||
#define DEFENSE_RANGE (UWORD)64
|
||||
#define DEFENSE_WAIT 2
|
||||
|
||||
static RACE_DESC chmmr_desc =
|
||||
{
|
||||
@@ -202,7 +215,6 @@ laser_death (ELEMENT *ElementPtr)
|
||||
static COUNT
|
||||
initialize_megawatt_laser (ELEMENT *ShipPtr, HELEMENT LaserArray[])
|
||||
{
|
||||
#define NUM_CYCLES 4
|
||||
RECT r;
|
||||
STARSHIP *StarShipPtr;
|
||||
LASER_BLOCK LaserBlock;
|
||||
@@ -337,8 +349,6 @@ chmmr_postprocess (ELEMENT *ElementPtr)
|
||||
facing = 0;
|
||||
if (TrackShip (ElementPtr, &facing) >= 0)
|
||||
{
|
||||
#define NUM_SHADOWS 5
|
||||
|
||||
ELEMENT *ShipElementPtr;
|
||||
|
||||
LockElement (ElementPtr->hTarget, &ShipElementPtr);
|
||||
@@ -444,8 +454,6 @@ chmmr_postprocess (ELEMENT *ElementPtr)
|
||||
StarShipPtr->special_counter = 0;
|
||||
}
|
||||
|
||||
#define SATELLITE_OFFSET DISPLAY_TO_WORLD (64)
|
||||
|
||||
static void
|
||||
satellite_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -502,8 +510,6 @@ satellite_preprocess (ELEMENT *ElementPtr)
|
||||
static void
|
||||
spawn_point_defense (ELEMENT *ElementPtr)
|
||||
{
|
||||
#define DEFENSE_RANGE (UWORD)64
|
||||
#define DEFENSE_WAIT 2
|
||||
BYTE weakest;
|
||||
UWORD best_dist;
|
||||
STARSHIP *StarShipPtr;
|
||||
@@ -674,7 +680,6 @@ satellite_death (ELEMENT *ElementPtr)
|
||||
static void
|
||||
spawn_satellites (ELEMENT *ElementPtr)
|
||||
{
|
||||
#define NUM_SATELLITES 3
|
||||
COUNT i;
|
||||
STARSHIP *StarShipPtr;
|
||||
|
||||
@@ -697,8 +702,8 @@ spawn_satellites (ELEMENT *ElementPtr)
|
||||
SattPtr->state_flags = IGNORE_SIMILAR | APPEARING
|
||||
| FINITE_LIFE;
|
||||
SattPtr->life_span = NORMAL_LIFE + 1;
|
||||
SattPtr->hit_points = 10;
|
||||
SattPtr->mass_points = 10;
|
||||
SattPtr->hit_points = SATELLITE_HITPOINTS;
|
||||
SattPtr->mass_points = SATELLITE_MASS;
|
||||
|
||||
angle = (i * FULL_CIRCLE + (NUM_SATELLITES >> 1))
|
||||
/ NUM_SATELLITES;
|
||||
|
||||
@@ -20,23 +20,33 @@
|
||||
#include "druuge.h"
|
||||
#include "resinst.h"
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 14
|
||||
#define MAX_ENERGY 32
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 4
|
||||
#define SPECIAL_ENERGY_COST 16
|
||||
#define ENERGY_WAIT 50
|
||||
#define MAX_THRUST 20
|
||||
#define THRUST_INCREMENT 2
|
||||
#define TURN_WAIT 4
|
||||
#define THRUST_WAIT 1
|
||||
#define WEAPON_WAIT 10
|
||||
#define SPECIAL_WAIT 30
|
||||
|
||||
#define TURN_WAIT 4
|
||||
#define SHIP_MASS 5
|
||||
|
||||
// Mass Driver
|
||||
#define WEAPON_ENERGY_COST 4
|
||||
#define WEAPON_WAIT 10
|
||||
#define DRUUGE_OFFSET 24
|
||||
#define MISSILE_OFFSET 6
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (30)
|
||||
#define MISSILE_LIFE 20
|
||||
#define MISSILE_RANGE (MISSILE_SPEED * MISSILE_LIFE)
|
||||
#define MISSILE_HITS 4
|
||||
#define MISSILE_DAMAGE 6
|
||||
#define RECOIL_VELOCITY WORLD_TO_VELOCITY (DISPLAY_TO_WORLD (6))
|
||||
#define MAX_RECOIL_VELOCITY (RECOIL_VELOCITY * 4)
|
||||
|
||||
// Furnace
|
||||
#define SPECIAL_ENERGY_COST 16
|
||||
#define SPECIAL_WAIT 30
|
||||
|
||||
static RACE_DESC druuge_desc =
|
||||
{
|
||||
@@ -109,9 +119,6 @@ static RACE_DESC druuge_desc =
|
||||
0, /* CodeRef */
|
||||
};
|
||||
|
||||
#define RECOIL_VELOCITY WORLD_TO_VELOCITY (DISPLAY_TO_WORLD (6))
|
||||
#define MAX_RECOIL_VELOCITY (RECOIL_VELOCITY * 4)
|
||||
|
||||
static void
|
||||
cannon_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
ELEMENT *ElementPtr1, POINT *pPt1)
|
||||
@@ -153,10 +160,6 @@ cannon_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
static COUNT
|
||||
initialize_cannon (ELEMENT *ShipPtr, HELEMENT CannonArray[])
|
||||
{
|
||||
#define DRUUGE_OFFSET 24
|
||||
#define MISSILE_OFFSET 6
|
||||
#define MISSILE_HITS 4
|
||||
#define MISSILE_DAMAGE 6
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
|
||||
@@ -23,24 +23,36 @@
|
||||
#include "uqm/colors.h"
|
||||
#include "uqm/globdata.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 18
|
||||
#define MAX_ENERGY 18
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 9
|
||||
#define SPECIAL_ENERGY_COST 4
|
||||
#define ENERGY_WAIT 8
|
||||
#define MAX_THRUST /* DISPLAY_TO_WORLD (6) */ 24
|
||||
#define THRUST_INCREMENT /* DISPLAY_TO_WORLD (2) */ 3
|
||||
#define TURN_WAIT 1
|
||||
#define THRUST_WAIT 4
|
||||
#define WEAPON_WAIT 10
|
||||
#define SPECIAL_WAIT 9
|
||||
|
||||
#define TURN_WAIT 1
|
||||
#define SHIP_MASS 6
|
||||
#define MISSILE_LIFE 60
|
||||
|
||||
// Nuke
|
||||
#define WEAPON_ENERGY_COST 9
|
||||
#define WEAPON_WAIT 10
|
||||
#define HUMAN_OFFSET 42
|
||||
#define NUKE_OFFSET 8
|
||||
#define MIN_MISSILE_SPEED DISPLAY_TO_WORLD (10)
|
||||
#define MAX_MISSILE_SPEED DISPLAY_TO_WORLD (20)
|
||||
#define MISSILE_SPEED (MAX_THRUST >= MIN_MISSILE_SPEED ? \
|
||||
MAX_THRUST : MIN_MISSILE_SPEED)
|
||||
#define THRUST_SCALE DISPLAY_TO_WORLD (1)
|
||||
#define MISSILE_LIFE 60
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 4
|
||||
#define TRACK_WAIT 3
|
||||
|
||||
// Point-Defense Laser
|
||||
#define SPECIAL_ENERGY_COST 4
|
||||
#define SPECIAL_WAIT 9
|
||||
#define LASER_RANGE (UWORD)100
|
||||
|
||||
static RACE_DESC human_desc =
|
||||
{
|
||||
@@ -113,10 +125,6 @@ static RACE_DESC human_desc =
|
||||
0, /* CodeRef */
|
||||
};
|
||||
|
||||
#define MISSILE_SPEED (MAX_THRUST >= MIN_MISSILE_SPEED ? \
|
||||
MAX_THRUST : MIN_MISSILE_SPEED)
|
||||
#define TRACK_WAIT 3
|
||||
|
||||
static void
|
||||
nuke_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -141,7 +149,6 @@ nuke_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
SIZE speed;
|
||||
|
||||
#define THRUST_SCALE DISPLAY_TO_WORLD (1)
|
||||
if ((speed = MISSILE_SPEED +
|
||||
((MISSILE_LIFE - ElementPtr->life_span) *
|
||||
THRUST_SCALE)) > MAX_MISSILE_SPEED)
|
||||
@@ -196,7 +203,6 @@ spawn_point_defense (ELEMENT *ElementPtr)
|
||||
if (ObjectPtr != ShipPtr && CollidingElement (ObjectPtr) &&
|
||||
!OBJECT_CLOAKED (ObjectPtr))
|
||||
{
|
||||
#define LASER_RANGE (UWORD)100
|
||||
SIZE delta_x, delta_y;
|
||||
|
||||
delta_x = ObjectPtr->next.location.x -
|
||||
@@ -265,10 +271,6 @@ spawn_point_defense (ELEMENT *ElementPtr)
|
||||
static COUNT
|
||||
initialize_nuke (ELEMENT *ShipPtr, HELEMENT NukeArray[])
|
||||
{
|
||||
#define HUMAN_OFFSET 42
|
||||
#define MISSILE_DAMAGE 4
|
||||
#define MISSILE_HITS 1
|
||||
#define NUKE_OFFSET 8
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
|
||||
@@ -24,21 +24,33 @@
|
||||
#include "uqm/globdata.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 22
|
||||
#define MAX_ENERGY 16
|
||||
#define ENERGY_REGENERATION 4
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SPECIAL_ENERGY_COST 3
|
||||
#define ENERGY_WAIT 4
|
||||
#define MAX_THRUST 25
|
||||
#define THRUST_INCREMENT 5
|
||||
#define TURN_WAIT 2
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 13
|
||||
|
||||
#define TURN_WAIT 2
|
||||
#define SHIP_MASS 7
|
||||
#define LOOK_AHEAD 4
|
||||
/* Controls how much the auto-turn will attempt to "lead"
|
||||
* its target. */
|
||||
|
||||
// Hellfire Spout
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define WEAPON_WAIT 0
|
||||
#define MISSILE_LIFE 8
|
||||
#define ILWRATH_OFFSET 29
|
||||
#define MISSILE_SPEED MAX_THRUST
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 0
|
||||
|
||||
// Cloaking Device
|
||||
#define SPECIAL_ENERGY_COST 3
|
||||
#define SPECIAL_WAIT 13
|
||||
|
||||
static RACE_DESC ilwrath_desc =
|
||||
{
|
||||
@@ -178,11 +190,6 @@ ilwrath_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
static COUNT
|
||||
initialize_flame (ELEMENT *ShipPtr, HELEMENT FlameArray[])
|
||||
{
|
||||
#define ILWRATH_OFFSET 29
|
||||
#define MISSILE_SPEED MAX_THRUST
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 0
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -278,7 +285,6 @@ ilwrath_preprocess (ELEMENT *ElementPtr)
|
||||
facing = StarShipPtr->ShipFacing;
|
||||
if (TrackShip (ElementPtr, &facing) >= 0)
|
||||
{
|
||||
#define LOOK_AHEAD 4
|
||||
ELEMENT *eptr;
|
||||
SIZE dx0, dy0, dx1, dy1;
|
||||
VELOCITY_DESC v;
|
||||
|
||||
@@ -27,25 +27,58 @@
|
||||
#include "libs/mathlib.h"
|
||||
#include "libs/timelib.h"
|
||||
|
||||
|
||||
#define num_generators characteristics.max_thrust
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 1
|
||||
#define MAX_ENERGY MAX_ENERGY_SIZE
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define SPECIAL_ENERGY_COST 3
|
||||
#define ENERGY_WAIT 6
|
||||
#define MAX_THRUST 0
|
||||
#define THRUST_INCREMENT 0
|
||||
#define TURN_WAIT 0
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT ((ONE_SECOND / BATTLE_FRAME_RATE) * 10)
|
||||
#define SPECIAL_WAIT ((ONE_SECOND / BATTLE_FRAME_RATE) * 3)
|
||||
|
||||
#define SHIP_MASS (MAX_SHIP_MASS * 10)
|
||||
#define SAMATRA_OFFSET 9
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (8)
|
||||
#define TURRET_WAIT 0 /* Controls animation of the Sa-Matra's central
|
||||
* 'furnace', a new frame is displayed once every
|
||||
* TURRET_WAIT frames. */
|
||||
|
||||
// Yellow comet
|
||||
#define WEAPON_WAIT ((ONE_SECOND / BATTLE_FRAME_RATE) * 10)
|
||||
#define COMET_DAMAGE 2
|
||||
#define COMET_OFFSET 0
|
||||
#define COMET_HITS 12
|
||||
#define COMET_SPEED DISPLAY_TO_WORLD (12)
|
||||
#define COMET_LIFE 2
|
||||
#define COMET_TURN_WAIT 3
|
||||
#define MAX_COMETS 3
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
/* Used for samatra_desc.weapon_energy_cost, but the value isn't
|
||||
* actually used. */
|
||||
|
||||
// Green sentinel
|
||||
#define SPECIAL_WAIT ((ONE_SECOND / BATTLE_FRAME_RATE) * 3)
|
||||
#define SENTINEL_SPEED DISPLAY_TO_WORLD (8)
|
||||
#define SENTINEL_LIFE 2
|
||||
#define SENTINEL_OFFSET 0
|
||||
#define SENTINEL_HITS 10
|
||||
#define SENTINEL_DAMAGE 1
|
||||
#define TRACK_WAIT 1
|
||||
#define ANIMATION_WAIT 1
|
||||
#define RECOIL_VELOCITY WORLD_TO_VELOCITY (DISPLAY_TO_WORLD (10))
|
||||
#define MAX_RECOIL_VELOCITY (RECOIL_VELOCITY * 4)
|
||||
#define MAX_SENTINELS 4
|
||||
#define SPECIAL_ENERGY_COST 3
|
||||
/* Used for samatra_desc.special_energy_cost, but the value isn't
|
||||
* actually used. */
|
||||
|
||||
// Blue force field
|
||||
#define GATE_DAMAGE 1
|
||||
#define GATE_HITS 100
|
||||
|
||||
// Red generators
|
||||
#define GENERATOR_HITS 15
|
||||
#define MAX_GENERATORS 8
|
||||
|
||||
static RACE_DESC samatra_desc =
|
||||
{
|
||||
@@ -153,8 +186,6 @@ comet_preprocess (ELEMENT *ElementPtr)
|
||||
ElementPtr->state_flags |= CHANGING;
|
||||
}
|
||||
|
||||
#define COMET_DAMAGE 2
|
||||
|
||||
static void
|
||||
comet_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
ELEMENT *ElementPtr1, POINT *pPt1)
|
||||
@@ -199,10 +230,6 @@ comet_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
static HELEMENT
|
||||
spawn_comet (ELEMENT *ElementPtr)
|
||||
{
|
||||
#define COMET_OFFSET 0
|
||||
#define COMET_HITS 12
|
||||
#define COMET_SPEED DISPLAY_TO_WORLD (12)
|
||||
#define COMET_LIFE 2
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
HELEMENT hComet;
|
||||
STARSHIP *StarShipPtr;
|
||||
@@ -258,12 +285,11 @@ spawn_comet (ELEMENT *ElementPtr)
|
||||
--CometPtr->turn_wait;
|
||||
else
|
||||
{
|
||||
#define COMET_WAIT 3
|
||||
facing = NORMALIZE_FACING (facing);
|
||||
if (TrackShip (CometPtr, &facing) > 0)
|
||||
SetVelocityVector (&CometPtr->velocity,
|
||||
COMET_SPEED, facing);
|
||||
CometPtr->turn_wait = COMET_WAIT;
|
||||
CometPtr->turn_wait = COMET_TURN_WAIT;
|
||||
}
|
||||
}
|
||||
UnlockElement (hComet);
|
||||
@@ -279,7 +305,6 @@ turret_preprocess (ELEMENT *ElementPtr)
|
||||
--ElementPtr->turn_wait;
|
||||
else
|
||||
{
|
||||
#define TURRET_WAIT 0
|
||||
ElementPtr->next.image.frame =
|
||||
SetAbsFrameIndex (ElementPtr->current.image.frame,
|
||||
(GetFrameIndex (ElementPtr->current.image.frame) % 10) + 1);
|
||||
@@ -289,9 +314,6 @@ turret_preprocess (ELEMENT *ElementPtr)
|
||||
}
|
||||
}
|
||||
|
||||
#define GATE_DAMAGE 1
|
||||
#define GATE_HITS 100
|
||||
|
||||
static void
|
||||
gate_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
ELEMENT *ElementPtr1, POINT *pPt1)
|
||||
@@ -413,8 +435,6 @@ generator_death (ELEMENT *ElementPtr)
|
||||
}
|
||||
}
|
||||
|
||||
#define GENERATOR_HITS 15
|
||||
|
||||
static void
|
||||
generator_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -443,8 +463,6 @@ generator_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
(void) pPt1; /* Satisfying compiler (unused parameter) */
|
||||
}
|
||||
|
||||
#define TRACK_WAIT 1
|
||||
|
||||
static void
|
||||
sentinel_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -458,7 +476,6 @@ sentinel_preprocess (ELEMENT *ElementPtr)
|
||||
--ElementPtr->thrust_wait;
|
||||
else
|
||||
{
|
||||
#define ANIMATION_WAIT 1
|
||||
ElementPtr->next.image.frame =
|
||||
SetAbsFrameIndex (ElementPtr->current.image.frame,
|
||||
(GetFrameIndex (ElementPtr->current.image.frame) + 1) % 6);
|
||||
@@ -483,7 +500,7 @@ sentinel_preprocess (ELEMENT *ElementPtr)
|
||||
ElementPtr->state_flags &= ~NONSOLID;
|
||||
facing = (COUNT)TFB_Random ();
|
||||
SetVelocityVector (&ElementPtr->velocity,
|
||||
MISSILE_SPEED, facing);
|
||||
SENTINEL_SPEED, facing);
|
||||
}
|
||||
facing = NORMALIZE_FACING (facing);
|
||||
if (ElementPtr->hTarget == 0)
|
||||
@@ -577,16 +594,13 @@ sentinel_preprocess (ELEMENT *ElementPtr)
|
||||
}
|
||||
|
||||
SetVelocityVector (&ElementPtr->velocity,
|
||||
MISSILE_SPEED, facing);
|
||||
SENTINEL_SPEED, facing);
|
||||
}
|
||||
|
||||
ElementPtr->turn_wait = TRACK_WAIT;
|
||||
}
|
||||
}
|
||||
|
||||
#define RECOIL_VELOCITY WORLD_TO_VELOCITY (DISPLAY_TO_WORLD (10))
|
||||
#define MAX_RECOIL_VELOCITY (RECOIL_VELOCITY * 4)
|
||||
|
||||
static void
|
||||
sentinel_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
ELEMENT *ElementPtr1, POINT *pPt1)
|
||||
@@ -604,8 +618,8 @@ sentinel_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
angle = ARCTAN (pPt0->x - pPt1->x, pPt0->y - pPt1->y);
|
||||
|
||||
SetVelocityComponents (&ElementPtr0->velocity,
|
||||
COSINE (angle, WORLD_TO_VELOCITY (MISSILE_SPEED)),
|
||||
SINE (angle, WORLD_TO_VELOCITY (MISSILE_SPEED)));
|
||||
COSINE (angle, WORLD_TO_VELOCITY (SENTINEL_SPEED)),
|
||||
SINE (angle, WORLD_TO_VELOCITY (SENTINEL_SPEED)));
|
||||
ElementPtr0->turn_wait = TRACK_WAIT;
|
||||
ElementPtr0->state_flags |= COLLISION | DEFY_PHYSICS;
|
||||
}
|
||||
@@ -688,9 +702,6 @@ samatra_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
ship_intelligence (ShipPtr, ObjectsOfConcern, ConcernCounter);
|
||||
}
|
||||
|
||||
#define MAX_COMETS 3
|
||||
#define MAX_SENTINELS 4
|
||||
|
||||
static void
|
||||
samatra_postprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -709,10 +720,6 @@ samatra_postprocess (ELEMENT *ElementPtr)
|
||||
if (StarShipPtr->special_counter == 0
|
||||
&& StarShipPtr->RaceDescPtr->characteristics.special_wait < MAX_SENTINELS)
|
||||
{
|
||||
#define MISSILE_LIFE 2
|
||||
#define MISSILE_OFFSET 0
|
||||
#define MISSILE_HITS 10
|
||||
#define MISSILE_DAMAGE 1
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
HELEMENT hSentinel;
|
||||
|
||||
@@ -724,12 +731,12 @@ samatra_postprocess (ELEMENT *ElementPtr)
|
||||
MissileBlock.sender = ElementPtr->playerNr;
|
||||
MissileBlock.flags = 0;
|
||||
MissileBlock.pixoffs = 0;
|
||||
MissileBlock.speed = MISSILE_SPEED;
|
||||
MissileBlock.hit_points = MISSILE_HITS;
|
||||
MissileBlock.damage = MISSILE_DAMAGE;
|
||||
MissileBlock.life = MISSILE_LIFE;
|
||||
MissileBlock.speed = SENTINEL_SPEED;
|
||||
MissileBlock.hit_points = SENTINEL_HITS;
|
||||
MissileBlock.damage = SENTINEL_DAMAGE;
|
||||
MissileBlock.life = SENTINEL_LIFE;
|
||||
MissileBlock.preprocess_func = sentinel_preprocess;
|
||||
MissileBlock.blast_offs = MISSILE_OFFSET;
|
||||
MissileBlock.blast_offs = SENTINEL_OFFSET;
|
||||
hSentinel = initialize_missile (&MissileBlock);
|
||||
|
||||
if (hSentinel)
|
||||
@@ -765,7 +772,6 @@ samatra_preprocess (ELEMENT *ElementPtr)
|
||||
}
|
||||
else
|
||||
{
|
||||
#define MAX_GENERATORS 8
|
||||
POINT offs[] =
|
||||
{
|
||||
{-127-9, -53+18},
|
||||
|
||||
@@ -23,23 +23,38 @@
|
||||
#include "uqm/globdata.h"
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 20
|
||||
#define MAX_ENERGY MAX_ENERGY_SIZE
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 5
|
||||
#define SPECIAL_ENERGY_COST 20
|
||||
#define ENERGY_WAIT 4
|
||||
#define MAX_THRUST 36
|
||||
#define THRUST_INCREMENT 6
|
||||
#define TURN_WAIT 4
|
||||
#define THRUST_WAIT 4
|
||||
#define WEAPON_WAIT 1
|
||||
#define SPECIAL_WAIT 20
|
||||
|
||||
#define TURN_WAIT 4
|
||||
#define SHIP_MASS 7
|
||||
|
||||
// Blaster Pulse
|
||||
#define WEAPON_ENERGY_COST 5
|
||||
#define WEAPON_WAIT 1
|
||||
#define MELNORME_OFFSET 24
|
||||
#define LEVEL_COUNTER 72
|
||||
#define MAX_PUMP 4
|
||||
#define PUMPUP_SPEED DISPLAY_TO_WORLD (45)
|
||||
#define PUMPUP_LIFE 10
|
||||
#define PUMPUP_DAMAGE 2
|
||||
#define MIN_PUMPITUDE_ANIMS 3
|
||||
#define NUM_PUMP_ANIMS 5
|
||||
#define REVERSE_DIR (BYTE)(1 << 7)
|
||||
|
||||
// Confusion Pulse
|
||||
#define SPECIAL_ENERGY_COST 20
|
||||
#define SPECIAL_WAIT 20
|
||||
#define CMISSILE_SPEED DISPLAY_TO_WORLD (30)
|
||||
#define CMISSILE_LIFE 20
|
||||
#define CMISSILE_HITS 200
|
||||
#define CMISSILE_DAMAGE 0
|
||||
#define CMISSILE_OFFSET 4
|
||||
|
||||
static RACE_DESC melnorme_desc =
|
||||
{
|
||||
@@ -112,9 +127,6 @@ static RACE_DESC melnorme_desc =
|
||||
0, /* CodeRef */
|
||||
};
|
||||
|
||||
#define NUM_PUMP_ANIMS 5
|
||||
#define REVERSE_DIR (BYTE)(1 << 7)
|
||||
|
||||
static void
|
||||
pump_up_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -146,11 +158,6 @@ pump_up_preprocess (ELEMENT *ElementPtr)
|
||||
|
||||
static COUNT initialize_pump_up (ELEMENT *ShipPtr, HELEMENT PumpUpArray[]);
|
||||
|
||||
#define MELNORME_OFFSET 24
|
||||
#define LEVEL_COUNTER 72
|
||||
#define MAX_PUMP 4
|
||||
#define PUMPUP_DAMAGE 2
|
||||
|
||||
static void
|
||||
pump_up_postprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -282,7 +289,6 @@ pump_up_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
{
|
||||
ELEMENT *BlastElementPtr;
|
||||
|
||||
#define MIN_PUMPITUDE_ANIMS 3
|
||||
LockElement (hBlastElement, &BlastElementPtr);
|
||||
|
||||
BlastElementPtr->life_span =
|
||||
@@ -474,11 +480,6 @@ confusion_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
static COUNT
|
||||
initialize_confusion (ELEMENT *ShipPtr, HELEMENT ConfusionArray[])
|
||||
{
|
||||
#define CMISSILE_SPEED DISPLAY_TO_WORLD (30)
|
||||
#define CMISSILE_HITS 200
|
||||
#define CMISSILE_DAMAGE 0
|
||||
#define CMISSILE_LIFE 20
|
||||
#define CMISSILE_OFFSET 4
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK ConfusionBlock;
|
||||
|
||||
|
||||
@@ -20,35 +20,51 @@
|
||||
#include "mmrnmhrm.h"
|
||||
#include "resinst.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 20
|
||||
#define MAX_ENERGY 10
|
||||
#define SHIP_MASS 3
|
||||
|
||||
// X-Wing characteristics
|
||||
#define ENERGY_REGENERATION 2
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SPECIAL_ENERGY_COST MAX_ENERGY
|
||||
#define ENERGY_WAIT 6
|
||||
#define MAX_THRUST 20
|
||||
#define THRUST_INCREMENT 5
|
||||
#define TURN_WAIT 2
|
||||
#define THRUST_WAIT 1
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 0
|
||||
#define TURN_WAIT 2
|
||||
|
||||
// Y-Wing characteristics
|
||||
#define YWING_ENERGY_REGENERATION 1
|
||||
#define YWING_WEAPON_ENERGY_COST 1
|
||||
#define YWING_SPECIAL_ENERGY_COST MAX_ENERGY
|
||||
#define YWING_ENERGY_WAIT 6
|
||||
#define YWING_MAX_THRUST 50
|
||||
#define YWING_THRUST_INCREMENT 10
|
||||
#define YWING_TURN_WAIT 14
|
||||
#define YWING_THRUST_WAIT 0
|
||||
#define YWING_WEAPON_WAIT 20
|
||||
#define YWING_SPECIAL_WAIT 0
|
||||
#define YWING_TURN_WAIT 14
|
||||
|
||||
#define SHIP_MASS 3
|
||||
// X-Wing Lasers
|
||||
#define MMRNMHRM_OFFSET 16
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define WEAPON_WAIT 0
|
||||
#define CENTER_OFFS DISPLAY_TO_WORLD (4)
|
||||
#define WING_OFFS DISPLAY_TO_WORLD (10)
|
||||
#define LASER_RANGE DISPLAY_TO_WORLD (125 + MMRNMHRM_OFFSET)
|
||||
|
||||
// Y-Wing Missiles
|
||||
#define YWING_WEAPON_ENERGY_COST 1
|
||||
#define YWING_WEAPON_WAIT 20
|
||||
#define LAUNCH_OFFS DISPLAY_TO_WORLD (4)
|
||||
#define MISSILE_OFFSET 0
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (20)
|
||||
#define MISSILE_LIFE 40
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define TRACK_WAIT 5
|
||||
|
||||
// Transform
|
||||
#define SPECIAL_ENERGY_COST MAX_ENERGY
|
||||
#define SPECIAL_WAIT 0
|
||||
#define YWING_SPECIAL_WAIT 0
|
||||
|
||||
static RACE_DESC mmrnmhrm_desc =
|
||||
{
|
||||
@@ -121,9 +137,6 @@ static RACE_DESC mmrnmhrm_desc =
|
||||
0, /* CodeRef */
|
||||
};
|
||||
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (20)
|
||||
#define TRACK_WAIT 5
|
||||
|
||||
// Private per-instance ship data
|
||||
typedef CHARACTERISTIC_STUFF MMRNMHRM_DATA;
|
||||
|
||||
@@ -288,7 +301,6 @@ twin_laser_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
static COUNT
|
||||
initialize_dual_weapons (ELEMENT *ShipPtr, HELEMENT WeaponArray[])
|
||||
{
|
||||
#define CENTER_OFFS DISPLAY_TO_WORLD (4)
|
||||
COORD cx, cy;
|
||||
COUNT facing, angle;
|
||||
SIZE offs_x, offs_y;
|
||||
@@ -302,7 +314,6 @@ initialize_dual_weapons (ELEMENT *ShipPtr, HELEMENT WeaponArray[])
|
||||
|
||||
if (ShipPtr->next.image.farray == StarShipPtr->RaceDescPtr->ship_data.ship)
|
||||
{
|
||||
#define WING_OFFS DISPLAY_TO_WORLD (10)
|
||||
COORD ex, ey;
|
||||
LASER_BLOCK LaserBlock;
|
||||
ELEMENT *LaserPtr;
|
||||
@@ -342,11 +353,6 @@ initialize_dual_weapons (ELEMENT *ShipPtr, HELEMENT WeaponArray[])
|
||||
}
|
||||
else
|
||||
{
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 0
|
||||
#define MISSILE_LIFE 40
|
||||
#define LAUNCH_OFFS DISPLAY_TO_WORLD (4)
|
||||
MISSILE_BLOCK TorpBlock;
|
||||
ELEMENT *TorpPtr;
|
||||
|
||||
|
||||
@@ -20,26 +20,34 @@
|
||||
#include "mycon.h"
|
||||
#include "resinst.h"
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 20
|
||||
#define MAX_ENERGY 40
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 20
|
||||
#define SPECIAL_ENERGY_COST MAX_ENERGY
|
||||
#define ENERGY_WAIT 4
|
||||
#define MAX_THRUST /* DISPLAY_TO_WORLD (7) */ 27
|
||||
#define THRUST_INCREMENT /* DISPLAY_TO_WORLD (2) */ 9
|
||||
#define TURN_WAIT 6
|
||||
#define THRUST_WAIT 6
|
||||
#define WEAPON_WAIT 5
|
||||
#define SPECIAL_WAIT 0
|
||||
|
||||
#define TURN_WAIT 6
|
||||
#define SHIP_MASS 7
|
||||
|
||||
// Plasmoid
|
||||
#define WEAPON_ENERGY_COST 20
|
||||
#define WEAPON_WAIT 5
|
||||
#define MYCON_OFFSET 24
|
||||
#define MISSILE_OFFSET 0
|
||||
#define NUM_PLASMAS 11
|
||||
#define NUM_GLOBALLS 8
|
||||
#define PLASMA_DURATION 13
|
||||
#define MISSILE_LIFE (NUM_PLASMAS * PLASMA_DURATION)
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (8)
|
||||
#define MISSILE_DAMAGE 10
|
||||
#define TRACK_WAIT 1
|
||||
|
||||
// Regenerate
|
||||
#define SPECIAL_ENERGY_COST MAX_ENERGY
|
||||
#define SPECIAL_WAIT 0
|
||||
#define REGENERATION_AMOUNT 4
|
||||
|
||||
static RACE_DESC mycon_desc =
|
||||
{
|
||||
@@ -112,10 +120,6 @@ static RACE_DESC mycon_desc =
|
||||
0, /* CodeRef */
|
||||
};
|
||||
|
||||
#define MISSILE_DAMAGE 10
|
||||
|
||||
#define TRACK_WAIT 1
|
||||
|
||||
static void
|
||||
plasma_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -297,8 +301,6 @@ mycon_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
static COUNT
|
||||
initialize_plasma (ELEMENT *ShipPtr, HELEMENT PlasmaArray[])
|
||||
{
|
||||
#define MYCON_OFFSET 24
|
||||
#define MISSILE_OFFSET 0
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -343,7 +345,6 @@ mycon_postprocess (ELEMENT *ElementPtr)
|
||||
&& ElementPtr->crew_level != StarShipPtr->RaceDescPtr->ship_info.max_crew
|
||||
&& DeltaEnergy (ElementPtr, -SPECIAL_ENERGY_COST))
|
||||
{
|
||||
#define REGENERATION_AMOUNT 4
|
||||
SIZE add_crew;
|
||||
|
||||
ProcessSound (SetAbsSoundIndex (
|
||||
|
||||
+31
-24
@@ -24,24 +24,42 @@
|
||||
#include "uqm/globdata.h"
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 16
|
||||
#define MAX_ENERGY 20
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST (MAX_ENERGY / 3)
|
||||
#define SPECIAL_ENERGY_COST 0
|
||||
#define ENERGY_WAIT 6
|
||||
#define MAX_THRUST 35
|
||||
#define THRUST_INCREMENT 5
|
||||
#define TURN_WAIT 1
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT 4
|
||||
#define SPECIAL_WAIT 12
|
||||
|
||||
#define TURN_WAIT 1
|
||||
#define SHIP_MASS 4
|
||||
|
||||
// Howitzer
|
||||
#define WEAPON_ENERGY_COST (MAX_ENERGY / 3)
|
||||
#define WEAPON_WAIT 4
|
||||
#define ORZ_OFFSET 9
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (30)
|
||||
#define MISSILE_LIFE 12
|
||||
#define MISSILE_HITS 2
|
||||
#define MISSILE_DAMAGE 3
|
||||
#define MISSILE_OFFSET 1
|
||||
|
||||
// Marine
|
||||
#define SPECIAL_ENERGY_COST 0
|
||||
#define SPECIAL_WAIT 12
|
||||
#define MARINE_MAX_THRUST 32
|
||||
#define MARINE_THRUST_INCREMENT 8
|
||||
#define MARINE_HIT_POINTS 3
|
||||
#define MARINE_MASS_POINTS 1
|
||||
#define MAX_MARINES 8
|
||||
#define MARINE_WAIT 12
|
||||
#define ION_LIFE 1
|
||||
#define START_ION_COLOR BUILD_COLOR (MAKE_RGB15 (0x1F, 0x15, 0x00), 0x7A)
|
||||
|
||||
// Rotating Turret
|
||||
#define TURRET_OFFSET 14
|
||||
#define TURRET_WAIT 3
|
||||
|
||||
static RACE_DESC orz_desc =
|
||||
{
|
||||
@@ -122,15 +140,9 @@ howitzer_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
weapon_collision (ElementPtr0, pPt0, ElementPtr1, pPt1);
|
||||
}
|
||||
|
||||
#define TURRET_OFFSET 14
|
||||
#define TURRET_WAIT 3
|
||||
|
||||
static COUNT
|
||||
initialize_turret_missile (ELEMENT *ShipPtr, HELEMENT MissileArray[])
|
||||
{
|
||||
#define MISSILE_HITS 2
|
||||
#define MISSILE_DAMAGE 3
|
||||
#define MISSILE_OFFSET 1
|
||||
ELEMENT *TurretPtr;
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
@@ -180,8 +192,6 @@ initialize_turret_missile (ELEMENT *ShipPtr, HELEMENT MissileArray[])
|
||||
return (1);
|
||||
}
|
||||
|
||||
#define MAX_MARINES 8
|
||||
|
||||
static BYTE
|
||||
count_marines (STARSHIP *StarShipPtr, BOOLEAN FindSpot)
|
||||
{
|
||||
@@ -310,8 +320,6 @@ orz_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
UnlockElement (GetSuccElement (ShipPtr));
|
||||
}
|
||||
|
||||
#define START_ION_COLOR BUILD_COLOR (MAKE_RGB15 (0x1F, 0x15, 0x00), 0x7A)
|
||||
|
||||
static void
|
||||
ion_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -352,8 +360,6 @@ ion_preprocess (ELEMENT *ElementPtr)
|
||||
|
||||
static void marine_preprocess (ELEMENT *ElementPtr);
|
||||
|
||||
#define MARINE_WAIT 12
|
||||
|
||||
void
|
||||
intruder_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -475,7 +481,6 @@ spawn_marine_ion_trail (ELEMENT *ElementPtr, STARSHIP *StarShipPtr,
|
||||
hIonElement = AllocElement ();
|
||||
if (hIonElement)
|
||||
{
|
||||
#define ION_LIFE 1
|
||||
COUNT angle;
|
||||
ELEMENT *IonElementPtr;
|
||||
|
||||
@@ -698,8 +703,10 @@ marine_preprocess (ELEMENT *ElementPtr)
|
||||
// XXX: thrust_wait is abused to store marine speed and
|
||||
// gravity well flags
|
||||
StarShipPtr->cur_status_flags = ElementPtr->thrust_wait << 6;
|
||||
StarShipPtr->RaceDescPtr->characteristics.thrust_increment = 8;
|
||||
StarShipPtr->RaceDescPtr->characteristics.max_thrust = 32;
|
||||
StarShipPtr->RaceDescPtr->characteristics.thrust_increment =
|
||||
MARINE_THRUST_INCREMENT;
|
||||
StarShipPtr->RaceDescPtr->characteristics.max_thrust =
|
||||
MARINE_MAX_THRUST;
|
||||
|
||||
thrust_status = inertial_thrust (ElementPtr);
|
||||
|
||||
@@ -965,8 +972,8 @@ turret_postprocess (ELEMENT *ElementPtr)
|
||||
SpaceMarinePtr->state_flags = IGNORE_SIMILAR | APPEARING
|
||||
| CREW_OBJECT;
|
||||
SpaceMarinePtr->life_span = NORMAL_LIFE;
|
||||
SpaceMarinePtr->hit_points = 3;
|
||||
SpaceMarinePtr->mass_points = 1;
|
||||
SpaceMarinePtr->hit_points = MARINE_HIT_POINTS;
|
||||
SpaceMarinePtr->mass_points = MARINE_MASS_POINTS;
|
||||
|
||||
facing = FACING_TO_ANGLE (StarShipPtr->ShipFacing);
|
||||
SpaceMarinePtr->current.location.x =
|
||||
|
||||
@@ -24,23 +24,36 @@
|
||||
#include "uqm/tactrans.h"
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 8
|
||||
#define MAX_ENERGY 12
|
||||
#define ENERGY_REGENERATION 0
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SPECIAL_ENERGY_COST 2
|
||||
#define ENERGY_WAIT 0
|
||||
#define MAX_THRUST 64
|
||||
#define THRUST_INCREMENT 16
|
||||
#define TURN_WAIT 0
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 16
|
||||
|
||||
#define TURN_WAIT 0
|
||||
#define SHIP_MASS 1
|
||||
|
||||
// Triple Miniguns
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define WEAPON_WAIT 0
|
||||
#define PKUNK_OFFSET 15
|
||||
#define MISSILE_OFFSET 1
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (24)
|
||||
#define MISSILE_LIFE 5
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
|
||||
// Taunt
|
||||
#define SPECIAL_ENERGY_COST 2
|
||||
#define SPECIAL_WAIT 16
|
||||
|
||||
// Respawn
|
||||
#define PHOENIX_LIFE 12
|
||||
#define START_PHOENIX_COLOR BUILD_COLOR (MAKE_RGB15 (0x1F, 0x15, 0x00), 0x7A)
|
||||
#define TRANSITION_LIFE 1
|
||||
#define TRANSITION_SPEED DISPLAY_TO_WORLD (20)
|
||||
|
||||
static RACE_DESC pkunk_desc =
|
||||
{
|
||||
@@ -173,10 +186,6 @@ animate (ELEMENT *ElementPtr)
|
||||
static COUNT
|
||||
initialize_bug_missile (ELEMENT *ShipPtr, HELEMENT MissileArray[])
|
||||
{
|
||||
#define PKUNK_OFFSET 15
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 1
|
||||
COUNT i;
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
@@ -363,9 +372,6 @@ intercept_pkunk_death (ELEMENT *ElementPtr)
|
||||
UnlockElement (StarShipPtr->hShip);
|
||||
}
|
||||
|
||||
#define START_PHOENIX_COLOR BUILD_COLOR (MAKE_RGB15 (0x1F, 0x15, 0x00), 0x7A)
|
||||
#define TRANSITION_LIFE 1
|
||||
|
||||
static void
|
||||
spawn_phoenix_trail (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -399,8 +405,6 @@ spawn_phoenix_trail (ELEMENT *ElementPtr)
|
||||
} // else, the element disappears.
|
||||
}
|
||||
|
||||
#define PHOENIX_LIFE 12
|
||||
|
||||
static void
|
||||
phoenix_transition (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -417,7 +421,6 @@ phoenix_transition (ELEMENT *ElementPtr)
|
||||
}
|
||||
else if ((hShipImage = AllocElement ()))
|
||||
{
|
||||
#define TRANSITION_SPEED DISPLAY_TO_WORLD (20)
|
||||
COUNT angle;
|
||||
|
||||
PutElement (hShipImage);
|
||||
|
||||
@@ -24,12 +24,10 @@
|
||||
#include "uqm/tactrans.h"
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 6
|
||||
#define MAX_ENERGY 4
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SPECIAL_ENERGY_COST 0
|
||||
#define ENERGY_WAIT 9
|
||||
#define MAX_THRUST 35
|
||||
#define THRUST_INCREMENT 5
|
||||
@@ -37,10 +35,24 @@
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT 3
|
||||
#define SPECIAL_WAIT 0
|
||||
|
||||
#define SHIP_MASS 1
|
||||
|
||||
// Dart Gun
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SHOFIXTI_OFFSET 15
|
||||
#define MISSILE_OFFSET 1
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (24)
|
||||
#define MISSILE_LIFE 10
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
|
||||
// Glory Device
|
||||
#define SPECIAL_ENERGY_COST 0
|
||||
#define DESTRUCT_RANGE 180
|
||||
#define MAX_DESTRUCTION (DESTRUCT_RANGE / 10)
|
||||
|
||||
// Full game: Tanaka/Katana's damaged ships
|
||||
#define NUM_LIMPETS 3
|
||||
|
||||
static RACE_DESC shofixti_desc =
|
||||
{
|
||||
@@ -116,10 +128,7 @@ static RACE_DESC shofixti_desc =
|
||||
static COUNT
|
||||
initialize_standard_missile (ELEMENT *ShipPtr, HELEMENT MissileArray[])
|
||||
{
|
||||
#define SHOFIXTI_OFFSET 15
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 1
|
||||
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -266,7 +275,6 @@ self_destruct_kill_objects (ELEMENT *ElementPtr)
|
||||
continue;
|
||||
}
|
||||
|
||||
#define DESTRUCT_RANGE 180
|
||||
delta_x = ObjPtr->next.location.x - ElementPtr->next.location.x;
|
||||
if (delta_x < 0)
|
||||
delta_x = -delta_x;
|
||||
@@ -279,7 +287,6 @@ self_destruct_kill_objects (ELEMENT *ElementPtr)
|
||||
if (delta_x <= DESTRUCT_RANGE && delta_y <= DESTRUCT_RANGE
|
||||
&& dist <= DESTRUCT_RANGE * DESTRUCT_RANGE)
|
||||
{
|
||||
#define MAX_DESTRUCTION (DESTRUCT_RANGE / 10)
|
||||
int destruction = 1 + MAX_DESTRUCTION *
|
||||
(DESTRUCT_RANGE - square_root (dist)) / DESTRUCT_RANGE;
|
||||
|
||||
@@ -462,7 +469,6 @@ init_shofixti (void)
|
||||
&& !GET_GAME_STATE (SHOFIXTI_RECRUITED))
|
||||
{
|
||||
// Tanaka/Katana flies in a damaged ship.
|
||||
#define NUM_LIMPETS 3
|
||||
COUNT i;
|
||||
|
||||
new_shofixti_desc.ship_data.ship_rsc[0] = OLDSHOF_BIG_MASK_PMAP_ANIM;
|
||||
@@ -484,7 +490,10 @@ init_shofixti (void)
|
||||
--new_shofixti_desc.characteristics.turn_wait;
|
||||
if (++new_shofixti_desc.characteristics.thrust_wait == 0)
|
||||
--new_shofixti_desc.characteristics.thrust_wait;
|
||||
|
||||
/* This should be the same as MIN_THRUST_INCREMENT in vux.c */
|
||||
#define MIN_THRUST_INCREMENT DISPLAY_TO_WORLD (1)
|
||||
|
||||
if (new_shofixti_desc.characteristics.thrust_increment <=
|
||||
MIN_THRUST_INCREMENT)
|
||||
{
|
||||
|
||||
@@ -26,27 +26,73 @@
|
||||
#include "uqm/hyper.h"
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
#define MAX_TRACKING 3
|
||||
#define MAX_DEFENSE 8
|
||||
/* Core characteristics.
|
||||
* All of these are changed at init time by some module, except for
|
||||
* MAX_ENERGY, THRUST_INCREMENT, and SHIP_MASS. */
|
||||
|
||||
#define MAX_CREW MAX_CREW_SIZE
|
||||
/* This value gets thrown out - actual max crew is determined by the
|
||||
* number of crew pods. The minimum value is 1 (just the Captain). */
|
||||
|
||||
#define MAX_ENERGY MAX_ENERGY_SIZE
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SPECIAL_ENERGY_COST 0
|
||||
#define ENERGY_WAIT 10
|
||||
#define MAX_THRUST 10
|
||||
#define THRUST_INCREMENT 4
|
||||
#define TURN_WAIT 17
|
||||
#define THRUST_WAIT 6
|
||||
#define WEAPON_WAIT 6
|
||||
#define SPECIAL_WAIT 9
|
||||
/* Shiva furnaces increase this by 1 each. */
|
||||
#define SHIVA_ENERGY_REGEN_INC 1
|
||||
|
||||
#define ENERGY_WAIT 10
|
||||
/* Dynamos decrease this by 2 each, to a minimum of 4. */
|
||||
#define MIN_ENERGY_WAIT 4
|
||||
#define DYNAMO_UNIT_ENERGY_WAIT_DEC 2
|
||||
|
||||
#define MAX_THRUST 10
|
||||
/* Thrusters increase this and decrease THRUST_WAIT based on
|
||||
* THRUST_INCREMENT, see InitDriveSlots near the bottom of this file
|
||||
* for details. */
|
||||
#define THRUST_INCREMENT 4
|
||||
#define THRUST_WAIT 6
|
||||
#define TURN_WAIT 17
|
||||
/* Turning jets decrease by 2 each */
|
||||
#define SHIP_MASS MAX_SHIP_MASS
|
||||
|
||||
|
||||
/* Primary weapon - energy cost and damage change at init time based on
|
||||
* the number and type of weapon modules installed. */
|
||||
|
||||
#define BLASTER_DAMAGE 2
|
||||
/* This is the damage value for the basic ion bolt guns. Fusion
|
||||
* blasters and hellbore cannons end up doing (BLASTER_DAMAGE * 2)
|
||||
* and (BLASTER_DAMAGE * 3) damage, respectively, but this depends
|
||||
* on enum values. */
|
||||
|
||||
#define BLASTER_HITS 2 /* Hitpoints for ion bolt guns, see BLASTER_DAMAGE */
|
||||
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
/* This value gets thrown out and reset in an ugly manner based on
|
||||
* the enum that is used for module IDs. Bigger gun = higher value.
|
||||
*/
|
||||
#define WEAPON_WAIT 6
|
||||
#define BLASTER_SPEED DISPLAY_TO_WORLD (24)
|
||||
#define BLASTER_LIFE 12
|
||||
/* This value is greatly increased, based in part on the enum used
|
||||
* for module IDs (bigger gun == longer life). See the first half of
|
||||
* InitWeaponSlots */
|
||||
#define MAX_TRACKING 3
|
||||
#define TRACKER_ENERGY_COST 3
|
||||
#define BLASTER_OFFSET 8
|
||||
#define SIS_VERT_OFFSET 28
|
||||
/* Used for foward, spread, and rear slots */
|
||||
#define SIS_HORZ_OFFSET 20
|
||||
/* Used for side slot */
|
||||
|
||||
|
||||
/* Secondary weapon */
|
||||
#define SPECIAL_ENERGY_COST 0
|
||||
/* Increased by 1 for each point defense module */
|
||||
#define ANTIMISSILE_ENERGY_INC 1
|
||||
#define SPECIAL_WAIT 9
|
||||
#define LASER_RANGE (UWORD)100
|
||||
#define MAX_DEFENSE 8
|
||||
|
||||
|
||||
static RACE_DESC sis_desc =
|
||||
{
|
||||
@@ -404,7 +450,6 @@ spawn_point_defense (ELEMENT *ElementPtr)
|
||||
if (ObjectPtr != ShipPtr && CollidingElement (ObjectPtr) &&
|
||||
!OBJECT_CLOAKED (ObjectPtr))
|
||||
{
|
||||
#define LASER_RANGE (UWORD)100
|
||||
SIZE delta_x, delta_y;
|
||||
|
||||
delta_x = ObjectPtr->next.location.x -
|
||||
@@ -507,8 +552,6 @@ sis_battle_postprocess (ELEMENT *ElementPtr)
|
||||
}
|
||||
}
|
||||
|
||||
#define BLASTER_DAMAGE 2
|
||||
|
||||
static void
|
||||
blaster_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
ELEMENT *ElementPtr1, POINT *pPt1)
|
||||
@@ -588,10 +631,6 @@ blaster_preprocess (ELEMENT *ElementPtr)
|
||||
static COUNT
|
||||
initialize_blasters (ELEMENT *ShipPtr, HELEMENT BlasterArray[])
|
||||
{
|
||||
#define SIS_VERT_OFFSET 28
|
||||
#define SIS_HORZ_OFFSET 20
|
||||
#define BLASTER_HITS 2
|
||||
#define BLASTER_OFFSET 8
|
||||
BYTE nt;
|
||||
COUNT i;
|
||||
STARSHIP *StarShipPtr;
|
||||
@@ -707,10 +746,6 @@ sis_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
static void
|
||||
InitWeaponSlots (RACE_DESC *RaceDescPtr, const BYTE *ModuleSlots)
|
||||
{
|
||||
#define SIS_VERT_OFFSET 28
|
||||
#define SIS_HORZ_OFFSET 20
|
||||
#define BLASTER_HITS 2
|
||||
#define BLASTER_OFFSET 8
|
||||
COUNT i;
|
||||
SIS_DATA *SisData = GetCustomShipData (RaceDescPtr);
|
||||
MISSILE_BLOCK *lpMB = SisData->MissileBlock;
|
||||
@@ -810,22 +845,26 @@ InitModuleSlots (RACE_DESC *RaceDescPtr, const BYTE *ModuleSlots)
|
||||
++num_trackers;
|
||||
break;
|
||||
case ANTIMISSILE_DEFENSE:
|
||||
++RaceDescPtr->characteristics.special_energy_cost;
|
||||
RaceDescPtr->characteristics.special_energy_cost +=
|
||||
ANTIMISSILE_ENERGY_INC;
|
||||
break;
|
||||
case SHIVA_FURNACE:
|
||||
++RaceDescPtr->characteristics.energy_regeneration;
|
||||
RaceDescPtr->characteristics.energy_regeneration +=
|
||||
SHIVA_ENERGY_REGEN_INC;
|
||||
break;
|
||||
case DYNAMO_UNIT:
|
||||
RaceDescPtr->characteristics.energy_wait -= 2;
|
||||
if (RaceDescPtr->characteristics.energy_wait < 4)
|
||||
RaceDescPtr->characteristics.energy_wait = 4;
|
||||
RaceDescPtr->characteristics.energy_wait -=
|
||||
DYNAMO_UNIT_ENERGY_WAIT_DEC;
|
||||
if (RaceDescPtr->characteristics.energy_wait < MIN_ENERGY_WAIT)
|
||||
RaceDescPtr->characteristics.energy_wait = MIN_ENERGY_WAIT;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (num_trackers > MAX_TRACKING)
|
||||
num_trackers = MAX_TRACKING;
|
||||
RaceDescPtr->characteristics.weapon_energy_cost += num_trackers * 3;
|
||||
RaceDescPtr->characteristics.weapon_energy_cost +=
|
||||
num_trackers * TRACKER_ENERGY_COST;
|
||||
SisData->num_trackers = num_trackers;
|
||||
if (RaceDescPtr->characteristics.special_energy_cost)
|
||||
{
|
||||
|
||||
@@ -23,22 +23,30 @@
|
||||
#include "uqm/globdata.h"
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 12
|
||||
#define MAX_ENERGY 20
|
||||
#define ENERGY_REGENERATION 0
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define SPECIAL_ENERGY_COST 0
|
||||
#define ENERGY_WAIT 10
|
||||
#define MAX_THRUST 60
|
||||
#define THRUST_INCREMENT MAX_THRUST
|
||||
#define TURN_WAIT 0
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT 17
|
||||
#define SPECIAL_WAIT 20
|
||||
|
||||
#define TURN_WAIT 0
|
||||
#define SHIP_MASS 1
|
||||
|
||||
// Lightning weapon
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define WEAPON_WAIT 17
|
||||
#define SLYLANDRO_OFFSET 9
|
||||
#define LASER_LENGTH 32
|
||||
/* Total length of lighting bolts. Actual range is usually less than
|
||||
* this, since the lightning rarely is straight. */
|
||||
|
||||
// Harvester
|
||||
#define SPECIAL_ENERGY_COST 0
|
||||
#define SPECIAL_WAIT 20
|
||||
#define HARVEST_RANGE (208 * 3 / 8)
|
||||
/* Was originally (SPACE_HEIGHT * 3 / 8) */
|
||||
|
||||
static RACE_DESC slylandro_desc =
|
||||
{
|
||||
@@ -238,9 +246,8 @@ initialize_lightning (ELEMENT *ElementPtr, HELEMENT LaserArray[])
|
||||
angle += LOWORD (rand_val) & (QUADRANT - 1);
|
||||
else
|
||||
angle -= LOWORD (rand_val) & (QUADRANT - 1);
|
||||
#define LASER_RANGE 32
|
||||
delta = WORLD_TO_VELOCITY (
|
||||
DISPLAY_TO_WORLD ((HIWORD (rand_val) & (LASER_RANGE - 1)) + 4)
|
||||
DISPLAY_TO_WORLD ((HIWORD (rand_val) & (LASER_LENGTH - 1)) + 4)
|
||||
);
|
||||
SetVelocityComponents (&LaserPtr->velocity,
|
||||
COSINE (angle, delta), SINE (angle, delta));
|
||||
@@ -313,8 +320,6 @@ harvest_space_junk (ELEMENT *ElementPtr)
|
||||
&& !GRAVITY_MASS (ObjPtr->mass_points)
|
||||
&& CollisionPossible (ObjPtr, ElementPtr))
|
||||
{
|
||||
//HARVEST_RANGE was originally (SPACE_HEIGHT * 3 / 8)
|
||||
#define HARVEST_RANGE (208 * 3 / 8)
|
||||
SIZE dx, dy;
|
||||
|
||||
if ((dx = ObjPtr->next.location.x
|
||||
|
||||
@@ -20,23 +20,39 @@
|
||||
#include "spathi.h"
|
||||
#include "resinst.h"
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 30
|
||||
#define MAX_ENERGY 10
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define SPECIAL_ENERGY_COST 3
|
||||
#define ENERGY_WAIT 10
|
||||
#define MAX_THRUST 48
|
||||
#define THRUST_INCREMENT 12
|
||||
#define TURN_WAIT 1
|
||||
#define THRUST_WAIT 1
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 7
|
||||
|
||||
#define TURN_WAIT 1
|
||||
#define SHIP_MASS 5
|
||||
|
||||
// Forward gun
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPATHI_FORWARD_OFFSET 16
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (30)
|
||||
#define MISSILE_LIFE 10
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 1
|
||||
#define MISSILE_RANGE (MISSILE_SPEED * MISSILE_LIFE)
|
||||
/* This is for the cyborg only. */
|
||||
|
||||
// B.U.T.T.
|
||||
#define SPECIAL_ENERGY_COST 3
|
||||
#define SPECIAL_WAIT 7
|
||||
#define SPATHI_REAR_OFFSET 20
|
||||
#define DISCRIMINATOR_SPEED DISPLAY_TO_WORLD (8)
|
||||
#define DISCRIMINATOR_LIFE 30
|
||||
#define DISCRIMINATOR_HITS 1
|
||||
#define DISCRIMINATOR_DAMAGE 2
|
||||
#define DISCRIMINATOR_OFFSET 4
|
||||
#define TRACK_WAIT 1
|
||||
|
||||
static RACE_DESC spathi_desc =
|
||||
{
|
||||
@@ -109,9 +125,6 @@ static RACE_DESC spathi_desc =
|
||||
0, /* CodeRef */
|
||||
};
|
||||
|
||||
#define DISCRIMINATOR_SPEED DISPLAY_TO_WORLD (8)
|
||||
#define TRACK_WAIT 1
|
||||
|
||||
static void
|
||||
butt_missile_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -140,11 +153,6 @@ butt_missile_preprocess (ELEMENT *ElementPtr)
|
||||
static void
|
||||
spawn_butt_missile (ELEMENT *ShipPtr)
|
||||
{
|
||||
#define SPATHI_REAR_OFFSET 20
|
||||
#define DISCRIMINATOR_LIFE 30
|
||||
#define DISCRIMINATOR_HITS 1
|
||||
#define DISCRIMINATOR_DAMAGE 2
|
||||
#define DISCRIMINATOR_OFFSET 4
|
||||
HELEMENT ButtMissile;
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK ButtMissileBlock;
|
||||
@@ -239,10 +247,6 @@ spathi_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
static COUNT
|
||||
initialize_standard_missile (ELEMENT *ShipPtr, HELEMENT MissileArray[])
|
||||
{
|
||||
#define SPATHI_FORWARD_OFFSET 16
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 1
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
|
||||
@@ -22,23 +22,32 @@
|
||||
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 12
|
||||
#define MAX_ENERGY 16
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SPECIAL_ENERGY_COST 1
|
||||
#define ENERGY_WAIT 4
|
||||
#define MAX_THRUST 40
|
||||
#define THRUST_INCREMENT 8
|
||||
#define TURN_WAIT 1
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT 2
|
||||
#define SPECIAL_WAIT 0
|
||||
|
||||
#define TURN_WAIT 1
|
||||
#define SHIP_MASS 4
|
||||
|
||||
// Gob launcher
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define WEAPON_WAIT 2
|
||||
#define SUPOX_OFFSET 23
|
||||
#define MISSILE_OFFSET 2
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (30)
|
||||
#define MISSILE_LIFE 10
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
|
||||
// Lateral/reverse thrust
|
||||
#define SPECIAL_ENERGY_COST 1
|
||||
/* Unused - uncomment below to enable. */
|
||||
#define SPECIAL_WAIT 0
|
||||
/* Unused except to initialize supox_desc.special_wait */
|
||||
|
||||
static RACE_DESC supox_desc =
|
||||
{
|
||||
@@ -179,10 +188,6 @@ supox_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
static COUNT
|
||||
initialize_horn (ELEMENT *ShipPtr, HELEMENT HornArray[])
|
||||
{
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 2
|
||||
#define SUPOX_OFFSET 23
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
|
||||
@@ -22,24 +22,33 @@
|
||||
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define SYREEN_MAX_CREW_SIZE MAX_CREW_SIZE
|
||||
#define MAX_CREW 12
|
||||
#define MAX_ENERGY 16
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SPECIAL_ENERGY_COST 5
|
||||
#define ENERGY_WAIT 6
|
||||
#define MAX_THRUST /* DISPLAY_TO_WORLD (8) */ 36
|
||||
#define THRUST_INCREMENT /* DISPLAY_TO_WORLD (2) */ 9
|
||||
#define TURN_WAIT 1
|
||||
#define THRUST_WAIT 1
|
||||
#define WEAPON_WAIT 8
|
||||
#define SPECIAL_WAIT 20
|
||||
|
||||
#define TURN_WAIT 1
|
||||
#define SHIP_MASS 2
|
||||
|
||||
// Particle Beam Stiletto
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define WEAPON_WAIT 8
|
||||
#define SYREEN_OFFSET 30
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (30)
|
||||
#define MISSILE_LIFE 10
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 2
|
||||
#define MISSILE_OFFSET 3
|
||||
|
||||
// Syreen song
|
||||
#define SPECIAL_ENERGY_COST 5
|
||||
#define SPECIAL_WAIT 20
|
||||
#define ABANDONER_RANGE 208 /* originally SPACE_HEIGHT */
|
||||
#define MAX_ABANDONERS 8
|
||||
|
||||
static RACE_DESC syreen_desc =
|
||||
{
|
||||
@@ -115,10 +124,6 @@ static RACE_DESC syreen_desc =
|
||||
static COUNT
|
||||
initialize_dagger (ELEMENT *ShipPtr, HELEMENT DaggerArray[])
|
||||
{
|
||||
#define SYREEN_OFFSET 30
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 2
|
||||
#define MISSILE_OFFSET 3
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -194,13 +199,11 @@ spawn_crew (ELEMENT *ElementPtr)
|
||||
|
||||
dx = WORLD_TO_DISPLAY (dx);
|
||||
dy = WORLD_TO_DISPLAY (dy);
|
||||
#define ABANDONER_RANGE 208 /* originally SPACE_HEIGHT */
|
||||
if (dx <= ABANDONER_RANGE && dy <= ABANDONER_RANGE
|
||||
&& (d_squared = (DWORD)((UWORD)dx * (UWORD)dx)
|
||||
+ (DWORD)((UWORD)dy * (UWORD)dy)) <=
|
||||
(DWORD)((UWORD)ABANDONER_RANGE * (UWORD)ABANDONER_RANGE))
|
||||
{
|
||||
#define MAX_ABANDONERS 8
|
||||
COUNT crew_loss;
|
||||
|
||||
crew_loss = ((MAX_ABANDONERS
|
||||
|
||||
@@ -22,24 +22,42 @@
|
||||
|
||||
#include "uqm/globdata.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 8
|
||||
#define MAX_ENERGY 24
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define SPECIAL_ENERGY_COST 1
|
||||
#define ENERGY_WAIT 6
|
||||
#define MAX_THRUST 28
|
||||
#define THRUST_INCREMENT 7
|
||||
#define TURN_WAIT 1
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT 12
|
||||
#define SPECIAL_WAIT 0
|
||||
|
||||
#define TURN_WAIT 1
|
||||
#define SHIP_MASS 7
|
||||
#define THRADDASH_OFFSET 9
|
||||
|
||||
// Ion Blasters
|
||||
#define WEAPON_ENERGY_COST 2
|
||||
#define WEAPON_WAIT 12
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (30)
|
||||
#define MISSILE_LIFE 15
|
||||
#define MISSILE_OFFSET 3
|
||||
#define THRADDASH_OFFSET 9
|
||||
#define MISSILE_HITS 2
|
||||
#define MISSILE_DAMAGE 1
|
||||
|
||||
// Afterburner
|
||||
#define SPECIAL_ENERGY_COST 1
|
||||
#define SPECIAL_WAIT 0
|
||||
#define SPECIAL_THRUST_INCREMENT 12
|
||||
#define SPECIAL_MAX_THRUST 72
|
||||
#define NAPALM_LIFE 48
|
||||
#define NAPALM_OFFSET 0
|
||||
#define NAPALM_HITS 1
|
||||
#define NAPALM_DAMAGE 2
|
||||
#define NAPALM_DECAY_RATE 5
|
||||
/* Controls the speed of the afterburner "decay" animation; it will
|
||||
* decay one step (one animation frame) per NAPALM_DECAY_RATE
|
||||
* frames. */
|
||||
#define NUM_NAPALM_FADES 6
|
||||
|
||||
|
||||
static RACE_DESC thraddash_desc =
|
||||
{
|
||||
@@ -202,8 +220,6 @@ thraddash_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
}
|
||||
}
|
||||
|
||||
#define NAPALM_WAIT 1
|
||||
|
||||
static void
|
||||
flame_napalm_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -220,24 +236,26 @@ flame_napalm_preprocess (ELEMENT *ElementPtr)
|
||||
InitIntersectEndPoint (ElementPtr);
|
||||
InitIntersectFrame (ElementPtr);
|
||||
}
|
||||
/* turn_wait is abused here to store the speed of the decay animation */
|
||||
else if (ElementPtr->turn_wait > 0)
|
||||
--ElementPtr->turn_wait;
|
||||
else
|
||||
{
|
||||
#define NUM_NAPALM_FADES 6
|
||||
if (ElementPtr->life_span <= NUM_NAPALM_FADES * (NAPALM_WAIT + 1)
|
||||
if (ElementPtr->life_span <= NUM_NAPALM_FADES * (NAPALM_DECAY_RATE + 1)
|
||||
|| GetFrameIndex (
|
||||
ElementPtr->current.image.frame
|
||||
) != NUM_NAPALM_FADES)
|
||||
ElementPtr->next.image.frame =
|
||||
DecFrameIndex (ElementPtr->current.image.frame);
|
||||
else if (ElementPtr->life_span > NUM_NAPALM_FADES * (NAPALM_WAIT + 1))
|
||||
else if (ElementPtr->life_span > NUM_NAPALM_FADES * (NAPALM_DECAY_RATE + 1))
|
||||
ElementPtr->next.image.frame = SetAbsFrameIndex (
|
||||
ElementPtr->current.image.frame,
|
||||
GetFrameCount (ElementPtr->current.image.frame) - 1
|
||||
);
|
||||
|
||||
ElementPtr->turn_wait = NAPALM_WAIT;
|
||||
/* turn_wait is abused here to store the speed of the decay
|
||||
* animation. */
|
||||
ElementPtr->turn_wait = NAPALM_DECAY_RATE;
|
||||
ElementPtr->state_flags |= CHANGING;
|
||||
}
|
||||
}
|
||||
@@ -245,9 +263,6 @@ flame_napalm_preprocess (ELEMENT *ElementPtr)
|
||||
static COUNT
|
||||
initialize_horn (ELEMENT *ShipPtr, HELEMENT HornArray[])
|
||||
{
|
||||
#define MISSILE_HITS 2
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 3
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -284,8 +299,6 @@ thraddash_preprocess (ELEMENT *ElementPtr)
|
||||
}
|
||||
else if (DeltaEnergy (ElementPtr, -SPECIAL_ENERGY_COST))
|
||||
{
|
||||
#define SPECIAL_THRUST_INCREMENT 12
|
||||
#define SPECIAL_MAX_THRUST 72
|
||||
COUNT max_thrust, thrust_increment;
|
||||
STATUS_FLAGS thrust_status;
|
||||
HELEMENT hTrailElement;
|
||||
@@ -317,10 +330,6 @@ thraddash_preprocess (ELEMENT *ElementPtr)
|
||||
StarShipPtr->RaceDescPtr->characteristics.max_thrust = max_thrust;
|
||||
|
||||
{
|
||||
#define NAPALM_HITS 1
|
||||
#define NAPALM_DAMAGE 2
|
||||
#define NAPALM_LIFE 48
|
||||
#define NAPALM_OFFSET 0
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
MissileBlock.cx = ElementPtr->next.location.x;
|
||||
@@ -348,7 +357,10 @@ thraddash_preprocess (ELEMENT *ElementPtr)
|
||||
LockElement (hTrailElement, &TrailElementPtr);
|
||||
SetElementStarShip (TrailElementPtr, StarShipPtr);
|
||||
TrailElementPtr->hTarget = 0;
|
||||
TrailElementPtr->turn_wait = NAPALM_WAIT;
|
||||
|
||||
/* turn_wait is abused here to store the speed of the decay
|
||||
* animation */
|
||||
TrailElementPtr->turn_wait = NAPALM_DECAY_RATE;
|
||||
|
||||
TrailElementPtr->state_flags |= NONSOLID;
|
||||
SetPrimType (
|
||||
|
||||
@@ -22,22 +22,31 @@
|
||||
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 10
|
||||
#define MAX_ENERGY 30
|
||||
#define ENERGY_REGENERATION MAX_ENERGY
|
||||
#define WEAPON_ENERGY_COST 0
|
||||
#define SPECIAL_ENERGY_COST 1
|
||||
#define ENERGY_WAIT 150
|
||||
#define MAX_THRUST /* DISPLAY_TO_WORLD (5) */ 18
|
||||
#define THRUST_INCREMENT /* DISPLAY_TO_WORLD (2) */ 6
|
||||
#define TURN_WAIT 4
|
||||
#define THRUST_WAIT 3
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 2
|
||||
|
||||
#define TURN_WAIT 4
|
||||
#define SHIP_MASS 1
|
||||
|
||||
// Antimatter cone
|
||||
#define WEAPON_ENERGY_COST 0
|
||||
#define WEAPON_WAIT 0
|
||||
#define UMGAH_OFFSET 0
|
||||
#define CONE_OFFSET 0
|
||||
#define CONE_SPEED 0
|
||||
#define CONE_HITS 100
|
||||
#define CONE_DAMAGE 1
|
||||
#define CONE_LIFE 1
|
||||
|
||||
// Retropropulsion
|
||||
#define SPECIAL_ENERGY_COST 1
|
||||
#define SPECIAL_WAIT 2
|
||||
#define JUMP_DIST DISPLAY_TO_WORLD (40)
|
||||
|
||||
static RACE_DESC umgah_desc =
|
||||
{
|
||||
@@ -179,8 +188,6 @@ cone_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
}
|
||||
}
|
||||
|
||||
#define JUMP_DIST DISPLAY_TO_WORLD (40)
|
||||
|
||||
static void
|
||||
umgah_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
COUNT ConcernCounter)
|
||||
@@ -299,12 +306,6 @@ umgah_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern,
|
||||
static COUNT
|
||||
initialize_cone (ELEMENT *ShipPtr, HELEMENT ConeArray[])
|
||||
{
|
||||
#define UMGAH_OFFSET 0
|
||||
#define MISSILE_SPEED 0
|
||||
#define MISSILE_HITS 100
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_LIFE 1
|
||||
#define MISSILE_OFFSET 0
|
||||
STARSHIP *StarShipPtr;
|
||||
UMGAH_DATA* UmgahData;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
@@ -317,12 +318,12 @@ initialize_cone (ELEMENT *ShipPtr, HELEMENT ConeArray[])
|
||||
MissileBlock.sender = ShipPtr->playerNr;
|
||||
MissileBlock.flags = IGNORE_SIMILAR;
|
||||
MissileBlock.pixoffs = UMGAH_OFFSET;
|
||||
MissileBlock.speed = MISSILE_SPEED;
|
||||
MissileBlock.hit_points = MISSILE_HITS;
|
||||
MissileBlock.damage = MISSILE_DAMAGE;
|
||||
MissileBlock.life = MISSILE_LIFE;
|
||||
MissileBlock.speed = CONE_SPEED;
|
||||
MissileBlock.hit_points = CONE_HITS;
|
||||
MissileBlock.damage = CONE_DAMAGE;
|
||||
MissileBlock.life = CONE_LIFE;
|
||||
MissileBlock.preprocess_func = cone_preprocess;
|
||||
MissileBlock.blast_offs = MISSILE_OFFSET;
|
||||
MissileBlock.blast_offs = CONE_OFFSET;
|
||||
|
||||
// This func is called every frame while the player is holding down WEAPON
|
||||
// Don't reset the cone FRAME to the first image every time
|
||||
|
||||
@@ -24,23 +24,39 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW MAX_CREW_SIZE
|
||||
#define MAX_ENERGY MAX_ENERGY_SIZE
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 6
|
||||
#define SPECIAL_ENERGY_COST 8
|
||||
#define ENERGY_WAIT 4
|
||||
#define MAX_THRUST 30
|
||||
#define THRUST_INCREMENT 6
|
||||
#define TURN_WAIT 4
|
||||
#define THRUST_WAIT 6
|
||||
#define WEAPON_WAIT 6
|
||||
#define SPECIAL_WAIT 9
|
||||
|
||||
#define TURN_WAIT 4
|
||||
#define SHIP_MASS 10
|
||||
|
||||
// Fusion blast
|
||||
#define WEAPON_ENERGY_COST 6
|
||||
#define WEAPON_WAIT 6
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (20)
|
||||
#define MISSILE_LIFE 20
|
||||
#define MISSILE_HITS 10
|
||||
#define MISSILE_DAMAGE 6
|
||||
#define MISSILE_OFFSET 8
|
||||
#define URQUAN_OFFSET 32
|
||||
|
||||
// Fighters
|
||||
#define SPECIAL_ENERGY_COST 8
|
||||
#define SPECIAL_WAIT 9
|
||||
#define FIGHTER_OFFSET 4
|
||||
#define FIGHTER_SPEED DISPLAY_TO_WORLD (8)
|
||||
#define ONE_WAY_FLIGHT 125
|
||||
#define TRACK_THRESHOLD 6
|
||||
#define FIGHTER_LIFE (ONE_WAY_FLIGHT + ONE_WAY_FLIGHT + 150)
|
||||
#define FIGHTER_HITS 1
|
||||
#define FIGHTER_MASS 0
|
||||
#define FIGHTER_WEAPON_WAIT 8
|
||||
#define FIGHTER_LASER_RANGE DISPLAY_TO_WORLD (40 + FIGHTER_OFFSET)
|
||||
|
||||
static RACE_DESC urquan_desc =
|
||||
{
|
||||
@@ -116,10 +132,6 @@ static RACE_DESC urquan_desc =
|
||||
static COUNT
|
||||
initialize_fusion (ELEMENT *ShipPtr, HELEMENT FusionArray[])
|
||||
{
|
||||
#define MISSILE_HITS 10
|
||||
#define MISSILE_DAMAGE 6
|
||||
#define MISSILE_OFFSET 8
|
||||
#define URQUAN_OFFSET 32
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -142,15 +154,6 @@ initialize_fusion (ELEMENT *ShipPtr, HELEMENT FusionArray[])
|
||||
return (1);
|
||||
}
|
||||
|
||||
#define TRACK_THRESHOLD 6
|
||||
#define FIGHTER_SPEED DISPLAY_TO_WORLD (8)
|
||||
#define ONE_WAY_FLIGHT 125
|
||||
#define FIGHTER_LIFE (ONE_WAY_FLIGHT + ONE_WAY_FLIGHT + 150)
|
||||
|
||||
#define FIGHTER_WEAPON_WAIT 8
|
||||
#define FIGHTER_OFFSET 4
|
||||
#define LASER_RANGE DISPLAY_TO_WORLD (40 + FIGHTER_OFFSET)
|
||||
|
||||
static void
|
||||
fighter_postprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
@@ -162,8 +165,8 @@ fighter_postprocess (ELEMENT *ElementPtr)
|
||||
LaserBlock.cx = ElementPtr->next.location.x;
|
||||
LaserBlock.cy = ElementPtr->next.location.y;
|
||||
LaserBlock.face = ElementPtr->thrust_wait;
|
||||
LaserBlock.ex = COSINE (FACING_TO_ANGLE (LaserBlock.face), LASER_RANGE);
|
||||
LaserBlock.ey = SINE (FACING_TO_ANGLE (LaserBlock.face), LASER_RANGE);
|
||||
LaserBlock.ex = COSINE (FACING_TO_ANGLE (LaserBlock.face), FIGHTER_LASER_RANGE);
|
||||
LaserBlock.ey = SINE (FACING_TO_ANGLE (LaserBlock.face), FIGHTER_LASER_RANGE);
|
||||
LaserBlock.sender = ElementPtr->playerNr;
|
||||
LaserBlock.flags = IGNORE_SIMILAR;
|
||||
LaserBlock.pixoffs = FIGHTER_OFFSET;
|
||||
@@ -256,10 +259,10 @@ fighter_preprocess (ELEMENT *ElementPtr)
|
||||
delta_y = WRAP_DELTA_Y (delta_y);
|
||||
|
||||
if (ElementPtr->thrust_wait == 0
|
||||
&& abs (delta_x) < LASER_RANGE * 3 / 4
|
||||
&& abs (delta_y) < LASER_RANGE * 3 / 4
|
||||
&& abs (delta_x) < FIGHTER_LASER_RANGE * 3 / 4
|
||||
&& abs (delta_y) < FIGHTER_LASER_RANGE * 3 / 4
|
||||
&& delta_x * delta_x + delta_y * delta_y <
|
||||
(LASER_RANGE * 3 / 4) * (LASER_RANGE * 3 / 4))
|
||||
(FIGHTER_LASER_RANGE * 3 / 4) * (FIGHTER_LASER_RANGE * 3 / 4))
|
||||
{
|
||||
ElementPtr->thrust_wait =
|
||||
(BYTE)NORMALIZE_FACING (
|
||||
@@ -414,8 +417,8 @@ spawn_fighters (ELEMENT *ElementPtr)
|
||||
|
||||
PutElement (hFighterElement);
|
||||
LockElement (hFighterElement, &FighterElementPtr);
|
||||
FighterElementPtr->hit_points = 1;
|
||||
FighterElementPtr->mass_points = 0;
|
||||
FighterElementPtr->hit_points = FIGHTER_HITS;
|
||||
FighterElementPtr->mass_points = FIGHTER_MASS;
|
||||
FighterElementPtr->thrust_wait = TRACK_THRESHOLD + 1;
|
||||
FighterElementPtr->playerNr = ElementPtr->playerNr;
|
||||
FighterElementPtr->state_flags = APPEARING | FINITE_LIFE
|
||||
|
||||
@@ -23,24 +23,36 @@
|
||||
#include "uqm/globdata.h"
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 20
|
||||
#define MAX_ENERGY 20
|
||||
#define ENERGY_REGENERATION 0
|
||||
#define WEAPON_ENERGY_COST 0
|
||||
#define SPECIAL_ENERGY_COST 1
|
||||
#define ENERGY_WAIT 255
|
||||
#define MAX_THRUST 36
|
||||
#define THRUST_INCREMENT 6
|
||||
#define TURN_WAIT 1
|
||||
#define THRUST_WAIT 6
|
||||
#define WEAPON_WAIT 7
|
||||
#define SPECIAL_WAIT 12
|
||||
|
||||
#define TURN_WAIT 1
|
||||
#define SHIP_MASS 8
|
||||
|
||||
// Weapon
|
||||
#define WEAPON_ENERGY_COST 0
|
||||
#define WEAPON_WAIT 7
|
||||
#define UTWIG_OFFSET 9
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (30)
|
||||
#define MISSILE_LIFE 10
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 1
|
||||
#define LAUNCH_XOFFS0 DISPLAY_TO_WORLD (5)
|
||||
#define LAUNCH_YOFFS0 -DISPLAY_TO_WORLD (18)
|
||||
#define LAUNCH_XOFFS1 DISPLAY_TO_WORLD (13)
|
||||
#define LAUNCH_YOFFS1 -DISPLAY_TO_WORLD (9)
|
||||
#define LAUNCH_XOFFS2 DISPLAY_TO_WORLD (17)
|
||||
#define LAUNCH_YOFFS2 -DISPLAY_TO_WORLD (4)
|
||||
|
||||
// Shield
|
||||
#define SPECIAL_ENERGY_COST 1
|
||||
#define SPECIAL_WAIT 12
|
||||
|
||||
static RACE_DESC utwig_desc =
|
||||
{
|
||||
@@ -116,15 +128,6 @@ static RACE_DESC utwig_desc =
|
||||
static COUNT
|
||||
initialize_lance (ELEMENT *ShipPtr, HELEMENT WeaponArray[])
|
||||
{
|
||||
#define LAUNCH_XOFFS0 DISPLAY_TO_WORLD (5)
|
||||
#define LAUNCH_YOFFS0 -DISPLAY_TO_WORLD (18)
|
||||
#define LAUNCH_XOFFS1 DISPLAY_TO_WORLD (13)
|
||||
#define LAUNCH_YOFFS1 -DISPLAY_TO_WORLD (9)
|
||||
#define LAUNCH_XOFFS2 DISPLAY_TO_WORLD (17)
|
||||
#define LAUNCH_YOFFS2 -DISPLAY_TO_WORLD (4)
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 1
|
||||
COUNT i;
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
+27
-22
@@ -23,26 +23,44 @@
|
||||
#include "uqm/globdata.h"
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 20
|
||||
#define MAX_ENERGY 40
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SPECIAL_ENERGY_COST 2
|
||||
#define ENERGY_WAIT 8
|
||||
#define MAX_THRUST /* DISPLAY_TO_WORLD (5) */ 21
|
||||
#define THRUST_INCREMENT /* DISPLAY_TO_WORLD (2) */ 7
|
||||
#define TURN_WAIT 6
|
||||
#define THRUST_WAIT 4
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 7
|
||||
|
||||
#define TURN_WAIT 6
|
||||
#define SHIP_MASS 6
|
||||
#define WARP_OFFSET 46 /* How far outside of laser-range ship can warp in */
|
||||
|
||||
// Laser
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define WEAPON_WAIT 0
|
||||
#define VUX_OFFSET 12
|
||||
#define LASER_BASE 150
|
||||
#define LASER_RANGE DISPLAY_TO_WORLD (LASER_BASE + VUX_OFFSET)
|
||||
|
||||
// Limpet
|
||||
#define SPECIAL_ENERGY_COST 2
|
||||
#define SPECIAL_WAIT 7
|
||||
#define LIMPET_SPEED 25
|
||||
#define LIMPET_OFFSET 8
|
||||
#define LIMPET_LIFE 80
|
||||
#define LIMPET_HITS 1
|
||||
#define LIMPET_DAMAGE 0
|
||||
#define MIN_THRUST_INCREMENT DISPLAY_TO_WORLD (1)
|
||||
|
||||
// Aggressive Entry
|
||||
#define WARP_OFFSET 46
|
||||
/* How far outside of the laser range can the ship warp in. */
|
||||
#define MAXX_ENTRY_DIST DISPLAY_TO_WORLD ((LASER_BASE + VUX_OFFSET + WARP_OFFSET) << 1)
|
||||
#define MAXY_ENTRY_DIST DISPLAY_TO_WORLD ((LASER_BASE + VUX_OFFSET + WARP_OFFSET) << 1)
|
||||
/* Originally, the warp distance was:
|
||||
* DISPLAY_TO_WORLD (SPACE_HEIGHT << 1)
|
||||
* where SPACE_HEIGHT = SCREEN_HEIGHT - (SAFE_Y * 2)
|
||||
* But in reality this should be relative to the laser-range. */
|
||||
|
||||
static RACE_DESC vux_desc =
|
||||
{
|
||||
{ /* SHIP_INFO */
|
||||
@@ -114,7 +132,6 @@ static RACE_DESC vux_desc =
|
||||
0, /* CodeRef */
|
||||
};
|
||||
|
||||
#define LIMPET_SPEED 25
|
||||
|
||||
static void
|
||||
limpet_preprocess (ELEMENT *ElementPtr)
|
||||
@@ -128,8 +145,7 @@ limpet_preprocess (ELEMENT *ElementPtr)
|
||||
if ((delta_facing = TrackShip (ElementPtr, &facing)) > 0)
|
||||
{
|
||||
facing = orig_facing + delta_facing;
|
||||
SetVelocityVector (&ElementPtr->velocity,
|
||||
LIMPET_SPEED, facing);
|
||||
SetVelocityVector (&ElementPtr->velocity, LIMPET_SPEED, facing);
|
||||
}
|
||||
ElementPtr->next.image.frame =
|
||||
IncFrameIndex (ElementPtr->next.image.frame);
|
||||
@@ -154,7 +170,6 @@ limpet_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
--RDPtr->characteristics.turn_wait;
|
||||
if (++RDPtr->characteristics.thrust_wait == 0)
|
||||
--RDPtr->characteristics.thrust_wait;
|
||||
#define MIN_THRUST_INCREMENT DISPLAY_TO_WORLD (1)
|
||||
if (RDPtr->characteristics.thrust_increment <= MIN_THRUST_INCREMENT)
|
||||
{
|
||||
RDPtr->characteristics.max_thrust =
|
||||
@@ -193,10 +208,6 @@ limpet_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
static void
|
||||
spawn_limpets (ELEMENT *ElementPtr)
|
||||
{
|
||||
#define LIMPET_OFFSET 8
|
||||
#define LIMPET_LIFE 80
|
||||
#define LIMPET_HITS 1
|
||||
#define LIMPET_DAMAGE 0
|
||||
HELEMENT Limpet;
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
@@ -327,12 +338,6 @@ vux_preprocess (ELEMENT *ElementPtr)
|
||||
|
||||
do
|
||||
{
|
||||
// Originally, the warp distance was:
|
||||
// DISPLAY_TO_WORLD (SPACE_HEIGHT << 1)
|
||||
// where SPACE_HEIGHT = SCREEN_HEIGHT - (SAFE_Y * 2)
|
||||
// But in reality this should be relative to the laser-range
|
||||
#define MAXX_ENTRY_DIST DISPLAY_TO_WORLD ((LASER_BASE + VUX_OFFSET + WARP_OFFSET) << 1)
|
||||
#define MAXY_ENTRY_DIST DISPLAY_TO_WORLD ((LASER_BASE + VUX_OFFSET + WARP_OFFSET) << 1)
|
||||
SIZE dx, dy;
|
||||
|
||||
ElementPtr->current.location.x =
|
||||
|
||||
@@ -22,23 +22,32 @@
|
||||
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 20
|
||||
#define MAX_ENERGY 10
|
||||
#define ENERGY_REGENERATION 2
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SPECIAL_ENERGY_COST 3
|
||||
#define ENERGY_WAIT 6
|
||||
#define MAX_THRUST 30
|
||||
#define THRUST_INCREMENT 6
|
||||
#define TURN_WAIT 2
|
||||
#define THRUST_WAIT 2
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 2
|
||||
|
||||
#define TURN_WAIT 2
|
||||
#define SHIP_MASS 3
|
||||
|
||||
// Twin Pulse Cannon
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define WEAPON_WAIT 0
|
||||
#define YEHAT_OFFSET 16
|
||||
#define LAUNCH_OFFS DISPLAY_TO_WORLD (8)
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (20)
|
||||
#define MISSILE_LIFE 10
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 1
|
||||
|
||||
// Force Shield
|
||||
#define SPECIAL_ENERGY_COST 3
|
||||
#define SPECIAL_WAIT 2
|
||||
#define SHIELD_LIFE 10
|
||||
|
||||
static RACE_DESC yehat_desc =
|
||||
{
|
||||
@@ -114,11 +123,6 @@ static RACE_DESC yehat_desc =
|
||||
static COUNT
|
||||
initialize_standard_missiles (ELEMENT *ShipPtr, HELEMENT MissileArray[])
|
||||
{
|
||||
#define YEHAT_OFFSET 16
|
||||
#define LAUNCH_OFFS DISPLAY_TO_WORLD (8)
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_OFFSET 1
|
||||
SIZE offs_x, offs_y;
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
@@ -334,7 +338,6 @@ yehat_preprocess (ELEMENT *ElementPtr)
|
||||
DeltaEnergy (ElementPtr, -SPECIAL_ENERGY_COST); /* so text will flash */
|
||||
else
|
||||
{
|
||||
#define SHIELD_LIFE 10
|
||||
ElementPtr->life_span = SHIELD_LIFE + NORMAL_LIFE;
|
||||
|
||||
ElementPtr->next.image.farray = StarShipPtr->RaceDescPtr->ship_data.special;
|
||||
|
||||
@@ -22,24 +22,39 @@
|
||||
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
// Core characteristics
|
||||
#define MAX_CREW 10
|
||||
#define MAX_ENERGY 10
|
||||
#define ENERGY_REGENERATION 1
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define SPECIAL_ENERGY_COST (MAX_ENERGY * 3 / 4)
|
||||
#define ENERGY_WAIT 4
|
||||
#define MAX_THRUST 40
|
||||
#define THRUST_INCREMENT 10
|
||||
#define TURN_WAIT 1
|
||||
#define THRUST_WAIT 0
|
||||
#define WEAPON_WAIT 0
|
||||
#define SPECIAL_WAIT 6
|
||||
|
||||
#define TURN_WAIT 1
|
||||
#define SHIP_MASS 5
|
||||
|
||||
// Main weapon
|
||||
#define WEAPON_ENERGY_COST 1
|
||||
#define WEAPON_WAIT 0
|
||||
#define ZOQFOTPIK_OFFSET 13
|
||||
#define MISSILE_OFFSET 0
|
||||
#define MISSILE_SPEED DISPLAY_TO_WORLD (10)
|
||||
/* Used by the cyborg only. */
|
||||
#define MISSILE_LIFE 10
|
||||
#define MISSILE_RANGE (MISSILE_SPEED * MISSILE_LIFE)
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_HITS 1
|
||||
#define SPIT_WAIT 2
|
||||
/* Controls the main weapon color change animation's speed.
|
||||
* The animation advances one frame every SPIT_WAIT frames. */
|
||||
|
||||
// Tongue
|
||||
#define SPECIAL_ENERGY_COST (MAX_ENERGY * 3 / 4)
|
||||
#define SPECIAL_WAIT 6
|
||||
#define TONGUE_SPEED 0
|
||||
#define TONGUE_HITS 1
|
||||
#define TONGUE_DAMAGE 12
|
||||
#define TONGUE_OFFSET 4
|
||||
|
||||
static RACE_DESC zoqfotpik_desc =
|
||||
{
|
||||
@@ -112,12 +127,10 @@ static RACE_DESC zoqfotpik_desc =
|
||||
0, /* CodeRef */
|
||||
};
|
||||
|
||||
#define ZOQFOTPIK_OFFSET 13
|
||||
#define SPIT_WAIT 2
|
||||
|
||||
static void
|
||||
spit_preprocess (ELEMENT *ElementPtr)
|
||||
{
|
||||
/* turn_wait is abused here to control the animation speed. */
|
||||
if (ElementPtr->turn_wait > 0)
|
||||
--ElementPtr->turn_wait;
|
||||
else
|
||||
@@ -136,6 +149,7 @@ spit_preprocess (ELEMENT *ElementPtr)
|
||||
(SIZE)COSINE (angle, speed),
|
||||
(SIZE)SINE (angle, speed));
|
||||
|
||||
/* turn_wait is abused here to control the animation speed. */
|
||||
ElementPtr->turn_wait = SPIT_WAIT;
|
||||
ElementPtr->state_flags |= CHANGING;
|
||||
}
|
||||
@@ -144,9 +158,6 @@ spit_preprocess (ELEMENT *ElementPtr)
|
||||
static COUNT
|
||||
initialize_spit (ELEMENT *ShipPtr, HELEMENT SpitArray[])
|
||||
{
|
||||
#define MISSILE_DAMAGE 1
|
||||
#define MISSILE_HITS 1
|
||||
#define MISSILE_OFFSET 0
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK MissileBlock;
|
||||
|
||||
@@ -199,10 +210,6 @@ tongue_collision (ELEMENT *ElementPtr0, POINT *pPt0,
|
||||
static void
|
||||
spawn_tongue (ELEMENT *ElementPtr)
|
||||
{
|
||||
#define TONGUE_SPEED 0
|
||||
#define TONGUE_HITS 1
|
||||
#define TONGUE_DAMAGE 12
|
||||
#define TONGUE_OFFSET 4
|
||||
STARSHIP *StarShipPtr;
|
||||
MISSILE_BLOCK TongueBlock;
|
||||
HELEMENT Tongue;
|
||||
|
||||
Reference in New Issue
Block a user