(show_nuke_capab, vers, xdvisible, build.t, Options.t):
Remove opt_DRNUKE and replace with the following check
drnuke_const > MIN_DRNUKE_CONST.
Set MIN_DRNUKE_CONST to 0.001 to prevent issues with tiny values.
Change the default drnuke_const to 0.0 because in the stock game
opt_DRNUKE was disabled.
"Allow the improvement of defensive infrastructure")
EMPCF_OPT("DEMANDUPDATE", opt_DEMANDUPDATE,
"Allow demand updates")
"Allow the improvement of defensive infrastructure")
EMPCF_OPT("DEMANDUPDATE", opt_DEMANDUPDATE,
"Allow demand updates")
-EMPCF_OPT("DRNUKE", opt_DRNUKE,
- "Require research for nuke building")
EMPCF_OPT("EASY_BRIDGES", opt_EASY_BRIDGES,
"Allow bridge building without bridge heads")
EMPCF_OPT("FALLOUT", opt_FALLOUT,
EMPCF_OPT("EASY_BRIDGES", opt_EASY_BRIDGES,
"Allow bridge building without bridge heads")
EMPCF_OPT("FALLOUT", opt_FALLOUT,
EMPCFBOTH("fallout_spread", fallout_spread, double, NSC_DOUBLE, 0,
"Amount of fallout that leaks into surrounding sectors")
EMPCFBOTH("drnuke_const", drnuke_const, float, NSC_FLOAT, 0,
EMPCFBOTH("fallout_spread", fallout_spread, double, NSC_DOUBLE, 0,
"Amount of fallout that leaks into surrounding sectors")
EMPCFBOTH("drnuke_const", drnuke_const, float, NSC_FLOAT, 0,
- "Amount of research to tech needed to build a nuke (if DRNUKE is on)")
+ "Amount of research to tech needed to build a nuke, a common value is 0.33")
EMPCF_COMMENT("\n\n### Market/Trade")
EMPCFBOTH("MARK_DELAY", MARK_DELAY, int, NSC_INT, 0,
EMPCF_COMMENT("\n\n### Market/Trade")
EMPCFBOTH("MARK_DELAY", MARK_DELAY, int, NSC_INT, 0,
#define NUKE_H
#define N_MAXNUKE 20
#define NUKE_H
#define N_MAXNUKE 20
+#define MIN_DRNUKE_CONST 0.001
struct nukstr {
/* initial part must match struct genitem */
struct nukstr {
/* initial part must match struct genitem */
EASY_BRIDGES: bridges can be built from any sector
SUPER_BARS: gold bars aren't destroyed by shelling or bombing
ALL_BLEED: you get tech bleed from all countries, not just allies
EASY_BRIDGES: bridges can be built from any sector
SUPER_BARS: gold bars aren't destroyed by shelling or bombing
ALL_BLEED: you get tech bleed from all countries, not just allies
-DRNUKE: research is required to make nukes
SLOW_WAR: War declaring takes time. No land attacks unless at war.
NOMOBCOST: ships pay 0 mob to fire. Subs pay 1/2 a sect's movement cost
TRADESHIPS: you can build/nav/scuttle trade ships to make money
SLOW_WAR: War declaring takes time. No land attacks unless at war.
NOMOBCOST: ships pay 0 mob to fire. Subs pay 1/2 a sect's movement cost
TRADESHIPS: you can build/nav/scuttle trade ships to make money
them is reported in the news.
.fi
them is reported in the news.
.fi
+.SA "Hidden, Server, version"
To build stuff, you generally need available work, raw materials
(e.g. light and heavy construction materials, oil, radioactive
materials), cash, and technology, depending on the thing being built.
To build stuff, you generally need available work, raw materials
(e.g. light and heavy construction materials, oil, radioactive
materials), cash, and technology, depending on the thing being built.
+For nukes, you may also need research, depending on game
+configuration.
+Try commands \*Qversion\*U and \*Qshow\*U to learn
+how your game is configured.
.s1
A sector's available work is work not used up by the update (building
efficiency, working on things, etc). It is shown in the output of the
.s1
A sector's available work is work not used up by the update (building
efficiency, working on things, etc). It is shown in the output of the
listed by \*Qshow\*U must be available at the time of building. New nukes
appear fully operational.
.s1
listed by \*Qshow\*U must be available at the time of building. New nukes
appear fully operational.
.s1
-Note: If the DRNUKE option is enabled, you will need a certain amount
-of research to make nukes. At the present time, it is 1/3 the amount of
-tech needed to make the nuke. See the \*Qshow\*U command, which lists
-this if applicable.
-.s1
BUILDING BRIDGES
.s1
A bridge is built in a sea sector by an adjacent sector.
BUILDING BRIDGES
.s1
A bridge is built in a sea sector by an adjacent sector.
np = &nchr[type];
rqtech = np->n_tech;
if (rqtech > tlev
np = &nchr[type];
rqtech = np->n_tech;
if (rqtech > tlev
- || (opt_DRNUKE && np->n_tech * drnuke_const > rlev))
+ || (drnuke_const > MIN_DRNUKE_CONST &&
+ np->n_tech * drnuke_const > rlev))
type = -1;
}
if (type < 0) {
int tt = tlev;
type = -1;
}
if (type < 0) {
int tt = tlev;
+ if (drnuke_const > MIN_DRNUKE_CONST)
tt = (tlev < (rlev / drnuke_const) ? (int)tlev :
(int)(rlev / drnuke_const));
pr("You can't build that!\n");
tt = (tlev < (rlev / drnuke_const) ? (int)tlev :
(int)(rlev / drnuke_const));
pr("You can't build that!\n");
show_news(99999);
return RET_OK;
}
show_news(99999);
return RET_OK;
}
+ if (drnuke_const > MIN_DRNUKE_CONST)
tlev = ((rlev / drnuke_const) > tlev ? tlev :
(rlev / drnuke_const));
bfunc = show_nuke_build;
tlev = ((rlev / drnuke_const) > tlev ? tlev :
(rlev / drnuke_const));
bfunc = show_nuke_build;
if (!ef_nelem(EF_NUKE_CHR))
pr("Nukes are disabled.\n");
if (!ef_nelem(EF_NUKE_CHR))
pr("Nukes are disabled.\n");
- else if (opt_DRNUKE) { /* NUKES && DRNUKE enabled */
+ else if (drnuke_const > MIN_DRNUKE_CONST) {
pr("In order to build a nuke, you need %1.2f times the tech level in research\n", drnuke_const);
pr("\tExample: In order to build a 300 tech nuke, you need %d research\n\n", (int)(300.0 * drnuke_const));
}
pr("In order to build a nuke, you need %1.2f times the tech level in research\n", drnuke_const);
pr("\tExample: In order to build a 300 tech nuke, you need %d research\n\n", (int)(300.0 * drnuke_const));
}
return player->god || tlev <= (int)(1.25 * natp->nat_level[NAT_TLEV]);
case EF_NUKE_CHR:
tlev = ((struct nchrstr *)p)->n_tech;
return player->god || tlev <= (int)(1.25 * natp->nat_level[NAT_TLEV]);
case EF_NUKE_CHR:
tlev = ((struct nchrstr *)p)->n_tech;
+ if (drnuke_const > MIN_DRNUKE_CONST) {
natp = getnatp(player->cnum);
if (tlev > (int)((int)(1.25 * natp->nat_level[NAT_RLEV])
/ drnuke_const))
natp = getnatp(player->cnum);
if (tlev > (int)((int)(1.25 * natp->nat_level[NAT_RLEV])
/ drnuke_const))
/* opt_SLOW_WAR */
int War_Cost = 1000; /* Cost to declare war */
/* opt_SLOW_WAR */
int War_Cost = 1000; /* Cost to declare war */
-/* opt_DRNUKE */
-float drnuke_const = .33; /* research must be at least drnuke_const*tech */
+float drnuke_const = 0.0; /* research must be at least drnuke_const*tech */
/* in order to build a nuke. For example, if
* drnuke_const is .25, you need a 75 res to
* build a nuke that takes 300 tech
/* in order to build a nuke. For example, if
* drnuke_const is .25, you need a 75 res to
* build a nuke that takes 300 tech
int opt_BRIDGETOWERS = 1;
int opt_DEFENSE_INFRA = 0;
int opt_DEMANDUPDATE = 1;
int opt_BRIDGETOWERS = 1;
int opt_DEFENSE_INFRA = 0;
int opt_DEMANDUPDATE = 1;
int opt_EASY_BRIDGES = 1;
int opt_FALLOUT = 1;
int opt_FUEL = 0;
int opt_EASY_BRIDGES = 1;
int opt_FALLOUT = 1;
int opt_FUEL = 0;
avail = NUK_BLD_WORK(np->n_lcm, np->n_hcm, np->n_oil, np->n_rad);
if (np->n_tech > tlev)
continue;
avail = NUK_BLD_WORK(np->n_lcm, np->n_hcm, np->n_oil, np->n_rad);
if (np->n_tech > tlev)
continue;
- pr("%-13.13s %3d %3d %4d %4d %5d %4d %3d $%6d\n",
+ pr("%-13.13s %3d %3d %4d %4d %5d %4d %3.0f $%6d\n",
np->n_name, np->n_lcm, np->n_hcm, np->n_oil,
np->n_rad, avail, np->n_tech,
np->n_name, np->n_lcm, np->n_hcm, np->n_oil,
np->n_rad, avail, np->n_tech,
- opt_DRNUKE ? (int)(np->n_tech * drnuke_const) + 1 : 0,
+ drnuke_const > MIN_DRNUKE_CONST ?
+ (np->n_tech * drnuke_const) + 1.0 : 0.0,
for (np = nchr; np->n_name; np++) {
if (np->n_tech > tlev)
continue;
for (np = nchr; np->n_name; np++) {
if (np->n_tech > tlev)
continue;
- pr("%-13.13s %4d %3d %3d %4d %3d $%7d ",
+ pr("%-13.13s %4d %3d %3d %4d %3.0f $%7d ",
np->n_name, np->n_blast, np->n_dam,
np->n_weight, np->n_tech,
np->n_name, np->n_blast, np->n_dam,
np->n_weight, np->n_tech,
- opt_DRNUKE ? (int)(np->n_tech * drnuke_const) + 1 : 0,
+ drnuke_const > MIN_DRNUKE_CONST ?
+ (np->n_tech * drnuke_const) + 1.0 : 0.0,
np->n_cost);
for (i = j = 0; i < 32; i++) {
if (!(np->n_flags & bit(i)))
np->n_cost);
for (i = j = 0; i < 32; i++) {
if (!(np->n_flags & bit(i)))