projects
/
super-star-trek.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Compute the maximum number of bases from BASEMAX.
[super-star-trek.git]
/
battle.c
diff --git
a/battle.c
b/battle.c
index f8c81eba6d4b7b4b367514f32cb8c564b063e51b..4b3cf904e9ec10738c9a76b6422e9be758c639cf 100644
(file)
--- a/
battle.c
+++ b/
battle.c
@@
-159,9
+159,11
@@
void ram(int ibumpd, int ienm, int ix, int iy)
icas = 10.0+20.0*Rand();
prout("***Sickbay reports %d casualties", icas);
casual += icas;
icas = 10.0+20.0*Rand();
prout("***Sickbay reports %d casualties", icas);
casual += icas;
- for (l=1; l <= NDEVICES; l++) {
- if (l == DDRAY) continue; // Don't damage deathray
- if (game.damage[l] < 0) continue;
+ for (l=0; l < NDEVICES; l++) {
+ if (l == DDRAY)
+ continue; // Don't damage deathray
+ if (game.damage[l] < 0)
+ continue;
extradm = (10.0*type*Rand()+1.0)*damfac;
game.damage[l] += Time + extradm; /* Damage for at least time of travel! */
}
extradm = (10.0*type*Rand()+1.0)*damfac;
game.damage[l] += Time + extradm; /* Damage for at least time of travel! */
}
@@
-196,10
+198,9
@@
void torpedo(double course, double r, int inx, int iny, double *hit, int wait, i
for (l=1; l <= 15; l++) {
x += deltax;
ix = x + 0.5;
for (l=1; l <= 15; l++) {
x += deltax;
ix = x + 0.5;
- if (ix < 1 || ix > QUADSIZE) break;
y += deltay;
iy = y + 0.5;
y += deltay;
iy = y + 0.5;
- if (
iy < 1 || iy > QUADSIZE
) break;
+ if (
!VALID_SECTOR(ix, iy)
) break;
iquad=game.quad[ix][iy];
tracktorpedo(x, y, ix, iy, wait, l, i, n, iquad);
wait = 1;
iquad=game.quad[ix][iy];
tracktorpedo(x, y, ix, iy, wait, l, i, n, iquad);
wait = 1;
@@
-228,7
+229,7
@@
void torpedo(double course, double r, int inx, int iny, double *hit, int wait, i
yy = cos(ang)/temp;
jx=ix+xx+0.5;
jy=iy+yy+0.5;
yy = cos(ang)/temp;
jx=ix+xx+0.5;
jy=iy+yy+0.5;
- if (
jx<1 || jx>QUADSIZE || jy<1 ||jy > QUADSIZE
) return;
+ if (
!VALID_SECTOR(jx, jy)
) return;
if (game.quad[jx][jy]==IHBLANK) {
finish(FHOLE);
return;
if (game.quad[jx][jy]==IHBLANK) {
finish(FHOLE);
return;
@@
-254,7
+255,7
@@
void torpedo(double course, double r, int inx, int iny, double *hit, int wait, i
case IHR: /* Hit a regular enemy */
case IHK:
/* find the enemy */
case IHR: /* Hit a regular enemy */
case IHK:
/* find the enemy */
- for
(ll=1; ll <= nenhere; ll++
)
+ for
_local_enemies(ll
)
if (ix==game.kx[ll] && iy==game.ky[ll]) break;
kp = fabs(game.kpower[ll]);
h1 = 700.0 + 100.0*Rand() -
if (ix==game.kx[ll] && iy==game.ky[ll]) break;
kp = fabs(game.kpower[ll]);
h1 = 700.0 + 100.0*Rand() -
@@
-276,7
+277,7
@@
void torpedo(double course, double r, int inx, int iny, double *hit, int wait, i
yy = cos(ang)/temp;
jx=ix+xx+0.5;
jy=iy+yy+0.5;
yy = cos(ang)/temp;
jx=ix+xx+0.5;
jy=iy+yy+0.5;
- if (
jx<1 || jx>QUADSIZE || jy<1 ||jy > QUADSIZE
) {
+ if (
!VALID_SECTOR(jx, jy)
) {
prout(" damaged but not destroyed.");
return;
}
prout(" damaged but not destroyed.");
return;
}
@@
-298,8
+299,7
@@
void torpedo(double course, double r, int inx, int iny, double *hit, int wait, i
case IHB: /* Hit a base */
skip(1);
prout("***STARBASE DESTROYED..");
case IHB: /* Hit a base */
skip(1);
prout("***STARBASE DESTROYED..");
- if (game.starch[quadx][quady] < 0) game.starch[quadx][quady] = 0;
- for (ll=1; ll<=game.state.rembase; ll++) {
+ for_starbases(ll) {
if (game.state.baseqx[ll]==quadx && game.state.baseqy[ll]==quady) {
game.state.baseqx[ll]=game.state.baseqx[game.state.rembase];
game.state.baseqy[ll]=game.state.baseqy[game.state.rembase];
if (game.state.baseqx[ll]==quadx && game.state.baseqy[ll]==quady) {
game.state.baseqx[ll]=game.state.baseqx[game.state.rembase];
game.state.baseqy[ll]=game.state.baseqy[game.state.rembase];
@@
-309,7
+309,8
@@
void torpedo(double course, double r, int inx, int iny, double *hit, int wait, i
game.quad[ix][iy]=IHDOT;
game.state.rembase--;
basex=basey=0;
game.quad[ix][iy]=IHDOT;
game.state.rembase--;
basex=basey=0;
- game.state.galaxy[quadx][quady] -= BASE_PLACE;
+ game.state.galaxy[quadx][quady].starbase--;
+ game.state.chart[quadx][quady].starbase--;
game.state.basekl++;
newcnd();
return;
game.state.basekl++;
newcnd();
return;
@@
-317,7
+318,7
@@
void torpedo(double course, double r, int inx, int iny, double *hit, int wait, i
crmena(1, iquad, 2, ix, iy);
prout(" destroyed.");
game.state.nplankl++;
crmena(1, iquad, 2, ix, iy);
prout(" destroyed.");
game.state.nplankl++;
- game.state.
newstuf[quadx][quady] -= 1
;
+ game.state.
galaxy[quadx][quady].planets--
;
DESTROY(&game.state.plnets[iplnet]);
iplnet = 0;
plnetx = plnety = 0;
DESTROY(&game.state.plnets[iplnet]);
iplnet = 0;
plnetx = plnety = 0;
@@
-409,7
+410,7
@@
void torpedo(double course, double r, int inx, int iny, double *hit, int wait, i
game.quad[jx][jy]=iquad;
game.quad[ix][iy]=IHDOT;
prout(" displaced by blast to %s ", cramlc(sector, jx, jy));
game.quad[jx][jy]=iquad;
game.quad[ix][iy]=IHDOT;
prout(" displaced by blast to %s ", cramlc(sector, jx, jy));
- for
(ll=1; ll<=nenhere; ll++
)
+ for
_local_enemies(ll
)
game.kdist[ll] = game.kavgd[ll] = sqrt(square(sectx-game.kx[ll])+square(secty-game.ky[ll]));
sortkl();
return;
game.kdist[ll] = game.kavgd[ll] = sqrt(square(sectx-game.kx[ll])+square(secty-game.ky[ll]));
sortkl();
return;
@@
-422,7
+423,7
@@
void torpedo(double course, double r, int inx, int iny, double *hit, int wait, i
static void fry(double hit)
{
double ncrit, extradm;
static void fry(double hit)
{
double ncrit, extradm;
- int ktr=1, l, ll, j, cdam[NDEVICES
+1
];
+ int ktr=1, l, ll, j, cdam[NDEVICES];
/* a critical hit occured */
if (hit < (275.0-25.0*skill)*(1.0+0.5*Rand())) return;
/* a critical hit occured */
if (hit < (275.0-25.0*skill)*(1.0+0.5*Rand())) return;
@@
-430,16
+431,16
@@
static void fry(double hit)
ncrit = 1.0 + hit/(500.0+100.0*Rand());
proutn("***CRITICAL HIT--");
/* Select devices and cause damage */
ncrit = 1.0 + hit/(500.0+100.0*Rand());
proutn("***CRITICAL HIT--");
/* Select devices and cause damage */
- for (l =
1; l <= ncrit && l <=
NDEVICES; l++) {
+ for (l =
0; l < ncrit && 0 <
NDEVICES; l++) {
do {
do {
- j = NDEVICES*Rand()
+1.0
;
+ j = NDEVICES*Rand();
/* Cheat to prevent shuttle damage unless on ship */
/* Cheat to prevent shuttle damage unless on ship */
- } while
(game.damage[j] < 0.0 || (j == DSHUTTL && iscraft != 1) ||
-
j ==
DDRAY);
+ } while
+
(game.damage[j]<0.0 || (j==DSHUTTL && iscraft!=1) || j==
DDRAY);
cdam[l] = j;
extradm = (hit*damfac)/(ncrit*(75.0+25.0*Rand()));
game.damage[j] += extradm;
cdam[l] = j;
extradm = (hit*damfac)/(ncrit*(75.0+25.0*Rand()));
game.damage[j] += extradm;
- if (l >
1
) {
+ if (l >
0
) {
for (ll=2; ll<=l && j != cdam[ll-1]; ll++) ;
if (ll<=l) continue;
ktr += 1;
for (ll=2; ll<=l && j != cdam[ll-1]; ll++) ;
if (ll<=l) continue;
ktr += 1;
@@
-481,7
+482,7
@@
void attack(int torps_ok)
if (shldchg == 1) chgfac = 0.25+0.5*Rand();
skip(1);
if (skill <= SKILL_FAIR) i = 2;
if (shldchg == 1) chgfac = 0.25+0.5*Rand();
skip(1);
if (skill <= SKILL_FAIR) i = 2;
- for
(l=1; l <= nenhere; l++
) {
+ for
_local_enemies(l
) {
if (game.kpower[l] < 0) continue; /* too weak to attack */
/* compute hit strength and diminsh shield power */
r = Rand();
if (game.kpower[l] < 0) continue; /* too weak to attack */
/* compute hit strength and diminsh shield power */
r = Rand();
@@
-518,9
+519,10
@@
void attack(int torps_ok)
r = (Rand()+Rand())*0.5 -0.5;
r += 0.002*game.kpower[l]*r;
torpedo(course, r, jx, jy, &hit, 0, 1, 1);
r = (Rand()+Rand())*0.5 -0.5;
r += 0.002*game.kpower[l]*r;
torpedo(course, r, jx, jy, &hit, 0, 1, 1);
- if (game.state.remkl==0) finish(FWON); /* Klingons did themselves in! */
- if (game.state.galaxy[quadx][quady] == SUPERNOVA_PLACE ||
- alldone) return; /* Supernova or finished */
+ if (game.state.remkl==0)
+ finish(FWON); /* Klingons did themselves in! */
+ if (game.state.galaxy[quadx][quady].supernova || alldone)
+ return; /* Supernova or finished */
if (hit == 0) continue;
}
if (shldup != 0 || shldchg != 0 || condit==IHDOCKED) {
if (hit == 0) continue;
}
if (shldup != 0 || shldchg != 0 || condit==IHDOCKED) {
@@
-593,7
+595,7
@@
void attack(int torps_ok)
}
}
/* After attack, reset average distance to enemies */
}
}
/* After attack, reset average distance to enemies */
- for
(l = 1; l <= nenhere; l++
)
+ for
_local_enemies(l
)
game.kavgd[l] = game.kdist[l];
sortkl();
return;
game.kavgd[l] = game.kdist[l];
sortkl();
return;
@@
-610,7
+612,7
@@
void deadkl(int ix, int iy, int type, int ixx, int iyy)
/* Decide what kind of enemy it is and update approriately */
if (type == IHR) {
/* chalk up a Romulan */
/* Decide what kind of enemy it is and update approriately */
if (type == IHR) {
/* chalk up a Romulan */
- game.state.
newstuf[quadx][quady] -= ROMULAN_PLACE
;
+ game.state.
galaxy[quadx][quady].romulans--
;
irhere--;
game.state.nromkl++;
game.state.nromrem--;
irhere--;
game.state.nromkl++;
game.state.nromrem--;
@@
-625,13
+627,13
@@
void deadkl(int ix, int iy, int type, int ixx, int iyy)
}
else {
/* Some type of a Klingon */
}
else {
/* Some type of a Klingon */
- game.state.galaxy[quadx][quady]
-= KLINGON_PLACE
;
+ game.state.galaxy[quadx][quady]
.klingons--
;
klhere--;
game.state.remkl--;
switch (type) {
case IHC:
comhere = 0;
klhere--;
game.state.remkl--;
switch (type) {
case IHC:
comhere = 0;
- for
(i=1; i<=game.state.remcom; i++
)
+ for
_commanders (i
)
if (game.state.cx[i]==quadx && game.state.cy[i]==quady) break;
game.state.cx[i] = game.state.cx[game.state.remcom];
game.state.cy[i] = game.state.cy[game.state.remcom];
if (game.state.cx[i]==quadx && game.state.cy[i]==quady) break;
game.state.cx[i] = game.state.cx[game.state.remcom];
game.state.cy[i] = game.state.cy[game.state.remcom];
@@
-664,7
+666,7
@@
void deadkl(int ix, int iy, int type, int ixx, int iyy)
/* Remove enemy ship from arrays describing local conditions */
if (game.future[FCDBAS] < 1e30 && batx==quadx && baty==quady && type==IHC)
game.future[FCDBAS] = 1e30;
/* Remove enemy ship from arrays describing local conditions */
if (game.future[FCDBAS] < 1e30 && batx==quadx && baty==quady && type==IHC)
game.future[FCDBAS] = 1e30;
- for
(i=1; i<=nenhere; i++
)
+ for
_local_enemies(i
)
if (game.kx[i]==ix && game.ky[i]==iy) break;
nenhere--;
if (i <= nenhere) {
if (game.kx[i]==ix && game.ky[i]==iy) break;
nenhere--;
if (i <= nenhere) {
@@
-687,7
+689,7
@@
static int targetcheck(double x, double y, double *course)
{
double deltx, delty;
/* Return TRUE if target is invalid */
{
double deltx, delty;
/* Return TRUE if target is invalid */
- if (
x < 1.0 || x > QUADSIZE || y < 1.0 || y > QUADSIZE
) {
+ if (
!VALID_SECTOR(x, y)
) {
huh();
return 1;
}
huh();
return 1;
}
@@
-826,7
+828,7
@@
void photon(void)
if (shldup || condit == IHDOCKED)
r *= 1.0 + 0.0001*shield;
torpedo(course[i], r, sectx, secty, &dummy, 0, i, n);
if (shldup || condit == IHDOCKED)
r *= 1.0 + 0.0001*shield;
torpedo(course[i], r, sectx, secty, &dummy, 0, i, n);
- if (alldone
||game.state.galaxy[quadx][quady]==SUPERNOVA_PLACE
)
+ if (alldone
|| game.state.galaxy[quadx][quady].supernova
)
return;
}
if (game.state.remkl==0) finish(FWON);
return;
}
if (game.state.remkl==0) finish(FWON);
@@
-995,7
+997,7
@@
void phasers(void)
irec=0;
do {
chew();
irec=0;
do {
chew();
- if (!kz) for
(i = 1; i <= nenhere; i++
)
+ if (!kz) for
_local_enemies(i
)
irec+=fabs(game.kpower[i])/(PHASEFAC*pow(0.90,game.kdist[i]))*
(1.01+0.05*Rand()) + 1.0;
kz=1;
irec+=fabs(game.kpower[i])/(PHASEFAC*pow(0.90,game.kdist[i]))*
(1.01+0.05*Rand()) + 1.0;
kz=1;
@@
-1030,7
+1032,7
@@
void phasers(void)
if (nenhere) {
extra = 0.0;
powrem = rpow;
if (nenhere) {
extra = 0.0;
powrem = rpow;
- for
(i = 1; i <= nenhere; i++
) {
+ for
_local_enemies(i
) {
hits[i] = 0.0;
if (powrem <= 0) continue;
hits[i] = fabs(game.kpower[i])/(PHASEFAC*pow(0.90,game.kdist[i]));
hits[i] = 0.0;
if (powrem <= 0) continue;
hits[i] = fabs(game.kpower[i])/(PHASEFAC*pow(0.90,game.kdist[i]));