(mchrstr, lchrstr): Change from variable-style storage of load
capacities to straight arrays. Users now subscript the array instead of calling vl_find() or walking the variable data structure. (mchr, lchr): Initializers adapted. (vl_find): No longer used. Remove file.
This commit is contained in:
parent
a965b2d25e
commit
8a0854b6b8
22 changed files with 168 additions and 697 deletions
|
@ -99,9 +99,7 @@ struct lndstr {
|
||||||
#define LND_NOTANY bit(0) /* Just a placeholder, not used */
|
#define LND_NOTANY bit(0) /* Just a placeholder, not used */
|
||||||
|
|
||||||
struct lchrstr {
|
struct lchrstr {
|
||||||
u_char l_nv; /* number of variables it can hold */
|
u_short l_item[I_MAX+1]; /* load limit */
|
||||||
u_char l_vtype[MAXCHRNV];
|
|
||||||
u_short l_vamt[MAXCHRNV];
|
|
||||||
s_char *l_name; /* full name of type of land unit */
|
s_char *l_name; /* full name of type of land unit */
|
||||||
int l_lcm; /* units of lcm to build */
|
int l_lcm; /* units of lcm to build */
|
||||||
int l_hcm; /* units of hcm to build */
|
int l_hcm; /* units of hcm to build */
|
||||||
|
|
|
@ -179,15 +179,6 @@ extern void snxtsct_dist(register struct nstr_sect *, coord, coord, int);
|
||||||
/* type.c */
|
/* type.c */
|
||||||
extern int sct_typematch(char *);
|
extern int sct_typematch(char *);
|
||||||
extern int typematch(char *, int);
|
extern int typematch(char *, int);
|
||||||
/* vlist.c */
|
|
||||||
extern int vl_find(register int, u_char *, u_short *, int);
|
|
||||||
extern int vl_set(register int, u_int, u_char *, u_short *, u_char *, int);
|
|
||||||
extern int vl_damage(register int, register u_char *, register u_short *,
|
|
||||||
register int);
|
|
||||||
extern int vl_getvec(register u_char *, register u_short *, register int,
|
|
||||||
register int, register int *);
|
|
||||||
extern int vl_setvec(register u_char *, register u_short *, u_char *,
|
|
||||||
int, register int, register int *);
|
|
||||||
/* wantupd.c */
|
/* wantupd.c */
|
||||||
extern void update_policy_check(void);
|
extern void update_policy_check(void);
|
||||||
extern int demand_update_want(int *, int *, int);
|
extern int demand_update_want(int *, int *, int);
|
||||||
|
@ -604,7 +595,6 @@ extern int prod_plane(int, int, int *, int);
|
||||||
extern void populace(struct natstr *, register struct sctstr *, int);
|
extern void populace(struct natstr *, register struct sctstr *, int);
|
||||||
extern int total_work(register int, register int, register int,
|
extern int total_work(register int, register int, register int,
|
||||||
register int, register int);
|
register int, register int);
|
||||||
extern double prod_eff(struct pchrstr *, float);
|
|
||||||
/* prepare.c */
|
/* prepare.c */
|
||||||
extern void tax(struct sctstr *, struct natstr *, int, long *, int *,
|
extern void tax(struct sctstr *, struct natstr *, int, long *, int *,
|
||||||
int *, int *);
|
int *, int *);
|
||||||
|
@ -614,6 +604,7 @@ extern int bank_income(struct sctstr *, int);
|
||||||
/* produce.c */
|
/* produce.c */
|
||||||
extern int produce(struct natstr *, struct sctstr *, short *, int, int,
|
extern int produce(struct natstr *, struct sctstr *, short *, int, int,
|
||||||
int, int *, int *);
|
int, int *, int *);
|
||||||
|
extern double prod_eff(struct pchrstr *, float);
|
||||||
/* removewants.c */
|
/* removewants.c */
|
||||||
extern int update_removewants(void);
|
extern int update_removewants(void);
|
||||||
/* revolt.c */
|
/* revolt.c */
|
||||||
|
|
|
@ -128,9 +128,7 @@ struct fltheadstr {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mchrstr {
|
struct mchrstr {
|
||||||
u_char m_nv; /* number of variables it can hold */
|
u_short m_item[I_MAX+1]; /* load limit */
|
||||||
u_char m_vtype[MAXCHRNV];
|
|
||||||
u_short m_vamt[MAXCHRNV];
|
|
||||||
int m_lcm; /* units of lcm to build */
|
int m_lcm; /* units of lcm to build */
|
||||||
int m_hcm; /* units of hcm to build */
|
int m_hcm; /* units of hcm to build */
|
||||||
int m_armor; /* how well armored it is */
|
int m_armor; /* how well armored it is */
|
||||||
|
|
|
@ -754,7 +754,7 @@ load_comm_ship(struct sctstr *sectp, struct shpstr *sp,
|
||||||
return RET_SYN;
|
return RET_SYN;
|
||||||
|
|
||||||
ship_amt = sp->shp_item[item];
|
ship_amt = sp->shp_item[item];
|
||||||
ship_max = vl_find(item, mcp->m_vtype, mcp->m_vamt, mcp->m_nv);
|
ship_max = mcp->m_item[item];
|
||||||
sect_amt = sectp->sct_item[item];
|
sect_amt = sectp->sct_item[item];
|
||||||
amount = atoi(p);
|
amount = atoi(p);
|
||||||
if (amount < 0)
|
if (amount < 0)
|
||||||
|
@ -957,7 +957,7 @@ load_comm_land(struct sctstr *sectp, struct lndstr *lp,
|
||||||
return RET_SYN;
|
return RET_SYN;
|
||||||
|
|
||||||
land_amt = lp->lnd_item[item];
|
land_amt = lp->lnd_item[item];
|
||||||
land_max = vl_find(item, lcp->l_vtype, lcp->l_vamt, lcp->l_nv);
|
land_max = lcp->l_item[item];
|
||||||
sect_amt = sectp->sct_item[item];
|
sect_amt = sectp->sct_item[item];
|
||||||
amount = atoi(p);
|
amount = atoi(p);
|
||||||
if (amount < 0)
|
if (amount < 0)
|
||||||
|
|
|
@ -94,8 +94,7 @@ ltend(void)
|
||||||
return RET_FAIL;
|
return RET_FAIL;
|
||||||
}
|
}
|
||||||
vbase = &mchr[(int)tender.shp_type];
|
vbase = &mchr[(int)tender.shp_type];
|
||||||
maxtender = vl_find(ip->i_vtype, vbase->m_vtype,
|
maxtender = vbase->m_item[ip->i_vtype];
|
||||||
vbase->m_vamt, (int)vbase->m_nv);
|
|
||||||
if (maxtender == 0) {
|
if (maxtender == 0) {
|
||||||
pr("A %s cannot hold any %s\n",
|
pr("A %s cannot hold any %s\n",
|
||||||
mchr[(int)tender.shp_type].m_name, ip->i_name);
|
mchr[(int)tender.shp_type].m_name, ip->i_name);
|
||||||
|
@ -121,8 +120,7 @@ ltend(void)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
lbase = &lchr[(int)target.lnd_type];
|
lbase = &lchr[(int)target.lnd_type];
|
||||||
maxtarget = vl_find(ip->i_vtype, lbase->l_vtype,
|
maxtarget = lbase->l_item[ip->i_vtype];
|
||||||
lbase->l_vamt, (int)lbase->l_nv);
|
|
||||||
if (amt < 0) {
|
if (amt < 0) {
|
||||||
if (!player->owner)
|
if (!player->owner)
|
||||||
amt = 0;
|
amt = 0;
|
||||||
|
|
|
@ -362,7 +362,7 @@ deity_build_land(int type, coord x, coord y, natid own, int tlev)
|
||||||
land.lnd_fuelu = (int)LND_FU(lp->l_fuelu, tlev - lp->l_tech);
|
land.lnd_fuelu = (int)LND_FU(lp->l_fuelu, tlev - lp->l_tech);
|
||||||
land.lnd_maxlight = (int)LND_XPL(lp->l_nxlight, tlev - lp->l_tech);
|
land.lnd_maxlight = (int)LND_XPL(lp->l_nxlight, tlev - lp->l_tech);
|
||||||
land.lnd_maxland = (int)LND_MXL(lp->l_mxland, tlev - lp->l_tech);
|
land.lnd_maxland = (int)LND_MXL(lp->l_mxland, tlev - lp->l_tech);
|
||||||
land.lnd_item[I_FOOD] = vl_find(V_FOOD, lp->l_vtype, lp->l_vamt, lp->l_nv);
|
land.lnd_item[I_FOOD] = lp->l_item[I_FOOD];
|
||||||
|
|
||||||
putland(land.lnd_uid, &land);
|
putland(land.lnd_uid, &land);
|
||||||
makenotlost(EF_LAND, land.lnd_own, land.lnd_uid, land.lnd_x,
|
makenotlost(EF_LAND, land.lnd_own, land.lnd_uid, land.lnd_x,
|
||||||
|
|
|
@ -121,8 +121,7 @@ tend(void)
|
||||||
return RET_FAIL;
|
return RET_FAIL;
|
||||||
}
|
}
|
||||||
vbase = &mchr[(int)tender.shp_type];
|
vbase = &mchr[(int)tender.shp_type];
|
||||||
maxtender = vl_find(ip->i_vtype, vbase->m_vtype,
|
maxtender = vbase->m_item[ip->i_vtype];
|
||||||
vbase->m_vamt, (int)vbase->m_nv);
|
|
||||||
if (maxtender == 0) {
|
if (maxtender == 0) {
|
||||||
pr("A %s cannot hold any %s\n",
|
pr("A %s cannot hold any %s\n",
|
||||||
mchr[(int)tender.shp_type].m_name, ip->i_name);
|
mchr[(int)tender.shp_type].m_name, ip->i_name);
|
||||||
|
@ -150,8 +149,7 @@ tend(void)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
vbase = &mchr[(int)target.shp_type];
|
vbase = &mchr[(int)target.shp_type];
|
||||||
maxtarget = vl_find(ip->i_vtype, vbase->m_vtype,
|
maxtarget = vbase->m_item[ip->i_vtype];
|
||||||
vbase->m_vamt, (int)vbase->m_nv);
|
|
||||||
if (amt < 0) {
|
if (amt < 0) {
|
||||||
if (!player->owner)
|
if (!player->owner)
|
||||||
amt = 0;
|
amt = 0;
|
||||||
|
|
|
@ -38,13 +38,13 @@ NTLIB = $(SRCDIR)\lib\libcommon.lib
|
||||||
OBJS = bestpath.o bridgefall.o check.o damage.o file.o fsize.o \
|
OBJS = bestpath.o bridgefall.o check.o damage.o file.o fsize.o \
|
||||||
hap_fact.o hours.o land.o log.o mailbox.o maps.o move.o \
|
hap_fact.o hours.o land.o log.o mailbox.o maps.o move.o \
|
||||||
nat.o path.o res_pop.o sectdamage.o \
|
nat.o path.o res_pop.o sectdamage.o \
|
||||||
stmtch.o tfact.o type.o vlist.o wantupd.o xy.o
|
stmtch.o tfact.o type.o wantupd.o xy.o
|
||||||
|
|
||||||
NTOBJS = bestpath.obj bridgefall.obj check.obj damage.obj file.obj fsize.obj \
|
NTOBJS = bestpath.obj bridgefall.obj check.obj damage.obj file.obj fsize.obj \
|
||||||
hap_fact.obj hours.obj land.obj log.obj \
|
hap_fact.obj hours.obj land.obj log.obj \
|
||||||
mailbox.obj maps.obj move.obj nat.obj path.obj res_pop.obj \
|
mailbox.obj maps.obj move.obj nat.obj path.obj res_pop.obj \
|
||||||
sectdamage.obj stmtch.obj tfact.obj \
|
sectdamage.obj stmtch.obj tfact.obj \
|
||||||
type.obj vlist.obj wantupd.obj xy.obj
|
type.obj wantupd.obj xy.obj
|
||||||
|
|
||||||
all: $(LIB)
|
all: $(LIB)
|
||||||
|
|
||||||
|
|
|
@ -1,289 +0,0 @@
|
||||||
/*
|
|
||||||
* Empire - A multi-player, client/server Internet based war game.
|
|
||||||
* Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
|
|
||||||
* Ken Stevens, Steve McClure
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
* ---
|
|
||||||
*
|
|
||||||
* See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
|
|
||||||
* related information and legal notices. It is expected that any future
|
|
||||||
* projects/authors will amend these files as needed.
|
|
||||||
*
|
|
||||||
* ---
|
|
||||||
*
|
|
||||||
* vlist.c: manage variable lists
|
|
||||||
*
|
|
||||||
* Known contributors to this file:
|
|
||||||
* Dave Pare, 1989
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "misc.h"
|
|
||||||
#include "var.h"
|
|
||||||
#include "sect.h"
|
|
||||||
#include "ship.h"
|
|
||||||
#include "land.h"
|
|
||||||
#include "product.h"
|
|
||||||
#include "optlist.h"
|
|
||||||
#include "common.h"
|
|
||||||
#include "gen.h"
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
static int freeslot(u_char *vec, register u_char *end);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
|
||||||
vl_find(register int vtype, u_char *typevec, u_short *amtvec, int nelem)
|
|
||||||
{
|
|
||||||
register u_char *vp;
|
|
||||||
register u_short *ap;
|
|
||||||
register u_char *endp;
|
|
||||||
|
|
||||||
if (vtype < 0 || vtype > V_MAX)
|
|
||||||
return -1;
|
|
||||||
vp = typevec;
|
|
||||||
ap = amtvec;
|
|
||||||
endp = vp + nelem;
|
|
||||||
for (; vp < endp; vp++, ap++) {
|
|
||||||
if (*vp == vtype)
|
|
||||||
return (int)*ap;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
int
|
|
||||||
vl_set(register int vtype, u_int amt, u_char *typevec, u_short *amtvec,
|
|
||||||
u_char *nvp, int max)
|
|
||||||
{
|
|
||||||
register u_char *vp;
|
|
||||||
register u_char *endp;
|
|
||||||
register u_short *ap;
|
|
||||||
int n;
|
|
||||||
|
|
||||||
if (vtype < 0 || vtype > V_MAX)
|
|
||||||
return 0;
|
|
||||||
if (amt > 65536) {
|
|
||||||
logerror("vl_set: bad amt %d (%x), vtype %d\n", (int)amt, amt,
|
|
||||||
vtype);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
vp = typevec;
|
|
||||||
ap = amtvec;
|
|
||||||
endp = vp + *nvp;
|
|
||||||
for (; vp < endp; vp++, ap++) {
|
|
||||||
if (*vp == vtype)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (vp == endp) {
|
|
||||||
if (amt == 0) {
|
|
||||||
/* deleting, but not present */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (*nvp == max) {
|
|
||||||
if (isdel(vtype) || isdist(vtype))
|
|
||||||
return -1;
|
|
||||||
/* replace any del or dst entries */
|
|
||||||
if ((n = freeslot(typevec, endp)) < 0)
|
|
||||||
return -1;
|
|
||||||
vp = &typevec[n];
|
|
||||||
ap = &amtvec[n];
|
|
||||||
} else {
|
|
||||||
/* add at end */
|
|
||||||
(*nvp)++;
|
|
||||||
}
|
|
||||||
*vp = vtype;
|
|
||||||
*ap = amt;
|
|
||||||
} else {
|
|
||||||
if (amt != 0) {
|
|
||||||
/* altering; just change value */
|
|
||||||
*ap = amt;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
(*nvp)--;
|
|
||||||
if (vp < endp - 1) {
|
|
||||||
/* if not last element, copy last to current */
|
|
||||||
*ap = amtvec[*nvp];
|
|
||||||
*vp = typevec[*nvp];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
vl_damage(register int pct, register u_char *typevec,
|
|
||||||
register u_short *amtvec, register int nelem)
|
|
||||||
{
|
|
||||||
register int i;
|
|
||||||
register int lose;
|
|
||||||
|
|
||||||
if (pct >= 100)
|
|
||||||
return 0;
|
|
||||||
if (pct <= 0)
|
|
||||||
return nelem;
|
|
||||||
for (i = 0; i < nelem; i++) {
|
|
||||||
if (!isitem(typevec[i]))
|
|
||||||
continue;
|
|
||||||
if (opt_SUPER_BARS && typevec[i] == V_BAR)
|
|
||||||
continue;
|
|
||||||
lose = roundavg((double)amtvec[i] * pct * 0.01);
|
|
||||||
if (typevec[i] == V_CIVIL ||
|
|
||||||
typevec[i] == V_MILIT || typevec[i] == V_UW)
|
|
||||||
lose = ldround(people_damage * lose, 1);
|
|
||||||
if ((amtvec[i] -= lose) + 1 == 0) {
|
|
||||||
nelem--;
|
|
||||||
if (i == nelem)
|
|
||||||
break;
|
|
||||||
typevec[i] = typevec[nelem];
|
|
||||||
amtvec[i] = amtvec[nelem];
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nelem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* extract all "mask" items from the variable list
|
|
||||||
* caller must pass a pointer to an aray of I_MAX+1,
|
|
||||||
* or else bad things will happen.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
vl_getvec(register u_char *src_type, register u_short *src_amt,
|
|
||||||
register int src_nv, register int class, register int *dst_amt)
|
|
||||||
{
|
|
||||||
register int n;
|
|
||||||
int count;
|
|
||||||
int item;
|
|
||||||
|
|
||||||
for (n = 0; n < I_MAX + 1; n++)
|
|
||||||
dst_amt[n] = 0;
|
|
||||||
for (count = 0, n = 0; n < src_nv; n++) {
|
|
||||||
if ((src_type[n] & VT_TYPE) != class)
|
|
||||||
continue;
|
|
||||||
item = src_type[n] & ~VT_TYPE;
|
|
||||||
if (item > I_MAX) {
|
|
||||||
logerror("vl_getvec: bad I-type %d (vtype %d)\n",
|
|
||||||
item, src_type[n]);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
dst_amt[item] = src_amt[n];
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copy the vec into the variable list. All items zero in
|
|
||||||
* the vec will be deleted from the vlist, and all items
|
|
||||||
* present in the vec will be added to the vlist.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
vl_setvec(register u_char *type, register u_short *amt, u_char *nvp,
|
|
||||||
int max, register int class, register int *vec)
|
|
||||||
{
|
|
||||||
register int nv;
|
|
||||||
register int n;
|
|
||||||
register int vec_n;
|
|
||||||
|
|
||||||
nv = *nvp;
|
|
||||||
vec_n = 1;
|
|
||||||
n = 0;
|
|
||||||
while (n < nv) {
|
|
||||||
if ((type[n] & VT_TYPE) != class) {
|
|
||||||
n++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
/* find non-zero vec entry to overwrite current slot */
|
|
||||||
for (; vec_n <= I_MAX; vec_n++)
|
|
||||||
if (vec[vec_n] != 0)
|
|
||||||
break;
|
|
||||||
if (vec_n > I_MAX) {
|
|
||||||
/* no more elements left; delete */
|
|
||||||
nv--;
|
|
||||||
if (n < nv) {
|
|
||||||
/* copy last entry over current entry */
|
|
||||||
type[n] = type[nv];
|
|
||||||
amt[n] = amt[nv];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* use new (unused) entry */
|
|
||||||
type[n] = vec_n | class;
|
|
||||||
amt[n] = vec[vec_n];
|
|
||||||
vec_n++;
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*nvp = nv;
|
|
||||||
if (n >= nv && vec_n > I_MAX)
|
|
||||||
return 1;
|
|
||||||
/* free slots at end; copy rest of vec into the vlist */
|
|
||||||
for (; vec_n <= I_MAX && nv < max; vec_n++) {
|
|
||||||
if (vec[vec_n] == 0)
|
|
||||||
continue;
|
|
||||||
type[nv] = vec_n | class;
|
|
||||||
amt[nv] = vec[vec_n];
|
|
||||||
nv++;
|
|
||||||
}
|
|
||||||
*nvp = nv;
|
|
||||||
if (vec_n <= I_MAX && (class == VT_ITEM || class == VT_COND)) {
|
|
||||||
/*
|
|
||||||
* still stuff left; make free slots out of deliveries
|
|
||||||
* and distributes and stuff 'em in (only for item or cond)
|
|
||||||
*/
|
|
||||||
for (; vec_n <= I_MAX; vec_n++) {
|
|
||||||
if (vec[vec_n] == 0)
|
|
||||||
continue;
|
|
||||||
if ((n = freeslot(type, &type[max])) < 0) {
|
|
||||||
logerror("vl_setvec: no free slots left\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
logerror("vl_setvec: replacing type %d amt %d\n",
|
|
||||||
type[n], amt[n]);
|
|
||||||
type[n] = vec_n | class;
|
|
||||||
amt[n] = vec[vec_n];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (nv == max) {
|
|
||||||
/* checking for overflow */
|
|
||||||
while (vec_n <= I_MAX) {
|
|
||||||
if (vec[vec_n])
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (vec_n <= I_MAX) {
|
|
||||||
logerror("vl_setvec: no space for i-type #%d (%d)\n",
|
|
||||||
vec_n, vec[vec_n]);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* make a free slot; deliveries and distributions
|
|
||||||
* are fair game for us.
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
freeslot(u_char *vec, register u_char *end)
|
|
||||||
{
|
|
||||||
register u_char *vp;
|
|
||||||
|
|
||||||
for (vp = vec; vp < end; vp++) {
|
|
||||||
if (isdel(*vp) || isdist(*vp))
|
|
||||||
return vp - vec;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -45,200 +45,155 @@ struct lchrstr lchr[] = {
|
||||||
flags, nv
|
flags, nv
|
||||||
cargo
|
cargo
|
||||||
*/
|
*/
|
||||||
{2,
|
|
||||||
{V_FOOD, V_MILIT},
|
{{0, 0, 20, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0},
|
||||||
{12, 20},
|
|
||||||
"cav cavalry",
|
"cav cavalry",
|
||||||
10, 5, 0, 0, 0, 30, 500,
|
10, 5, 0, 0, 0, 30, 500,
|
||||||
1.2, 0.5, 80, 32, 18, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
1.2, 0.5, 80, 32, 18, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
L_RECON | L_LIGHT,
|
L_RECON | L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 25, 1, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{15, 1, 25},
|
|
||||||
"linf light infantry",
|
"linf light infantry",
|
||||||
8, 4, 0, 0, 0, 40, 300,
|
8, 4, 0, 0, 0, 40, 300,
|
||||||
1.0, 1.5, 60, 28, 15, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
1.0, 1.5, 60, 28, 15, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||||||
L_ASSAULT | L_LIGHT,
|
L_ASSAULT | L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{2,
|
{{0, 0, 100, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_MILIT},
|
|
||||||
{24, 100},
|
|
||||||
"inf infantry",
|
"inf infantry",
|
||||||
10, 5, 0, 0, 0, 50, 500,
|
10, 5, 0, 0, 0, 50, 500,
|
||||||
1.0, 1.5, 60, 25, 15, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
1.0, 1.5, 60, 25, 15, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
L_ASSAULT | L_LIGHT,
|
L_ASSAULT | L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 100, 8, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{60, 8, 100},
|
|
||||||
"mtif motor inf",
|
"mtif motor inf",
|
||||||
15, 10, 0, 0, 0, 190, 400,
|
15, 10, 0, 0, 0, 190, 400,
|
||||||
1.2, 2.2, 60, 33, 17, 1, 3, 0, 0, 0, 2, 3, 13, 1, 0, 0,
|
1.2, 2.2, 60, 33, 17, 1, 3, 0, 0, 0, 2, 3, 13, 1, 0, 0,
|
||||||
L_LIGHT,
|
L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 100, 8, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{60, 8, 100},
|
|
||||||
"mif mech inf",
|
"mif mech inf",
|
||||||
15, 10, 0, 0, 0, 190, 800,
|
15, 10, 0, 0, 0, 190, 800,
|
||||||
1.5, 2.5, 50, 33, 17, 1, 3, 0, 0, 0, 2, 3, 13, 1, 0, 0,
|
1.5, 2.5, 50, 33, 17, 1, 3, 0, 0, 0, 2, 3, 13, 1, 0, 0,
|
||||||
L_LIGHT,
|
L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 100, 4, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{60, 4, 100},
|
|
||||||
"mar marines",
|
"mar marines",
|
||||||
10, 5, 0, 0, 0, 140, 1000,
|
10, 5, 0, 0, 0, 140, 1000,
|
||||||
1.4, 2.4, 60, 25, 14, 2, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0,
|
1.4, 2.4, 60, 25, 14, 2, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0,
|
||||||
L_MARINE | L_ASSAULT | L_LIGHT,
|
L_MARINE | L_ASSAULT | L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{10,
|
{{0, 0, 25, 200, 10, 300, 100, 100, 10, 300, 0, 200, 100, 0, 0},
|
||||||
{V_SHELL, V_GUN, V_FOOD, V_LCM, V_HCM, V_DUST, V_BAR, V_IRON,
|
|
||||||
V_PETROL, V_MILIT},
|
|
||||||
{200, 10, 300, 200, 100, 100, 10, 100, 300, 25},
|
|
||||||
"sup supply",
|
"sup supply",
|
||||||
10, 5, 0, 0, 0, 50, 500,
|
10, 5, 0, 0, 0, 50, 500,
|
||||||
0.1, 0.2, 80, 25, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0.1, 0.2, 80, 25, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
L_LIGHT | L_SUPPLY,
|
L_LIGHT | L_SUPPLY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{12,
|
{{0, 0, 990, 990, 200, 990, 500, 500, 100, 990, 990, 990, 990, 0, 150},
|
||||||
{V_SHELL, V_GUN, V_FOOD, V_LCM, V_HCM, V_DUST, V_BAR, V_IRON,
|
|
||||||
V_PETROL, V_MILIT, V_OIL, V_RAD},
|
|
||||||
{990, 200, 990, 990, 990, 500, 100, 500, 990, 990, 990, 150},
|
|
||||||
"tra train",
|
"tra train",
|
||||||
100, 50, 0, 0, 0, 40, 3500,
|
100, 50, 0, 0, 0, 40, 3500,
|
||||||
0.0, 0.0, 120, 10, 25, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12,
|
0.0, 0.0, 120, 10, 25, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12,
|
||||||
L_XLIGHT | L_TRAIN | L_HEAVY | L_SUPPLY,
|
L_XLIGHT | L_TRAIN | L_HEAVY | L_SUPPLY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{0,
|
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD},
|
|
||||||
{0,},
|
|
||||||
"spy infiltrator",
|
"spy infiltrator",
|
||||||
10, 5, 0, 0, 0, 40, 750,
|
10, 5, 0, 0, 0, 40, 750,
|
||||||
0.0, 0.0, 80, 32, 18, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0.0, 0.0, 80, 32, 18, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
L_ASSAULT | L_RECON | L_LIGHT | L_SPY,
|
L_ASSAULT | L_RECON | L_LIGHT | L_SPY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{1,
|
{{0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
{V_SHELL},
|
|
||||||
{3,},
|
|
||||||
"com commando",
|
"com commando",
|
||||||
10, 5, 0, 0, 0, 55, 1500,
|
10, 5, 0, 0, 0, 55, 1500,
|
||||||
0.0, 0.0, 80, 32, 18, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0.0, 0.0, 80, 32, 18, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
L_ASSAULT | L_RECON | L_LIGHT | L_SPY,
|
L_ASSAULT | L_RECON | L_LIGHT | L_SPY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 20, 5, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{12, 5, 20},
|
|
||||||
"aau aa unit",
|
"aau aa unit",
|
||||||
20, 10, 0, 0, 0, 70, 500,
|
20, 10, 0, 0, 0, 70, 500,
|
||||||
0.5, 1.0, 60, 18, 20, 1, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0,
|
0.5, 1.0, 60, 18, 20, 1, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0,
|
||||||
L_FLAK | L_LIGHT,
|
L_FLAK | L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{4,
|
{{0, 0, 25, 40, 10, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT, V_GUN},
|
|
||||||
{24, 40, 25, 10},
|
|
||||||
"art artillery",
|
"art artillery",
|
||||||
20, 10, 0, 0, 0, 35, 800,
|
20, 10, 0, 0, 0, 35, 800,
|
||||||
0.1, 0.4, 70, 18, 20, 1, 0, 8, 50, 5, 2, 1, 0, 0, 0, 0,
|
0.1, 0.4, 70, 18, 20, 1, 0, 8, 50, 5, 2, 1, 0, 0, 0, 0,
|
||||||
L_LIGHT,
|
L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{4,
|
{{0, 0, 25, 20, 6, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT, V_GUN},
|
|
||||||
{12, 20, 25, 6},
|
|
||||||
"lat lt artillery",
|
"lat lt artillery",
|
||||||
20, 10, 0, 0, 0, 70, 500,
|
20, 10, 0, 0, 0, 70, 500,
|
||||||
0.2, 0.6, 60, 30, 18, 1, 1, 5, 10, 3, 1, 1, 0, 0, 0, 0,
|
0.2, 0.6, 60, 30, 18, 1, 1, 5, 10, 3, 1, 1, 0, 0, 0, 0,
|
||||||
L_LIGHT,
|
L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{4,
|
{{0, 0, 25, 80, 12, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT, V_GUN},
|
|
||||||
{24, 80, 25, 12},
|
|
||||||
"hat hvy artillery",
|
"hat hvy artillery",
|
||||||
40, 20, 0, 0, 0, 100, 800,
|
40, 20, 0, 0, 0, 100, 800,
|
||||||
0.0, 0.2, 60, 12, 20, 1, 0, 11, 99, 8, 4, 1, 0, 0, 0, 0,
|
0.0, 0.2, 60, 12, 20, 1, 0, 11, 99, 8, 4, 1, 0, 0, 0, 0,
|
||||||
0,
|
0,
|
||||||
},
|
},
|
||||||
|
|
||||||
{4,
|
{{0, 0, 25, 40, 10, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT, V_GUN},
|
|
||||||
{15, 40, 25, 10},
|
|
||||||
"mat mech artillery",
|
"mat mech artillery",
|
||||||
20, 10, 0, 0, 0, 200, 1000,
|
20, 10, 0, 0, 0, 200, 1000,
|
||||||
0.2, 0.6, 50, 35, 17, 1, 1, 8, 35, 6, 3, 3, 13, 1, 0, 0,
|
0.2, 0.6, 50, 35, 17, 1, 1, 8, 35, 6, 3, 3, 13, 1, 0, 0,
|
||||||
L_LIGHT,
|
L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 20, 3, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{12, 3, 20},
|
|
||||||
"eng engineer",
|
"eng engineer",
|
||||||
10, 5, 0, 0, 0, 130, 3000,
|
10, 5, 0, 0, 0, 130, 3000,
|
||||||
1.2, 2.4, 50, 25, 14, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
1.2, 2.4, 50, 25, 14, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||||||
L_ENGINEER | L_ASSAULT | L_LIGHT,
|
L_ENGINEER | L_ASSAULT | L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 20, 4, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{15, 4, 20},
|
|
||||||
"meng mech engineer",
|
"meng mech engineer",
|
||||||
10, 5, 0, 0, 0, 260, 4500,
|
10, 5, 0, 0, 0, 260, 4500,
|
||||||
1.8, 3.5, 45, 33, 15, 3, 3, 0, 0, 0, 1, 5, 25, 2, 0, 0,
|
1.8, 3.5, 45, 33, 15, 3, 3, 0, 0, 0, 1, 5, 25, 2, 0, 0,
|
||||||
L_ENGINEER | L_ASSAULT | L_LIGHT,
|
L_ENGINEER | L_ASSAULT | L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 50, 4, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{30, 4, 50},
|
|
||||||
"lar lt armor",
|
"lar lt armor",
|
||||||
10, 5, 0, 0, 0, 150, 600,
|
10, 5, 0, 0, 0, 150, 600,
|
||||||
2.0, 1.0, 50, 42, 15, 4, 4, 0, 0, 0, 1, 2, 25, 1, 0, 0,
|
2.0, 1.0, 50, 42, 15, 4, 4, 0, 0, 0, 1, 2, 25, 1, 0, 0,
|
||||||
L_RECON | L_LIGHT,
|
L_RECON | L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 100, 3, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{48, 3, 100},
|
|
||||||
"har hvy armor",
|
"har hvy armor",
|
||||||
20, 10, 0, 0, 0, 120, 500,
|
20, 10, 0, 0, 0, 120, 500,
|
||||||
2.0, 0.8, 50, 18, 17, 1, 1, 0, 0, 0, 2, 1, 10, 2, 0, 0,
|
2.0, 0.8, 50, 18, 17, 1, 1, 0, 0, 0, 2, 1, 10, 2, 0, 0,
|
||||||
0,
|
0,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 50, 4, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{30, 4, 50},
|
|
||||||
"arm armor",
|
"arm armor",
|
||||||
20, 10, 0, 0, 0, 170, 1000,
|
20, 10, 0, 0, 0, 170, 1000,
|
||||||
3.0, 1.5, 40, 33, 16, 2, 2, 0, 0, 0, 1, 2, 13, 1, 0, 0,
|
3.0, 1.5, 40, 33, 16, 2, 2, 0, 0, 0, 1, 2, 13, 1, 0, 0,
|
||||||
L_LIGHT,
|
L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{3,
|
{{0, 0, 50, 4, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_SHELL, V_MILIT},
|
|
||||||
{30, 4, 50},
|
|
||||||
"sec security",
|
"sec security",
|
||||||
10, 5, 0, 0, 0, 170, 600,
|
10, 5, 0, 0, 0, 170, 600,
|
||||||
1.0, 2.0, 60, 25, 15, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
1.0, 2.0, 60, 25, 15, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
|
||||||
L_SECURITY | L_LIGHT,
|
L_SECURITY | L_LIGHT,
|
||||||
},
|
},
|
||||||
|
|
||||||
{2,
|
{{0, 0, 10, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0},
|
||||||
{V_FOOD, V_MILIT},
|
|
||||||
{7, 10},
|
|
||||||
"rad radar unit",
|
"rad radar unit",
|
||||||
10, 5, 0, 0, 0, 270, 1000,
|
10, 5, 0, 0, 0, 270, 1000,
|
||||||
0.0, 0.0, 50, 33, 15, 3, 0, 0, 0, 0, 0, 2, 25, 2, 1, 0,
|
0.0, 0.0, 50, 33, 15, 3, 0, 0, 0, 0, 0, 2, 25, 2, 1, 0,
|
||||||
|
@ -252,9 +207,7 @@ struct lchrstr lchr[] = {
|
||||||
cargo
|
cargo
|
||||||
*/
|
*/
|
||||||
|
|
||||||
{0,
|
{{0},
|
||||||
{0},
|
|
||||||
{0},
|
|
||||||
"",
|
"",
|
||||||
0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
|
|
@ -56,297 +56,158 @@ struct mchrstr mchr[] = {
|
||||||
/* c c o e i g g i p p l l */
|
/* c c o e i g g i p p l l */
|
||||||
/* m m r d b e e m l l c u name tech Cost*/
|
/* m m r d b e e m l l c u name tech Cost*/
|
||||||
|
|
||||||
{4,
|
{{0, 300, 10, 0, 0, 0, 0, 0, 0, 900, 0, 0, 0, 15, 0},
|
||||||
{V_CIVIL, V_MILIT, V_FOOD, V_UW},
|
25, 15, 10, 10, 15, 2, 0, 0, 0, 0, 0, 0, "fb fishing boat",
|
||||||
{300, 10, 900, 15},
|
0, 180, M_FOOD, 0, 0},
|
||||||
25, 15, 10, 10, 15, 2, 0, 0, 0, 0, 0, 0, "fb fishing boat", 0, 180,
|
|
||||||
M_FOOD, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 300, 10, 0, 0, 0, 0, 0, 0, 900, 0, 0, 0, 15, 0},
|
||||||
{V_CIVIL, V_MILIT, V_FOOD, V_UW},
|
25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ft fishing trawler",
|
||||||
{300, 10, 900, 15},
|
35, 300, M_FOOD, 0, 0},
|
||||||
25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ft fishing trawler", 35,
|
|
||||||
300,
|
|
||||||
M_FOOD, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{8,
|
{{0, 600, 50, 300, 50, 0, 0, 0, 0, 900, 0,1400, 900, 250, 0},
|
||||||
{V_CIVIL, V_MILIT, V_SHELL, V_GUN, V_FOOD, V_LCM, V_HCM, V_UW},
|
60, 40, 20, 25, 35, 3, 0, 0, 1, 0, 0, 0, "cs cargo ship",
|
||||||
{600, 50, 300, 50, 900, 1400, 900, 250},
|
20, 500, M_SUPPLY, 0, 2},
|
||||||
60, 40, 20, 25, 35, 3, 0, 0, 1, 0, 0, 0, "cs cargo ship", 20, 500,
|
|
||||||
M_SUPPLY, 0, 2,
|
|
||||||
},
|
|
||||||
|
|
||||||
{7,
|
{{0, 30, 5, 0, 0, 0, 990, 990, 0, 200, 0, 0, 0, 45, 990},
|
||||||
{V_CIVIL, V_MILIT, V_IRON, V_DUST, V_FOOD, V_UW, V_RAD},
|
60, 40, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "os ore ship",
|
||||||
{30, 5, 990, 990, 200, 45, 990},
|
20, 500, 0, 0, 0},
|
||||||
60, 40, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "os ore ship", 20, 500,
|
|
||||||
0, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 20, 80, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0,1200, 0},
|
||||||
{V_CIVIL, V_MILIT, V_FOOD, V_UW},
|
60, 40, 20, 10, 35, 3, 0, 0, 1, 0, 0, 0, "ss slave ship",
|
||||||
{20, 80, 200, 1200},
|
0, 300, 0, 0, 0},
|
||||||
60, 40, 20, 10, 35, 3, 0, 0, 1, 0, 0, 0, "ss slave ship", 0, 300,
|
|
||||||
0, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{3,
|
{{0, 50, 50, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0},
|
||||||
{V_CIVIL, V_MILIT, V_FOOD},
|
200, 100, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "ts trade ship",
|
||||||
{50, 50, 100},
|
30, 1750, M_TRADE, 0, 0},
|
||||||
200, 100, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "ts trade ship", 30,
|
|
||||||
1750,
|
|
||||||
M_TRADE, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 60, 10, 2, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
30, 30, 50, 25, 25, 3, 1, 1, 1, 0, 0, 0, "frg frigate",
|
||||||
{60, 10, 2, 60},
|
0, 600, M_SEMILAND, 0, 2},
|
||||||
30, 30, 50, 25, 25, 3, 1, 1, 1, 0, 0, 0, "frg frigate", 0, 600,
|
|
||||||
M_SEMILAND, 0, 2,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 10, 5, 0, 0, 0, 0, 0, 0, 100, 1, 0, 0, 0, 0},
|
||||||
{V_CIVIL, V_MILIT, V_FOOD, V_OIL},
|
|
||||||
{10, 5, 100, 1},
|
|
||||||
25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "oe oil exploration boat",
|
25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "oe oil exploration boat",
|
||||||
40, 800,
|
40, 800, M_OIL, 0, 0},
|
||||||
M_OIL, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{5,
|
{{0, 990, 80, 0, 0, 0, 0, 0, 0, 990, 990, 0, 0, 990, 0},
|
||||||
{V_CIVIL, V_MILIT, V_FOOD, V_OIL, V_UW},
|
60, 60, 30, 15, 65, 3, 0, 0, 2, 0, 0, 0, "od oil derrick",
|
||||||
{990, 80, 990, 990, 990},
|
50, 1500, M_OIL, 0, 0},
|
||||||
60, 60, 30, 15, 65, 3, 0, 0, 2, 0, 0, 0, "od oil derrick", 50, 1500,
|
|
||||||
M_OIL, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 2, 12, 2, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_GUN, V_SHELL, V_FOOD},
|
20, 10, 10, 38, 10, 2, 1, 1, 0, 0, 4, 1, "pt patrol boat",
|
||||||
{2, 2, 12, 5},
|
40, 300, M_TORP, 0, 0},
|
||||||
20, 10, 10, 38, 10, 2, 1, 1, 0, 0, 4, 1, "pt patrol boat", 40, 300,
|
|
||||||
M_TORP, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 100, 40, 5, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
30, 40, 50, 30, 30, 5, 6, 3, 1, 0, 40, 1, "lc light cruiser",
|
||||||
{100, 40, 5, 100},
|
45, 800, M_MINE, 0, 2 },
|
||||||
30, 40, 50, 30, 30, 5, 6, 3, 1, 0, 40, 1, "lc light cruiser", 45,
|
|
||||||
800,
|
|
||||||
M_MINE, 0, 2,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 120, 100, 8, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
40, 50, 70, 30, 30, 5, 8, 4, 1, 0, 30, 1, "hc heavy cruiser",
|
||||||
{120, 100, 8, 200},
|
50, 1200, 0, 0, 4},
|
||||||
40, 50, 70, 30, 30, 5, 8, 4, 1, 0, 30, 1, "hc heavy cruiser", 50,
|
|
||||||
1200,
|
|
||||||
0, 0, 4,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 120, 20, 4, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
50, 50, 60, 20, 35, 3, 1, 2, 1, 0, 0, 0, "tt troop transport",
|
||||||
{120, 20, 4, 120},
|
10, 800, M_SEMILAND, 0, 2 },
|
||||||
50, 50, 60, 20, 35, 3, 1, 2, 1, 0, 0, 0, "tt troop transport", 10,
|
|
||||||
800,
|
|
||||||
M_SEMILAND, 0, 2,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 200, 200, 10, 0, 0, 0, 0, 900, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
50, 70, 95, 25, 35, 6, 10, 7, 1, 0, 50, 2, "bb battleship",
|
||||||
{200, 200, 10, 900},
|
45, 1800, 0, 0, 2},
|
||||||
50, 70, 95, 25, 35, 6, 10, 7, 1, 0, 50, 2, "bb battleship", 45,
|
|
||||||
1800,
|
|
||||||
0, 0, 2,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 180, 100, 10, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
50, 60, 55, 30, 35, 6, 10, 6, 1, 0, 60, 2, "bbc battlecruiser",
|
||||||
{180, 100, 10, 400},
|
75, 1500, 0, 0, 2},
|
||||||
50, 60, 55, 30, 35, 6, 10, 6, 1, 0, 60, 2, "bbc battlecruiser", 75,
|
|
||||||
1500,
|
|
||||||
0, 0, 2,
|
|
||||||
},
|
|
||||||
|
|
||||||
{6,
|
{{0, 30, 5, 0, 0, 990, 0, 0, 0, 200, 990, 0, 0, 25, 0},
|
||||||
{V_CIVIL, V_MILIT, V_PETROL, V_FOOD, V_OIL, V_UW},
|
60, 40, 75, 25, 45, 3, 0, 0, 1, 0, 30, 1, "tk tanker",
|
||||||
{30, 5, 990, 200, 990, 25},
|
35, 600, M_OILER | M_SUPPLY, 0, 0},
|
||||||
60, 40, 75, 25, 45, 3, 0, 0, 1, 0, 30, 1, "tk tanker", 35, 600,
|
|
||||||
M_OILER | M_SUPPLY, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 10, 100, 1, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_FOOD, V_SHELL, V_GUN},
|
25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ms minesweeper",
|
||||||
{10, 90, 100, 1},
|
40, 400, M_MINE | M_SWEEP, 0, 0},
|
||||||
25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ms minesweeper", 40, 400,
|
|
||||||
M_MINE | M_SWEEP, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 60, 40, 4, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
30, 30, 45, 35, 20, 4, 6, 3, 1, 0, 30, 1, "dd destroyer",
|
||||||
{60, 40, 4, 80},
|
70, 600, M_MINE | M_DCH | M_SONAR, 0, 1},
|
||||||
30, 30, 45, 35, 20, 4, 6, 3, 1, 0, 30, 1, "dd destroyer", 70, 600,
|
|
||||||
M_MINE | M_DCH | M_SONAR, 0, 1,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 25, 36, 5, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
30, 30, 25, 20, 5, 4, 3, 3, 0, 0, 30, 1, "sb submarine",
|
||||||
{25, 36, 5, 80},
|
60, 650, M_TORP | M_SUB | M_MINE | M_SONAR, 0, 0},
|
||||||
30, 30, 25, 20, 5, 4, 3, 3, 0, 0, 30, 1, "sb submarine", 60, 650,
|
|
||||||
M_TORP | M_SUB | M_MINE | M_SONAR, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{8,
|
{{0, 5, 10, 104, 20, 100, 0, 0, 0, 900, 0, 500, 300, 0, 0},
|
||||||
{V_CIVIL, V_MILIT, V_SHELL, V_GUN, V_FOOD, V_LCM, V_HCM, V_PETROL},
|
40, 40, 50, 30, 2, 3, 0, 0, 0, 0, 50, 2, "sbc cargo submarine",
|
||||||
{5, 10, 104, 20, 900, 500, 300, 100},
|
150, 1200, M_SUPPLY | M_OILER | M_SUB | M_SONAR, 0, 0},
|
||||||
40, 40, 50, 30, 2, 3, 0, 0, 0, 0, 50, 2, "sbc cargo submarine", 150,
|
|
||||||
1200,
|
|
||||||
M_SUPPLY | M_OILER | M_SUB | M_SONAR, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{5,
|
{{0, 0, 175, 250, 4, 300, 0, 0, 0, 180, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
|
50, 60, 60, 30, 40, 5, 2, 2, 4, 20, 50, 2, "cal light carrier",
|
||||||
{175, 250, 4, 300, 180},
|
80, 2700, M_FLY, 20, 0},
|
||||||
50, 60, 60, 30, 40, 5, 2, 2, 4, 20, 50, 2, "cal light carrier", 80,
|
|
||||||
2700,
|
|
||||||
M_FLY, 20, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{5,
|
{{0, 0, 350, 500, 4, 500, 0, 0, 0, 900, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
|
|
||||||
{350, 500, 4, 500, 900},
|
|
||||||
60, 70, 80, 35, 40, 7, 2, 2, 10, 40, 120, 3, "car aircraft carrier",
|
60, 70, 80, 35, 40, 7, 2, 2, 10, 40, 120, 3, "car aircraft carrier",
|
||||||
160, 4500,
|
160, 4500, M_FLY, 40, 0},
|
||||||
M_FLY, 40, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{5,
|
{{0, 0, 350, 999, 4, 999, 0, 0, 0, 900, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
|
70, 80, 100, 45, 40, 9, 2, 2, 20, 4, 0, 0, "can nuc carrier",
|
||||||
{350, 999, 4, 999, 900},
|
305, 8000, M_OILER | M_FLY | M_SUPPLY, 60, 0},
|
||||||
70, 80, 100, 45, 40, 9, 2, 2, 20, 4, 0, 0, "can nuc carrier", 305,
|
|
||||||
8000,
|
|
||||||
M_OILER | M_FLY | M_SUPPLY, 60, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 400, 10, 1, 0, 0, 0, 0, 300, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_FOOD, V_GUN, V_SHELL},
|
60, 40, 40, 30, 30, 2, 0, 0, 2, 0, 30, 1, "ls landing ship",
|
||||||
{400, 300, 1, 10},
|
145, 1000, M_LAND, 0, 6},
|
||||||
60, 40, 40, 30, 30, 2, 0, 0, 2, 0, 30, 1, "ls landing ship", 145,
|
|
||||||
1000,
|
|
||||||
M_LAND, 0, 6,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 60, 60, 4, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
40, 30, 50, 35, 30, 5, 2, 2, 4, 0, 40, 1, "af asw frigate",
|
||||||
{60, 60, 4, 120},
|
220, 800, M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0},
|
||||||
40, 30, 50, 35, 30, 5, 2, 2, 4, 0, 40, 1, "af asw frigate", 220,
|
|
||||||
800,
|
|
||||||
M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 25, 60, 6, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
30, 40, 45, 40, 3, 6, 5, 3, 0, 0, 0, 0, "na nuc attack sub",
|
||||||
{25, 60, 6, 500},
|
260, 1200, M_TORP | M_SUB | M_MINE | M_SONAR | M_SUBT, 0, 0},
|
||||||
30, 40, 45, 40, 3, 6, 5, 3, 0, 0, 0, 0, "na nuc attack sub", 260,
|
|
||||||
1200,
|
|
||||||
M_TORP | M_SUB | M_MINE | M_SONAR | M_SUBT, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{5,
|
{{0, 0, 100, 80, 6, 40, 0, 0, 0, 500, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
|
40, 40, 60, 40, 35, 6, 8, 3, 10, 2, 80, 2, "ad asw destroyer",
|
||||||
{100, 80, 6, 40, 500},
|
240, 1500, M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0},
|
||||||
40, 40, 60, 40, 35, 6, 8, 3, 10, 2, 80, 2, "ad asw destroyer", 240,
|
|
||||||
1500,
|
|
||||||
M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 25, 200, 1, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_FOOD, V_GUN},
|
30, 40, 55, 35, 2, 6, 0, 0, 0, 0, 0, 0, "nm nuc miss sub",
|
||||||
{25, 200, 500, 1},
|
270, 1500, M_SUB | M_SONAR, 20, 0},
|
||||||
30, 40, 55, 35, 2, 6, 0, 0, 0, 0, 0, 0, "nm nuc miss sub", 270,
|
|
||||||
1500,
|
|
||||||
M_SUB | M_SONAR, 20, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 25, 100, 1, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_FOOD, V_GUN},
|
30, 30, 35, 30, 3, 3, 0, 0, 0, 0, 30, 1, "msb missile sub",
|
||||||
{25, 100, 500, 1},
|
230, 1200, M_SUB | M_SONAR, 10, 0},
|
||||||
30, 30, 35, 30, 3, 3, 0, 0, 0, 0, 30, 1, "msb missile sub", 230,
|
|
||||||
1200,
|
|
||||||
M_SUB | M_SONAR, 10, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 5, 100, 3, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
20, 20, 15, 40, 15, 3, 2, 2, 0, 0, 7, 1, "mb missile boat",
|
||||||
{5, 100, 3, 500},
|
180, 500, 0, 10, 0},
|
||||||
20, 20, 15, 40, 15, 3, 2, 2, 0, 0, 7, 1, "mb missile boat", 180,
|
|
||||||
500,
|
|
||||||
0, 10, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 60, 220, 4, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
40, 30, 50, 35, 30, 5, 2, 2, 2, 0, 30, 1, "mf missile frigate",
|
||||||
{60, 220, 4, 120},
|
280, 1000, 0, 20, 0},
|
||||||
40, 30, 50, 35, 30, 5, 2, 2, 2, 0, 30, 1, "mf missile frigate", 280,
|
|
||||||
1000,
|
|
||||||
0, 20, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{5,
|
{{0, 0, 120, 500, 6, 160, 0, 0, 0, 200, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
|
50, 50, 70, 35, 35, 8, 8, 6, 8, 8, 35, 1, "mc missile cruiser",
|
||||||
{120, 500, 6, 160, 200},
|
290, 1500, M_ANTIMISSILE, 40, 0},
|
||||||
50, 50, 70, 35, 35, 8, 8, 6, 8, 8, 35, 1, "mc missile cruiser", 290,
|
|
||||||
1500,
|
|
||||||
M_ANTIMISSILE, 40, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{4,
|
{{0, 0, 100, 100, 15, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_FOOD},
|
50, 60, 80, 35, 30, 6, 1, 8, 1, 0, 60, 2, "aac aa cruiser",
|
||||||
{100, 100, 15, 200},
|
130, 1500, M_ANTIMISSILE, 0, 4},
|
||||||
50, 60, 80, 35, 30, 6, 1, 8, 1, 0, 60, 2, "aac aa cruiser", 130,
|
|
||||||
1500,
|
|
||||||
M_ANTIMISSILE, 0, 4,
|
|
||||||
},
|
|
||||||
|
|
||||||
{5,
|
{{0, 0, 200, 400, 25, 40, 0, 0, 0, 900, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
|
50, 60, 80, 35, 30, 6, 1, 16, 30, 2, 0, 0, "agc aegis cruiser",
|
||||||
{200, 400, 25, 40, 900},
|
265, 4000, M_ANTIMISSILE, 32, 0},
|
||||||
50, 60, 80, 35, 30, 6, 1, 16, 30, 2, 0, 0, "agc aegis cruiser", 265,
|
|
||||||
4000,
|
|
||||||
M_ANTIMISSILE, 32, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{5,
|
{{0, 0, 200, 400, 8, 40, 0, 0, 0, 900, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
|
50, 50, 100, 45, 35, 6, 14, 7, 10, 2, 0, 0, "ncr nuc cruiser",
|
||||||
{200, 400, 8, 40, 900},
|
325, 1800, M_ANTIMISSILE, 20, 0},
|
||||||
50, 50, 100, 45, 35, 6, 14, 7, 10, 2, 0, 0, "ncr nuc cruiser", 325,
|
|
||||||
1800,
|
|
||||||
M_ANTIMISSILE, 20, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{5,
|
{{0, 0, 200, 120, 6, 160, 0, 0, 0, 500, 0, 0, 0, 0, 0},
|
||||||
{V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
|
|
||||||
{200, 120, 6, 160, 500},
|
|
||||||
50, 50, 80, 45, 35, 9, 10, 4, 25, 8, 0, 0, "nas nuc asw cruiser",
|
50, 50, 80, 45, 35, 9, 10, 4, 25, 8, 0, 0, "nas nuc asw cruiser",
|
||||||
330, 1800,
|
330, 1800, M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0},
|
||||||
M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
{8,
|
/* ? c m s g p i d b f o l h u r */
|
||||||
{V_CIVIL, V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD, V_LCM, V_HCM},
|
{{0, 50, 50, 600, 50, 999, 0, 0, 0, 999, 0,1500, 900, 0, 0},
|
||||||
{50, 50, 600, 50, 999, 999, 1500, 900},
|
60, 40, 40, 45, 35, 6, 0, 0, 10, 2, 0, 0, "nsp nuc supply ship",
|
||||||
60, 40, 40, 45, 35, 6, 0, 0, 10, 2, 0, 0, "nsp nuc supply ship", 360,
|
360, 1500, M_SUPPLY, 0, 2},
|
||||||
1500,
|
|
||||||
M_SUPPLY, 0, 2,
|
|
||||||
},
|
|
||||||
|
|
||||||
{0,
|
{{0},
|
||||||
{0},
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "",
|
||||||
{0},
|
0, 0, 0, 0, 0}
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0,
|
|
||||||
0, 0, 0,
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int shp_maxno = (sizeof(mchr) / sizeof(struct mchrstr)) - 1;
|
int shp_maxno = (sizeof(mchr) / sizeof(struct mchrstr)) - 1;
|
||||||
|
|
|
@ -868,8 +868,7 @@ get_mob_support(int combat_mode, struct combat *off, struct combat *def)
|
||||||
case A_BOARD:
|
case A_BOARD:
|
||||||
if (off->type == EF_SECTOR && off->mob <= 0)
|
if (off->type == EF_SECTOR && off->mob <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
mob_support = vl_find(V_MILIT, def->shp_mcp->m_vtype,
|
mob_support = def->shp_mcp->m_item[I_MILIT];
|
||||||
def->shp_mcp->m_vamt, def->shp_mcp->m_nv);
|
|
||||||
if (mob_support < off->troops)
|
if (mob_support < off->troops)
|
||||||
pr("The size of the ship you are trying to board limits your party to %d mil,\n", mob_support);
|
pr("The size of the ship you are trying to board limits your party to %d mil,\n", mob_support);
|
||||||
else
|
else
|
||||||
|
@ -880,8 +879,7 @@ get_mob_support(int combat_mode, struct combat *off, struct combat *def)
|
||||||
return 0;
|
return 0;
|
||||||
if (def->lnd_lcp->l_flags & L_SPY)
|
if (def->lnd_lcp->l_flags & L_SPY)
|
||||||
return 1;
|
return 1;
|
||||||
mob_support = vl_find(V_MILIT, def->lnd_lcp->l_vtype,
|
mob_support = def->lnd_lcp->l_item[I_MILIT];
|
||||||
def->lnd_lcp->l_vamt, def->lnd_lcp->l_nv);
|
|
||||||
if (mob_support < off->troops)
|
if (mob_support < off->troops)
|
||||||
pr("The size of the unit you are trying to board limits your party to %d mil,\n", mob_support);
|
pr("The size of the unit you are trying to board limits your party to %d mil,\n", mob_support);
|
||||||
else
|
else
|
||||||
|
|
|
@ -705,8 +705,7 @@ lnd_sweep(struct emp_qelem *land_list, int verbose, int takemob,
|
||||||
putland(llp->land.lnd_uid, &llp->land);
|
putland(llp->land.lnd_uid, &llp->land);
|
||||||
if (!(mines = sect.sct_mines))
|
if (!(mines = sect.sct_mines))
|
||||||
continue;
|
continue;
|
||||||
max = vl_find(V_SHELL, llp->lcp->l_vtype,
|
max = llp->lcp->l_item[I_SHELL];
|
||||||
llp->lcp->l_vamt, (int)llp->lcp->l_nv);
|
|
||||||
lshells = llp->land.lnd_item[I_SHELL];
|
lshells = llp->land.lnd_item[I_SHELL];
|
||||||
sshells = sect.sct_item[I_SHELL];
|
sshells = sect.sct_item[I_SHELL];
|
||||||
for (m = 0; mines > 0 && m < max * 2; m++) {
|
for (m = 0; mines > 0 && m < max * 2; m++) {
|
||||||
|
|
|
@ -303,8 +303,7 @@ pln_dropoff(struct emp_qelem *list, struct ichrstr *ip, coord tx, coord ty,
|
||||||
sp = ptr;
|
sp = ptr;
|
||||||
there = sp->shp_item[ip->i_vtype];
|
there = sp->shp_item[ip->i_vtype];
|
||||||
mp = &mchr[(int)sp->shp_type];
|
mp = &mchr[(int)sp->shp_type];
|
||||||
max = vl_find(ip->i_vtype, mp->m_vtype,
|
max = mp->m_item[ip->i_vtype];
|
||||||
mp->m_vamt, (int)mp->m_nv);
|
|
||||||
}
|
}
|
||||||
there += amt;
|
there += amt;
|
||||||
if (there > max) {
|
if (there > max) {
|
||||||
|
|
|
@ -279,8 +279,7 @@ retreat_ship1(struct shpstr *sp, s_char code, int orig)
|
||||||
|
|
||||||
mines = sect.sct_mines;
|
mines = sect.sct_mines;
|
||||||
if ((mcp->m_flags & M_SWEEP) && mines > 0 && !player->owner) {
|
if ((mcp->m_flags & M_SWEEP) && mines > 0 && !player->owner) {
|
||||||
max = vl_find(V_SHELL, mcp->m_vtype,
|
max = mcp->m_item[I_SHELL];
|
||||||
mcp->m_vamt, (int)mcp->m_nv);
|
|
||||||
shells = sp->shp_item[I_SHELL];
|
shells = sp->shp_item[I_SHELL];
|
||||||
for (m = 0; mines > 0 && m < 5; m++) {
|
for (m = 0; mines > 0 && m < 5; m++) {
|
||||||
if (chance(0.66)) {
|
if (chance(0.66)) {
|
||||||
|
@ -520,8 +519,7 @@ retreat_land1(struct lndstr *lp, s_char code, int orig)
|
||||||
mines = sect.sct_mines;
|
mines = sect.sct_mines;
|
||||||
if ((lcp->l_flags & L_ENGINEER) && mines > 0 &&
|
if ((lcp->l_flags & L_ENGINEER) && mines > 0 &&
|
||||||
(sect.sct_oldown != lp->lnd_own)) {
|
(sect.sct_oldown != lp->lnd_own)) {
|
||||||
max = vl_find(V_SHELL, lcp->l_vtype,
|
max = lcp->l_item[I_SHELL];
|
||||||
lcp->l_vamt, (int)lcp->l_nv);
|
|
||||||
shells = lp->lnd_item[I_SHELL];
|
shells = lp->lnd_item[I_SHELL];
|
||||||
for (m = 0; mines > 0 && m < 5; m++) {
|
for (m = 0; mines > 0 && m < 5; m++) {
|
||||||
if (chance(0.66)) {
|
if (chance(0.66)) {
|
||||||
|
|
|
@ -420,13 +420,9 @@ void
|
||||||
show_ship_capab(int tlev)
|
show_ship_capab(int tlev)
|
||||||
{
|
{
|
||||||
register struct mchrstr *mp;
|
register struct mchrstr *mp;
|
||||||
register u_short *ap;
|
|
||||||
register u_char *type;
|
|
||||||
register int i;
|
register int i;
|
||||||
register int it;
|
|
||||||
int scount;
|
int scount;
|
||||||
int n;
|
int n;
|
||||||
s_char c;
|
|
||||||
s_char *p;
|
s_char *p;
|
||||||
|
|
||||||
pr("%25s cargos & capabilities\n", "");
|
pr("%25s cargos & capabilities\n", "");
|
||||||
|
@ -440,18 +436,9 @@ show_ship_capab(int tlev)
|
||||||
|
|
||||||
pr("%-25.25s ", mp->m_name);
|
pr("%-25.25s ", mp->m_name);
|
||||||
|
|
||||||
/*
|
for (i = 0; i <= I_MAX; ++i)
|
||||||
* should use vector stuff
|
if (mp->m_item[i])
|
||||||
*/
|
pr(" %d%c", mp->m_item[i], ichr[i].i_mnem);
|
||||||
for (ap = mp->m_vamt, type = mp->m_vtype, i = 0;
|
|
||||||
i < mp->m_nv; i++, ap++, type++) {
|
|
||||||
it = unitem((int)*type);
|
|
||||||
if (it > 0 && it <= I_MAX && ichr[it].i_name != 0)
|
|
||||||
c = ichr[it].i_name[0];
|
|
||||||
else
|
|
||||||
c = '?';
|
|
||||||
pr(" %d%c", *ap, c);
|
|
||||||
}
|
|
||||||
pr(" ");
|
pr(" ");
|
||||||
for (i = n = 0; i < 32; i++) {
|
for (i = n = 0; i < 32; i++) {
|
||||||
if (!(mp->m_flags & bit(i)))
|
if (!(mp->m_flags & bit(i)))
|
||||||
|
@ -559,11 +546,8 @@ show_land_capab(int tlev)
|
||||||
{
|
{
|
||||||
struct lchrstr *lcp;
|
struct lchrstr *lcp;
|
||||||
int lcount;
|
int lcount;
|
||||||
register u_short *ap;
|
|
||||||
register u_char *type;
|
|
||||||
register int i, n;
|
register int i, n;
|
||||||
register int it;
|
register s_char *p;
|
||||||
register s_char *p, c;
|
|
||||||
|
|
||||||
pr("%25s capabilities\n", "");
|
pr("%25s capabilities\n", "");
|
||||||
|
|
||||||
|
@ -575,18 +559,9 @@ show_land_capab(int tlev)
|
||||||
|
|
||||||
pr("%-25s ", lcp->l_name);
|
pr("%-25s ", lcp->l_name);
|
||||||
|
|
||||||
/*
|
for (i = 0; i <= I_MAX; ++i)
|
||||||
* should use vector stuff
|
if (lcp->l_item[i])
|
||||||
*/
|
pr(" %d%c", lcp->l_item[i], ichr[i].i_mnem);
|
||||||
for (ap = lcp->l_vamt, type = lcp->l_vtype, i = 0;
|
|
||||||
i < lcp->l_nv; i++, ap++, type++) {
|
|
||||||
it = unitem((int)*type);
|
|
||||||
if (it > 0 && it <= I_MAX && ichr[it].i_name != 0)
|
|
||||||
c = ichr[it].i_name[0];
|
|
||||||
else
|
|
||||||
c = '?';
|
|
||||||
pr(" %d%c", *ap, c);
|
|
||||||
}
|
|
||||||
pr(" ");
|
pr(" ");
|
||||||
for (i = n = 0; i < 32; i++) {
|
for (i = n = 0; i < 32; i++) {
|
||||||
if (!(lcp->l_flags & bit(i)))
|
if (!(lcp->l_flags & bit(i)))
|
||||||
|
|
|
@ -250,8 +250,7 @@ shp_sweep(struct emp_qelem *ship_list, int verbose, natid actor)
|
||||||
putship(mlp->ship.shp_uid, &mlp->ship);
|
putship(mlp->ship.shp_uid, &mlp->ship);
|
||||||
if (!(mines = sect.sct_mines))
|
if (!(mines = sect.sct_mines))
|
||||||
continue;
|
continue;
|
||||||
max = vl_find(V_SHELL, mlp->mcp->m_vtype,
|
max = mlp->mcp->m_item[I_SHELL];
|
||||||
mlp->mcp->m_vamt, (int)mlp->mcp->m_nv);
|
|
||||||
shells = mlp->ship.shp_item[I_SHELL];
|
shells = mlp->ship.shp_item[I_SHELL];
|
||||||
for (m = 0; mines > 0 && m < 5; m++) {
|
for (m = 0; mines > 0 && m < 5; m++) {
|
||||||
if (chance(0.66)) {
|
if (chance(0.66)) {
|
||||||
|
|
|
@ -439,7 +439,7 @@ get_minimum(struct lndstr *lp, int type)
|
||||||
int max, want = 0;
|
int max, want = 0;
|
||||||
|
|
||||||
lcp = &lchr[(int)lp->lnd_type];
|
lcp = &lchr[(int)lp->lnd_type];
|
||||||
max = vl_find(V_ITEM(type), lcp->l_vtype, lcp->l_vamt, (int)lcp->l_nv);
|
max = lcp->l_item[type];
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case I_FOOD:
|
case I_FOOD:
|
||||||
|
|
|
@ -329,8 +329,7 @@ nav_ship(register struct shpstr *sp)
|
||||||
/* special case for fishing boats */
|
/* special case for fishing boats */
|
||||||
if ((mchr[(int)sp->shp_type].m_flags & M_FOOD) == 1) {
|
if ((mchr[(int)sp->shp_type].m_flags & M_FOOD) == 1) {
|
||||||
food_amt = sp->shp_item[I_FOOD];
|
food_amt = sp->shp_item[I_FOOD];
|
||||||
max_amt = vl_find(V_FOOD, vship->m_vtype,
|
max_amt = vship->m_item[I_FOOD];
|
||||||
vship->m_vamt, vship->m_nv);
|
|
||||||
sectp = getsectp(sp->shp_x, sp->shp_y);
|
sectp = getsectp(sp->shp_x, sp->shp_y);
|
||||||
|
|
||||||
if (food_amt < max_amt && (sectp->sct_own == 0))
|
if (food_amt < max_amt && (sectp->sct_own == 0))
|
||||||
|
|
|
@ -107,8 +107,7 @@ load_it(register struct shpstr *sp, register struct sctstr *psect, int i)
|
||||||
if (comm == V_CIVIL || comm == V_MILIT)
|
if (comm == V_CIVIL || comm == V_MILIT)
|
||||||
sect_amt--; /* leave 1 civ or mil to hold the sector. */
|
sect_amt--; /* leave 1 civ or mil to hold the sector. */
|
||||||
vship = &mchr[(int)sp->shp_type];
|
vship = &mchr[(int)sp->shp_type];
|
||||||
abs_max = max_amt = vl_find(comm, vship->m_vtype,
|
abs_max = max_amt = vship->m_item[comm];
|
||||||
vship->m_vamt, (int)vship->m_nv);
|
|
||||||
|
|
||||||
if (!abs_max)
|
if (!abs_max)
|
||||||
return 0; /* can't load the ship, skip to the end. */
|
return 0; /* can't load the ship, skip to the end. */
|
||||||
|
|
|
@ -176,7 +176,7 @@ upd_ship(register struct shpstr *sp, register int etus,
|
||||||
* (double)sp->shp_effic / 100.0
|
* (double)sp->shp_effic / 100.0
|
||||||
* (double)sectp->sct_oil / 100.0
|
* (double)sectp->sct_oil / 100.0
|
||||||
* prod_eff(product, sp->shp_tech));
|
* prod_eff(product, sp->shp_tech));
|
||||||
max_oil = vl_find(V_OIL, mp->m_vtype, mp->m_vamt, mp->m_nv);
|
max_oil = mp->m_item[I_OIL];
|
||||||
if (sp->shp_item[I_OIL] + oil_gained > max_oil)
|
if (sp->shp_item[I_OIL] + oil_gained > max_oil)
|
||||||
oil_gained = max_oil - sp->shp_item[I_OIL];
|
oil_gained = max_oil - sp->shp_item[I_OIL];
|
||||||
sp->shp_item[I_OIL] += oil_gained;
|
sp->shp_item[I_OIL] += oil_gained;
|
||||||
|
@ -201,7 +201,7 @@ upd_ship(register struct shpstr *sp, register int etus,
|
||||||
if (n > 10)
|
if (n > 10)
|
||||||
nreport(sp->shp_own, N_DIE_FAMINE, 0, 1);
|
nreport(sp->shp_own, N_DIE_FAMINE, 0, 1);
|
||||||
}
|
}
|
||||||
max_food = vl_find(V_FOOD, mp->m_vtype, mp->m_vamt, mp->m_nv);
|
max_food = mp->m_item[I_FOOD];
|
||||||
if (sp->shp_item[I_FOOD] > max_food)
|
if (sp->shp_item[I_FOOD] > max_food)
|
||||||
sp->shp_item[I_FOOD] = max_food;
|
sp->shp_item[I_FOOD] = max_food;
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -414,10 +414,7 @@ nullify_objects(void)
|
||||||
if (opt_NO_LCMS)
|
if (opt_NO_LCMS)
|
||||||
lchr[i].l_lcm = 0;
|
lchr[i].l_lcm = 0;
|
||||||
/* Fix up the military values */
|
/* Fix up the military values */
|
||||||
for (j = 0; j < lchr[i].l_nv; j++) {
|
lchr[i].l_mil = lchr[i].l_item[I_MILIT];
|
||||||
if (lchr[i].l_vtype[j] == V_MILIT)
|
|
||||||
lchr[i].l_mil = lchr[i].l_vamt[j];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (i = 0; i < shp_maxno; i++) {
|
for (i = 0; i < shp_maxno; i++) {
|
||||||
if (opt_NO_HCMS)
|
if (opt_NO_HCMS)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue