From 7326ff096d0fc60086f2a6885fdc05aa707dd9fd Mon Sep 17 00:00:00 2001 From: Serge van den Boom Date: Sat, 2 Nov 2013 21:59:56 +0100 Subject: [PATCH] Grouping ship properties together at the top of the ship .c files, from oldlaptop. --- sc2/ChangeLog | 2 + sc2/src/uqm/ships/androsyn/androsyn.c | 47 ++++++------- sc2/src/uqm/ships/arilou/arilou.c | 19 +++--- sc2/src/uqm/ships/blackurq/blackurq.c | 64 +++++++++--------- sc2/src/uqm/ships/chenjesu/chenjesu.c | 67 +++++++++--------- sc2/src/uqm/ships/chmmr/chmmr.c | 39 ++++++----- sc2/src/uqm/ships/druuge/druuge.c | 29 ++++---- sc2/src/uqm/ships/human/human.c | 38 ++++++----- sc2/src/uqm/ships/ilwrath/ilwrath.c | 30 +++++---- sc2/src/uqm/ships/lastbat/lastbat.c | 96 +++++++++++++------------- sc2/src/uqm/ships/melnorme/melnorme.c | 43 ++++++------ sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c | 48 +++++++------ sc2/src/uqm/ships/mycon/mycon.c | 27 ++++---- sc2/src/uqm/ships/orz/orz.c | 55 ++++++++------- sc2/src/uqm/ships/pkunk/pkunk.c | 37 +++++----- sc2/src/uqm/ships/shofixti/shofixti.c | 31 ++++++--- sc2/src/uqm/ships/sis_ship/sis_ship.c | 97 +++++++++++++++++++-------- sc2/src/uqm/ships/slylandr/slylandr.c | 27 +++++--- sc2/src/uqm/ships/spathi/spathi.c | 40 ++++++----- sc2/src/uqm/ships/supox/supox.c | 27 +++++--- sc2/src/uqm/ships/syreen/syreen.c | 29 ++++---- sc2/src/uqm/ships/thradd/thradd.c | 60 ++++++++++------- sc2/src/uqm/ships/umgah/umgah.c | 41 +++++------ sc2/src/uqm/ships/urquan/urquan.c | 57 ++++++++-------- sc2/src/uqm/ships/utwig/utwig.c | 35 +++++----- sc2/src/uqm/ships/vux/vux.c | 49 ++++++++------ sc2/src/uqm/ships/yehat/yehat.c | 29 ++++---- sc2/src/uqm/ships/zoqfot/zoqfot.c | 41 ++++++----- 28 files changed, 675 insertions(+), 529 deletions(-) diff --git a/sc2/ChangeLog b/sc2/ChangeLog index d2aa75e14..7e08d244e 100644 --- a/sc2/ChangeLog +++ b/sc2/ChangeLog @@ -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. diff --git a/sc2/src/uqm/ships/androsyn/androsyn.c b/sc2/src/uqm/ships/androsyn/androsyn.c index 2625b3f80..1139d8da0 100644 --- a/sc2/src/uqm/ships/androsyn/androsyn.c +++ b/sc2/src/uqm/ships/androsyn/androsyn.c @@ -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; diff --git a/sc2/src/uqm/ships/arilou/arilou.c b/sc2/src/uqm/ships/arilou/arilou.c index 5b32bcd3b..78340a37a 100644 --- a/sc2/src/uqm/ships/arilou/arilou.c +++ b/sc2/src/uqm/ships/arilou/arilou.c @@ -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); diff --git a/sc2/src/uqm/ships/blackurq/blackurq.c b/sc2/src/uqm/ships/blackurq/blackurq.c index c05591d58..286191dd0 100644 --- a/sc2/src/uqm/ships/blackurq/blackurq.c +++ b/sc2/src/uqm/ships/blackurq/blackurq.c @@ -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; diff --git a/sc2/src/uqm/ships/chenjesu/chenjesu.c b/sc2/src/uqm/ships/chenjesu/chenjesu.c index 6d548ba33..85a101485 100644 --- a/sc2/src/uqm/ships/chenjesu/chenjesu.c +++ b/sc2/src/uqm/ships/chenjesu/chenjesu.c @@ -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; diff --git a/sc2/src/uqm/ships/chmmr/chmmr.c b/sc2/src/uqm/ships/chmmr/chmmr.c index d5a616443..8f6abf0dc 100644 --- a/sc2/src/uqm/ships/chmmr/chmmr.c +++ b/sc2/src/uqm/ships/chmmr/chmmr.c @@ -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; diff --git a/sc2/src/uqm/ships/druuge/druuge.c b/sc2/src/uqm/ships/druuge/druuge.c index ff75fc76d..6ba2591ce 100644 --- a/sc2/src/uqm/ships/druuge/druuge.c +++ b/sc2/src/uqm/ships/druuge/druuge.c @@ -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; diff --git a/sc2/src/uqm/ships/human/human.c b/sc2/src/uqm/ships/human/human.c index de751b960..354486dde 100644 --- a/sc2/src/uqm/ships/human/human.c +++ b/sc2/src/uqm/ships/human/human.c @@ -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; diff --git a/sc2/src/uqm/ships/ilwrath/ilwrath.c b/sc2/src/uqm/ships/ilwrath/ilwrath.c index e4975ff2c..394708134 100644 --- a/sc2/src/uqm/ships/ilwrath/ilwrath.c +++ b/sc2/src/uqm/ships/ilwrath/ilwrath.c @@ -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; diff --git a/sc2/src/uqm/ships/lastbat/lastbat.c b/sc2/src/uqm/ships/lastbat/lastbat.c index 568b2aae1..9d44742c6 100644 --- a/sc2/src/uqm/ships/lastbat/lastbat.c +++ b/sc2/src/uqm/ships/lastbat/lastbat.c @@ -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}, diff --git a/sc2/src/uqm/ships/melnorme/melnorme.c b/sc2/src/uqm/ships/melnorme/melnorme.c index 404722592..8e5ab2b8d 100644 --- a/sc2/src/uqm/ships/melnorme/melnorme.c +++ b/sc2/src/uqm/ships/melnorme/melnorme.c @@ -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; diff --git a/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c b/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c index bc5ed0d60..e8f8348e1 100644 --- a/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c +++ b/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c @@ -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; diff --git a/sc2/src/uqm/ships/mycon/mycon.c b/sc2/src/uqm/ships/mycon/mycon.c index dcad5667a..8c99fbef5 100644 --- a/sc2/src/uqm/ships/mycon/mycon.c +++ b/sc2/src/uqm/ships/mycon/mycon.c @@ -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 ( diff --git a/sc2/src/uqm/ships/orz/orz.c b/sc2/src/uqm/ships/orz/orz.c index 78bb39c16..1a95fec25 100644 --- a/sc2/src/uqm/ships/orz/orz.c +++ b/sc2/src/uqm/ships/orz/orz.c @@ -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 = diff --git a/sc2/src/uqm/ships/pkunk/pkunk.c b/sc2/src/uqm/ships/pkunk/pkunk.c index 6e8902e07..76f8413f8 100644 --- a/sc2/src/uqm/ships/pkunk/pkunk.c +++ b/sc2/src/uqm/ships/pkunk/pkunk.c @@ -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); diff --git a/sc2/src/uqm/ships/shofixti/shofixti.c b/sc2/src/uqm/ships/shofixti/shofixti.c index 454a29c7a..03de57e77 100644 --- a/sc2/src/uqm/ships/shofixti/shofixti.c +++ b/sc2/src/uqm/ships/shofixti/shofixti.c @@ -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) { diff --git a/sc2/src/uqm/ships/sis_ship/sis_ship.c b/sc2/src/uqm/ships/sis_ship/sis_ship.c index 0553ef3e5..d5898277a 100644 --- a/sc2/src/uqm/ships/sis_ship/sis_ship.c +++ b/sc2/src/uqm/ships/sis_ship/sis_ship.c @@ -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) { diff --git a/sc2/src/uqm/ships/slylandr/slylandr.c b/sc2/src/uqm/ships/slylandr/slylandr.c index 729700876..8c4ca95a2 100644 --- a/sc2/src/uqm/ships/slylandr/slylandr.c +++ b/sc2/src/uqm/ships/slylandr/slylandr.c @@ -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 diff --git a/sc2/src/uqm/ships/spathi/spathi.c b/sc2/src/uqm/ships/spathi/spathi.c index f1f7243cf..aa4bd00ed 100644 --- a/sc2/src/uqm/ships/spathi/spathi.c +++ b/sc2/src/uqm/ships/spathi/spathi.c @@ -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; diff --git a/sc2/src/uqm/ships/supox/supox.c b/sc2/src/uqm/ships/supox/supox.c index b9dd4656a..854c5b37c 100644 --- a/sc2/src/uqm/ships/supox/supox.c +++ b/sc2/src/uqm/ships/supox/supox.c @@ -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; diff --git a/sc2/src/uqm/ships/syreen/syreen.c b/sc2/src/uqm/ships/syreen/syreen.c index fbcf8eb07..c65ecd204 100644 --- a/sc2/src/uqm/ships/syreen/syreen.c +++ b/sc2/src/uqm/ships/syreen/syreen.c @@ -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 diff --git a/sc2/src/uqm/ships/thradd/thradd.c b/sc2/src/uqm/ships/thradd/thradd.c index 3e3c3d707..0d7a8e24a 100644 --- a/sc2/src/uqm/ships/thradd/thradd.c +++ b/sc2/src/uqm/ships/thradd/thradd.c @@ -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 ( diff --git a/sc2/src/uqm/ships/umgah/umgah.c b/sc2/src/uqm/ships/umgah/umgah.c index 054cdfa9a..370ad4036 100644 --- a/sc2/src/uqm/ships/umgah/umgah.c +++ b/sc2/src/uqm/ships/umgah/umgah.c @@ -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 diff --git a/sc2/src/uqm/ships/urquan/urquan.c b/sc2/src/uqm/ships/urquan/urquan.c index ec31087d3..9df87d015 100644 --- a/sc2/src/uqm/ships/urquan/urquan.c +++ b/sc2/src/uqm/ships/urquan/urquan.c @@ -24,23 +24,39 @@ #include - +// 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 diff --git a/sc2/src/uqm/ships/utwig/utwig.c b/sc2/src/uqm/ships/utwig/utwig.c index af4cc588f..cb5f2fdcb 100644 --- a/sc2/src/uqm/ships/utwig/utwig.c +++ b/sc2/src/uqm/ships/utwig/utwig.c @@ -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; diff --git a/sc2/src/uqm/ships/vux/vux.c b/sc2/src/uqm/ships/vux/vux.c index a6975924e..83e6c470e 100644 --- a/sc2/src/uqm/ships/vux/vux.c +++ b/sc2/src/uqm/ships/vux/vux.c @@ -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 = diff --git a/sc2/src/uqm/ships/yehat/yehat.c b/sc2/src/uqm/ships/yehat/yehat.c index 7ebe109ca..f3d0fb899 100644 --- a/sc2/src/uqm/ships/yehat/yehat.c +++ b/sc2/src/uqm/ships/yehat/yehat.c @@ -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; diff --git a/sc2/src/uqm/ships/zoqfot/zoqfot.c b/sc2/src/uqm/ships/zoqfot/zoqfot.c index d6842745a..15a602481 100644 --- a/sc2/src/uqm/ships/zoqfot/zoqfot.c +++ b/sc2/src/uqm/ships/zoqfot/zoqfot.c @@ -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;