Remove option LANDSPIES, customize table land-chr instead

Spy units are now enabled when a land unit type with capability spy
exists.  To disable them, deities have to customize table land-chr.

Before, spy units types were ignored when option LANDSPIES was
disabled.  Except for xdump land-chr, which happily dumped unusable
spy unit types.
This commit is contained in:
Markus Armbruster 2011-05-22 17:04:46 +02:00
parent 352bc320d2
commit 93edcf0ac4
9 changed files with 18 additions and 31 deletions

View file

@ -162,8 +162,6 @@ EMPCF_OPT("HIDDEN", opt_HIDDEN,
"Hide information between players") "Hide information between players")
EMPCF_OPT("INTERDICT_ATT", opt_INTERDICT_ATT, EMPCF_OPT("INTERDICT_ATT", opt_INTERDICT_ATT,
"Interdict post-attack move in") "Interdict post-attack move in")
EMPCF_OPT("LANDSPIES", opt_LANDSPIES,
"Enable the land unit type spies")
EMPCF_OPT("LOANS", opt_LOANS, EMPCF_OPT("LOANS", opt_LOANS,
"Allow bailing out of other countries via S&L scandals") "Allow bailing out of other countries via S&L scandals")
EMPCF_OPT("LOSE_CONTACT", opt_LOSE_CONTACT, EMPCF_OPT("LOSE_CONTACT", opt_LOSE_CONTACT,

View file

@ -239,7 +239,7 @@ NEW_STARVE, NEW_WORK, ORBIT and PLANENAMES are no longer configurable.
Options NUKEFAILDETONATE, SLOW_WAR, SNEAK_ATTACK, FUEL, GRAB_THINGS Options NUKEFAILDETONATE, SLOW_WAR, SNEAK_ATTACK, FUEL, GRAB_THINGS
and SHIP_DECAY are gone. Options PINPOINTMISSILE, DEMANDUPDATE, and SHIP_DECAY are gone. Options PINPOINTMISSILE, DEMANDUPDATE,
UPDATESCHED, DRNUKE, TRADESHIPS, NONUKES, NEUTRON, BIG_CITY, UPDATESCHED, DRNUKE, TRADESHIPS, NONUKES, NEUTRON, BIG_CITY,
DEFENSE_INFRA, NO_LCMS, NO_HCMS and NO_OIL DEFENSE_INFRA, LANDSPIES, NO_LCMS, NO_HCMS and NO_OIL
got replaced by more flexible configuration. got replaced by more flexible configuration.
The xdump command lets client writers access more game more easily. The xdump command lets client writers access more game more easily.

View file

@ -36,7 +36,6 @@ GO_RENEW: Gold and Oil are renewable resources.
MOB_ACCESS: Allows real-time updating of mobility. MOB_ACCESS: Allows real-time updating of mobility.
MARKET: Time-delay market and trade. MARKET: Time-delay market and trade.
LOANS: Allows S&L type interaction between countries. LOANS: Allows S&L type interaction between countries.
LANDSPIES: Creates land unit style spies.
NO_FORT_FIRE: Forts cannot fire. NO_FORT_FIRE: Forts cannot fire.
RAILWAYS Highways double as rail RAILWAYS Highways double as rail
TECH_POP: Technology costs more to make as your civilian population TECH_POP: Technology costs more to make as your civilian population

View file

@ -207,7 +207,7 @@ the number of guns the ship can fire at once
.L lnd .L lnd
The number of land units the ship can carry. No ship can carry 'heavy' The number of land units the ship can carry. No ship can carry 'heavy'
units. Only surface supply ships can carry units that are not 'light'. units. Only surface supply ships can carry units that are not 'light'.
If option LANDSPIES is enabled, submarines that can't normally carry Submarines that can't normally carry
land units can carry up to two spies. land units can carry up to two spies.
.L pln .L pln
The number of 'light' planes the ship can carry. The number of 'light' planes the ship can carry.

View file

@ -76,7 +76,7 @@ You are disconnected after 15 minutes of idle time.
Options enabled in this game: Options enabled in this game:
ALL_BLEED, BLITZ, EASY_BRIDGES, FALLOUT, GODNEWS, INTERDICT_ATT, ALL_BLEED, BLITZ, EASY_BRIDGES, FALLOUT, GODNEWS, INTERDICT_ATT,
LANDSPIES, NOFOOD, NOMOBCOST, NO_PLAGUE, RAILWAYS, SAIL, TREATIES NOFOOD, NOMOBCOST, NO_PLAGUE, RAILWAYS, SAIL, TREATIES
Options disabled in this game: Options disabled in this game:
AUTO_POWER, BRIDGETOWERS, GO_RENEW, GUINEA_PIGS, HIDDEN, LOANS, AUTO_POWER, BRIDGETOWERS, GO_RENEW, GUINEA_PIGS, HIDDEN, LOANS,

View file

@ -134,11 +134,8 @@ buil(void)
break; break;
case 'l': case 'l':
type = ef_elt_byname(EF_LAND_CHR, p); type = ef_elt_byname(EF_LAND_CHR, p);
if (type >= 0) { if (type >= 0)
rqtech = lchr[type].l_tech; rqtech = lchr[type].l_tech;
if ((lchr[type].l_flags & L_SPY) && !opt_LANDSPIES)
type = -1;
}
break; break;
case 'n': case 'n':
type = ef_elt_byname(EF_NUKE_CHR, p); type = ef_elt_byname(EF_NUKE_CHR, p);

View file

@ -518,16 +518,14 @@ load_land_ship(struct sctstr *sectp, struct shpstr *sp, int noisy,
int load_spy = 0; int load_spy = 0;
if (load_unload == LOAD) { if (load_unload == LOAD) {
if (opt_LANDSPIES) { if ((mchr[(int)sp->shp_type].m_flags & M_SUB) &&
if ((mchr[(int)sp->shp_type].m_flags & M_SUB) && (mchr[(int)sp->shp_type].m_nland == 0)) {
(mchr[(int)sp->shp_type].m_nland == 0)) { if (shp_nland(sp) >= 2) {
if (shp_nland(sp) >= 2) { pr("Non-land unit carrying subs can only carry up to two spy units.\n");
pr("Non-land unit carrying subs can only carry up to two spy units.\n"); return 0;
return 0;
}
/* Eh, let 'em load a spy only */
load_spy = 1;
} }
/* Eh, let 'em load a spy only */
load_spy = 1;
} }
if (!load_spy && shp_nland(sp) >= mchr[sp->shp_type].m_nland) { if (!load_spy && shp_nland(sp) >= mchr[sp->shp_type].m_nland) {
if (noisy) { if (noisy) {
@ -612,16 +610,14 @@ load_land_ship(struct sctstr *sectp, struct shpstr *sp, int noisy,
/* Fit unit on ship */ /* Fit unit on ship */
if (load_unload == LOAD) { if (load_unload == LOAD) {
/* We have to check again, since it may have changed */ /* We have to check again, since it may have changed */
if (opt_LANDSPIES) { if ((mchr[(int)sp->shp_type].m_flags & M_SUB) &&
if ((mchr[(int)sp->shp_type].m_flags & M_SUB) && (mchr[(int)sp->shp_type].m_nland == 0)) {
(mchr[(int)sp->shp_type].m_nland == 0)) { if (shp_nland(sp) >= 2) {
if (shp_nland(sp) >= 2) { pr("Non-land unit carrying subs can only carry up to two spy units.\n");
pr("Non-land unit carrying subs can only carry up to two spy units.\n"); return 0;
return 0;
}
/* Eh, let 'em load a spy only */
load_spy = 1;
} }
/* Eh, let 'em load a spy only */
load_spy = 1;
} }
if (!load_spy && shp_nland(sp) >= mchr[sp->shp_type].m_nland) { if (!load_spy && shp_nland(sp) >= mchr[sp->shp_type].m_nland) {
if (noisy) { if (noisy) {

View file

@ -46,7 +46,6 @@ int opt_GO_RENEW = 0;
int opt_GUINEA_PIGS = 0; int opt_GUINEA_PIGS = 0;
int opt_HIDDEN = 0; int opt_HIDDEN = 0;
int opt_INTERDICT_ATT = 1; int opt_INTERDICT_ATT = 1;
int opt_LANDSPIES = 1;
int opt_LOANS = 0; int opt_LOANS = 0;
int opt_LOSE_CONTACT = 0; int opt_LOSE_CONTACT = 0;
int opt_MARKET = 0; int opt_MARKET = 0;

View file

@ -125,8 +125,6 @@ make_lchr_index(struct chr_index chridx[], int tlev)
continue; continue;
if (lchr[i].l_tech > tlev) if (lchr[i].l_tech > tlev)
continue; continue;
if ((lchr[i].l_flags & L_SPY) && !opt_LANDSPIES)
continue;
chridx[n].type = i; chridx[n].type = i;
chridx[n].tech = lchr[i].l_tech; chridx[n].tech = lchr[i].l_tech;
n++; n++;