(buil, drnuke_const, opt_DRNUKE, show, show_nuke_build)

(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.
This commit is contained in:
Ron Koenderink 2006-02-16 02:14:08 +00:00
parent d5f6d74d05
commit b7d0b66161
11 changed files with 20 additions and 22 deletions

View file

@ -133,8 +133,6 @@ EMPCF_OPT("DEFENSE_INFRA", opt_DEFENSE_INFRA,
"Allow the improvement of defensive infrastructure") "Allow the improvement of defensive infrastructure")
EMPCF_OPT("DEMANDUPDATE", opt_DEMANDUPDATE, EMPCF_OPT("DEMANDUPDATE", opt_DEMANDUPDATE,
"Allow demand updates") "Allow demand updates")
EMPCF_OPT("DRNUKE", opt_DRNUKE,
"Require research for nuke building")
EMPCF_OPT("EASY_BRIDGES", opt_EASY_BRIDGES, EMPCF_OPT("EASY_BRIDGES", opt_EASY_BRIDGES,
"Allow bridge building without bridge heads") "Allow bridge building without bridge heads")
EMPCF_OPT("FALLOUT", opt_FALLOUT, EMPCF_OPT("FALLOUT", opt_FALLOUT,
@ -344,7 +342,7 @@ EMPCFBOTH("decay_per_etu", decay_per_etu, double, NSC_DOUBLE, 0,
EMPCFBOTH("fallout_spread", fallout_spread, double, NSC_DOUBLE, 0, EMPCFBOTH("fallout_spread", fallout_spread, double, NSC_DOUBLE, 0,
"Amount of fallout that leaks into surrounding sectors") "Amount of fallout that leaks into surrounding sectors")
EMPCFBOTH("drnuke_const", drnuke_const, float, NSC_FLOAT, 0, 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") EMPCF_COMMENT("\n\n### Market/Trade")
EMPCFBOTH("MARK_DELAY", MARK_DELAY, int, NSC_INT, 0, EMPCFBOTH("MARK_DELAY", MARK_DELAY, int, NSC_INT, 0,

View file

@ -35,6 +35,7 @@
#define NUKE_H #define NUKE_H
#define N_MAXNUKE 20 #define N_MAXNUKE 20
#define MIN_DRNUKE_CONST 0.001
struct nukstr { struct nukstr {
/* initial part must match struct genitem */ /* initial part must match struct genitem */

View file

@ -14,7 +14,6 @@ The following options were introduced in the Chainsaw server:
EASY_BRIDGES: bridges can be built from any sector EASY_BRIDGES: bridges can be built from any sector
SUPER_BARS: gold bars aren't destroyed by shelling or bombing SUPER_BARS: gold bars aren't destroyed by shelling or bombing
ALL_BLEED: you get tech bleed from all countries, not just allies 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. 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 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 TRADESHIPS: you can build/nav/scuttle trade ships to make money
@ -53,4 +52,4 @@ TREATIES: Sign treaties with your friends and enemies, and breaking of
them is reported in the news. them is reported in the news.
.fi .fi
.SA "Hidden, Server" .SA "Hidden, Server, version"

View file

@ -11,6 +11,10 @@ also used to build bridges.
To build stuff, you generally need available work, raw materials To build stuff, you generally need available work, raw materials
(e.g. light and heavy construction materials, oil, radioactive (e.g. light and heavy construction materials, oil, radioactive
materials), cash, and technology, depending on the thing being built. 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 .s1
A sector's available work is work not used up by the update (building 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 efficiency, working on things, etc). It is shown in the output of the
@ -118,11 +122,6 @@ Nuclear devices are built in nuclear plants. All of the materials
listed by \*Qshow\*U must be available at the time of building. New nukes listed by \*Qshow\*U must be available at the time of building. New nukes
appear fully operational. appear fully operational.
.s1 .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 BUILDING BRIDGES
.s1 .s1
A bridge is built in a sea sector by an adjacent sector. A bridge is built in a sea sector by an adjacent sector.

View file

@ -195,12 +195,13 @@ buil(void)
np = &nchr[type]; np = &nchr[type];
rqtech = np->n_tech; rqtech = np->n_tech;
if (rqtech > tlev if (rqtech > tlev
|| (opt_DRNUKE && np->n_tech * drnuke_const > rlev)) || (drnuke_const > MIN_DRNUKE_CONST &&
np->n_tech * drnuke_const > rlev))
type = -1; type = -1;
} }
if (type < 0) { if (type < 0) {
int tt = tlev; int tt = tlev;
if (opt_DRNUKE) if (drnuke_const > MIN_DRNUKE_CONST)
tt = (tlev < (rlev / drnuke_const) ? (int)tlev : tt = (tlev < (rlev / drnuke_const) ? (int)tlev :
(int)(rlev / drnuke_const)); (int)(rlev / drnuke_const));
pr("You can't build that!\n"); pr("You can't build that!\n");

View file

@ -90,7 +90,7 @@ show(void)
show_news(99999); show_news(99999);
return RET_OK; return RET_OK;
} }
if (opt_DRNUKE) if (drnuke_const > MIN_DRNUKE_CONST)
tlev = ((rlev / drnuke_const) > tlev ? tlev : tlev = ((rlev / drnuke_const) > tlev ? tlev :
(rlev / drnuke_const)); (rlev / drnuke_const));
bfunc = show_nuke_build; bfunc = show_nuke_build;

View file

@ -173,7 +173,7 @@ vers(void)
if (!ef_nelem(EF_NUKE_CHR)) if (!ef_nelem(EF_NUKE_CHR))
pr("Nukes are disabled.\n"); 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("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("\tExample: In order to build a 300 tech nuke, you need %d research\n\n", (int)(300.0 * drnuke_const));
} }

View file

@ -242,7 +242,7 @@ xdvisible(int type, void *p)
return player->god || tlev <= (int)(1.25 * natp->nat_level[NAT_TLEV]); return player->god || tlev <= (int)(1.25 * natp->nat_level[NAT_TLEV]);
case EF_NUKE_CHR: case EF_NUKE_CHR:
tlev = ((struct nchrstr *)p)->n_tech; tlev = ((struct nchrstr *)p)->n_tech;
if (opt_DRNUKE) { if (drnuke_const > MIN_DRNUKE_CONST) {
natp = getnatp(player->cnum); natp = getnatp(player->cnum);
if (tlev > (int)((int)(1.25 * natp->nat_level[NAT_RLEV]) if (tlev > (int)((int)(1.25 * natp->nat_level[NAT_RLEV])
/ drnuke_const)) / drnuke_const))

View file

@ -199,8 +199,7 @@ double buil_tower_bc = 7500.0; /* cash required to build a bridge tower */
/* opt_SLOW_WAR */ /* opt_SLOW_WAR */
int War_Cost = 1000; /* Cost to declare war */ int War_Cost = 1000; /* Cost to declare war */
/* opt_DRNUKE */ float drnuke_const = 0.0; /* research must be at least drnuke_const*tech */
float drnuke_const = .33; /* research must be at least drnuke_const*tech */
/* in order to build a nuke. For example, if /* in order to build a nuke. For example, if
* drnuke_const is .25, you need a 75 res to * drnuke_const is .25, you need a 75 res to
* build a nuke that takes 300 tech * build a nuke that takes 300 tech

View file

@ -42,7 +42,6 @@ int opt_BLITZ = 1;
int opt_BRIDGETOWERS = 1; int opt_BRIDGETOWERS = 1;
int opt_DEFENSE_INFRA = 0; int opt_DEFENSE_INFRA = 0;
int opt_DEMANDUPDATE = 1; int opt_DEMANDUPDATE = 1;
int opt_DRNUKE = 0;
int opt_EASY_BRIDGES = 1; int opt_EASY_BRIDGES = 1;
int opt_FALLOUT = 1; int opt_FALLOUT = 1;
int opt_FUEL = 0; int opt_FUEL = 0;

View file

@ -173,10 +173,11 @@ show_nuke_build(int tlev)
avail = NUK_BLD_WORK(np->n_lcm, np->n_hcm, np->n_oil, np->n_rad); avail = NUK_BLD_WORK(np->n_lcm, np->n_hcm, np->n_oil, np->n_rad);
if (np->n_tech > tlev) if (np->n_tech > tlev)
continue; 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_name, np->n_lcm, np->n_hcm, np->n_oil,
np->n_rad, avail, np->n_tech, 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,
np->n_cost); np->n_cost);
} }
} }
@ -193,10 +194,11 @@ show_nuke_capab(int tlev)
for (np = nchr; np->n_name; np++) { for (np = nchr; np->n_name; np++) {
if (np->n_tech > tlev) if (np->n_tech > tlev)
continue; 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_name, np->n_blast, np->n_dam,
np->n_weight, np->n_tech, 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); np->n_cost);
for (i = j = 0; i < 32; i++) { for (i = j = 0; i < 32; i++) {
if (!(np->n_flags & bit(i))) if (!(np->n_flags & bit(i)))