struct lchrstr *lp, short *vec, int tlev);
static int build_plane(struct sctstr *sp,
struct plchrstr *pp, short *vec, int tlev);
+static int build_bridge(char);
static int build_bspan(struct sctstr *sp, short *vec);
static int build_btower(struct sctstr *sp, short *vec);
static int build_can_afford(double, char *);
what = *p;
switch (what) {
case 'b':
- if (natp->nat_level[NAT_TLEV] + 0.005 < buil_bt) {
- pr("Building a span requires a tech of %.0f\n", buil_bt);
- return RET_FAIL;
- }
- break;
case 't':
- if (!opt_BRIDGETOWERS) {
- pr("Bridge tower building is disabled.\n");
- return RET_FAIL;
- }
- if (natp->nat_level[NAT_TLEV] + 0.005 < buil_tower_bt) {
- pr("Building a tower requires a tech of %.0f\n",
- buil_tower_bt);
- return RET_FAIL;
- }
- break;
+ return build_bridge(what);
case 's':
case 'p':
case 'l':
return RET_FAIL;
}
break;
- case 'b':
- case 't':
- break;
case 'n':
p = getstarg(player->argp[3], "Nuke type? ", buf);
if (!p || !*p)
}
number = 1;
- if (what != 'b' && what != 't') {
- if (player->argp[4]) {
- number = atoi(player->argp[4]);
- if (number > 20) {
- char bstr[80];
- sprintf(bstr,
- "Are you sure that you want to build %s of them? ",
- player->argp[4]);
- p = getstarg(player->argp[6], bstr, buf);
- if (!p || *p != 'y')
- return RET_SYN;
- }
+ if (player->argp[4]) {
+ number = atoi(player->argp[4]);
+ if (number > 20) {
+ char bstr[80];
+ sprintf(bstr,
+ "Are you sure that you want to build %s of them? ",
+ player->argp[4]);
+ p = getstarg(player->argp[6], bstr, buf);
+ if (!p || *p != 'y')
+ return RET_SYN;
}
}
- if (what != 'b' && what != 'n' && what != 't') {
+ if (what != 'n') {
if (player->argp[5]) {
tlev = atoi(player->argp[5]);
if (tlev > natp->nat_level[NAT_TLEV] && !player->god) {
case 's':
built = build_ship(§, mp, sect.sct_item, tlev);
break;
- case 'b':
- built = build_bspan(§, sect.sct_item);
- break;
- case 't':
- built = build_btower(§, sect.sct_item);
- break;
case 'n':
built = build_nuke(§, np, sect.sct_item, tlev);
break;
return 1;
}
+static int
+build_bridge(char what)
+{
+ struct natstr *natp = getnatp(player->cnum);
+ struct nstr_sect nstr;
+ int gotsect, built;
+ struct sctstr sect;
+
+ switch (what) {
+ case 'b':
+ if (natp->nat_level[NAT_TLEV] + 0.005 < buil_bt) {
+ pr("Building a span requires a tech of %.0f\n", buil_bt);
+ return RET_FAIL;
+ }
+ break;
+ case 't':
+ if (!opt_BRIDGETOWERS) {
+ pr("Bridge tower building is disabled.\n");
+ return RET_FAIL;
+ }
+ if (natp->nat_level[NAT_TLEV] + 0.005 < buil_tower_bt) {
+ pr("Building a tower requires a tech of %.0f\n",
+ buil_tower_bt);
+ return RET_FAIL;
+ }
+ break;
+ default:
+ CANT_REACH();
+ return RET_FAIL;
+ }
+
+ if (!snxtsct(&nstr, player->argp[2]))
+ return RET_SYN;
+ gotsect = 0;
+ while (nxtsct(&nstr, §)) {
+ gotsect++;
+ if (!player->owner)
+ continue;
+ switch (what) {
+ case 'b':
+ built = build_bspan(§, sect.sct_item);
+ break;
+ case 't':
+ built = build_btower(§, sect.sct_item);
+ break;
+ }
+ if (built)
+ putsect(§);
+ }
+ if (!gotsect) {
+ pr("Bad sector specification.\n");
+ }
+ return RET_OK;
+}
+
static int
build_bspan(struct sctstr *sp, short *vec)
{