From 352bc320d2e874f50d34e518cd3a751bc89039dc Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 22 May 2011 16:49:17 +0200 Subject: [PATCH] Remove option TRADESHIPS, customize table ship-chr instead Trade ships are now enabled when a ship type with capability trade exists. No such type exists by default; to enable trade ships, deities have to customize table ship-chr. Before, trade ship types were ignored when option TRADESHIPS was disabled. Except for xdump ship-chr, which happily dumped unusable trade ship types. --- include/econfig-spec.h | 2 -- info/History.t | 6 +++--- info/Options.t | 1 - info/Ship-types.t | 2 +- info/Trade-ships.t | 2 +- info/payoff.t | 2 -- info/scuttle.t | 2 +- info/version.t | 2 +- src/lib/commands/buil.c | 5 +---- src/lib/commands/orde.c | 7 +------ src/lib/commands/payo.c | 4 ---- src/lib/commands/scra.c | 3 +-- src/lib/commands/scut.c | 2 +- src/lib/commands/vers.c | 17 +++++++++++++++-- src/lib/global/constants.c | 3 +-- src/lib/global/options.c | 1 - src/lib/global/ship.config | 7 ++++--- src/lib/subs/show.c | 2 -- src/lib/update/nav_ship.c | 3 +-- 19 files changed, 32 insertions(+), 41 deletions(-) diff --git a/include/econfig-spec.h b/include/econfig-spec.h index e6124145c..0b0c8b157 100644 --- a/include/econfig-spec.h +++ b/include/econfig-spec.h @@ -190,8 +190,6 @@ EMPCF_OPT("SUPER_BARS", opt_SUPER_BARS, "Make bars immune to damage") EMPCF_OPT("TECH_POP", opt_TECH_POP, "Technology costs more as population rises") -EMPCF_OPT("TRADESHIPS", opt_TRADESHIPS, - "Enable Tradeships") EMPCF_OPT("TREATIES", opt_TREATIES, "Allow treaties") diff --git a/info/History.t b/info/History.t index e6499bdea..fcf387e1e 100644 --- a/info/History.t +++ b/info/History.t @@ -238,9 +238,9 @@ RAILWAYS and rollover_avail. Options SHOWPLANE, SHIPNAMES, NEWPOWER, NEW_STARVE, NEW_WORK, ORBIT and PLANENAMES are no longer configurable. Options NUKEFAILDETONATE, SLOW_WAR, SNEAK_ATTACK, FUEL, GRAB_THINGS and SHIP_DECAY are gone. Options PINPOINTMISSILE, DEMANDUPDATE, -UPDATESCHED, DRNUKE, NONUKES, NEUTRON, BIG_CITY, DEFENSE_INFRA, -NO_LCMS, NO_HCMS and NO_OIL got replaced by more flexible -configuration. +UPDATESCHED, DRNUKE, TRADESHIPS, NONUKES, NEUTRON, BIG_CITY, +DEFENSE_INFRA, NO_LCMS, NO_HCMS and NO_OIL +got replaced by more flexible configuration. The xdump command lets client writers access more game more easily. diff --git a/info/Options.t b/info/Options.t index aff702585..b3a8eceaa 100644 --- a/info/Options.t +++ b/info/Options.t @@ -12,7 +12,6 @@ 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 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 RES_POP: Research affects max sector population. NOFOOD: No food is required. BLITZ: Players get infinite BTU's. diff --git a/info/Ship-types.t b/info/Ship-types.t index 53bd43c73..8cfa85b5d 100644 --- a/info/Ship-types.t +++ b/info/Ship-types.t @@ -256,7 +256,7 @@ The vessel can be used as a semi-landing craft. (see info assault) .L sub-torp The vessel can torpedo submarines .L trade -The vessel is a trade ship. (only if TRADESHIPS are enabled) +The vessel is a trade ship. .L supply The vessel can supply other units. Unless the vessel is a submarine, it can load non-light land units. diff --git a/info/Trade-ships.t b/info/Trade-ships.t index 3a3c69c20..1548dd672 100644 --- a/info/Trade-ships.t +++ b/info/Trade-ships.t @@ -2,7 +2,7 @@ .NA Trade-ships "How to use trade ships" .LV Basic Trade ships are special ships, with a different function than most Empire -ships. They are in the game only if the TRADESHIPS option is enabled. +ships. They are in the game only if the deity enabled them. .s1 Trade ships simulate internal or external trade. In the real world, countries make goods that they can make cheaply, ship them somewhere they're expensive, diff --git a/info/payoff.t b/info/payoff.t index e329f4d88..34ed6e3c2 100644 --- a/info/payoff.t +++ b/info/payoff.t @@ -35,6 +35,4 @@ shp# ship type orig x,y x,y dist $$ 1 ship .FI .s1 -Note that this command is only enabled if the TRADESHIPS option is in use. -.s1 .SA "Trade-ships, sonar, torpedo, upgrade, Ships" diff --git a/info/scuttle.t b/info/scuttle.t index 7c1d7a638..d7cde2f8c 100644 --- a/info/scuttle.t +++ b/info/scuttle.t @@ -13,7 +13,7 @@ be transferred to land (if a unit, or if the ship is in a harbor), or will die .s1 Units on ships may not be scuttled. .s1 -Scuttling trade-ships (if the TRADESHIPS option is enabled) has other effects. +Scuttling trade-ships has other effects. See info Trade-ships. .s1 .SA "scrap, Trade-ships, build, ship, plane, land, Ships, Planes, LandUnits" diff --git a/info/version.t b/info/version.t index 162da8d93..e76bd6c5c 100644 --- a/info/version.t +++ b/info/version.t @@ -81,7 +81,7 @@ Options enabled in this game: Options disabled in this game: AUTO_POWER, BRIDGETOWERS, GO_RENEW, GUINEA_PIGS, HIDDEN, LOANS, LOSE_CONTACT, MARKET, MOB_ACCESS, NO_FORT_FIRE, RES_POP, SUPER_BARS, - TECH_POP, TRADESHIPS + TECH_POP See "info Options" for a detailed list of options and descriptions. diff --git a/src/lib/commands/buil.c b/src/lib/commands/buil.c index ae8bfd8df..4c4c0299c 100644 --- a/src/lib/commands/buil.c +++ b/src/lib/commands/buil.c @@ -129,11 +129,8 @@ buil(void) break; case 's': type = ef_elt_byname(EF_SHIP_CHR, p); - if (type >= 0) { + if (type >= 0) rqtech = mchr[type].m_tech; - if ((mchr[type].m_flags & M_TRADE) && !opt_TRADESHIPS) - type = -1; - } break; case 'l': type = ef_elt_byname(EF_LAND_CHR, p); diff --git a/src/lib/commands/orde.c b/src/lib/commands/orde.c index 8a96c0634..694bbfc57 100644 --- a/src/lib/commands/orde.c +++ b/src/lib/commands/orde.c @@ -131,12 +131,7 @@ orde(void) if (!*p || !strcmp(p, "-")) { pr("A one-way order has been accepted.\n"); } else if (!strncmp(p, "s", 1)) { - if (opt_TRADESHIPS) { - if (!(mchr[(int)ship.shp_type].m_flags & M_TRADE)) { - pr("You can't auto-scuttle that ship!\n"); - return RET_SYN; - } - } else { + if (!(mchr[(int)ship.shp_type].m_flags & M_TRADE)) { pr("You can't auto-scuttle that ship!\n"); return RET_SYN; } diff --git a/src/lib/commands/payo.c b/src/lib/commands/payo.c index e9b07ba60..1661d9338 100644 --- a/src/lib/commands/payo.c +++ b/src/lib/commands/payo.c @@ -47,10 +47,6 @@ payo(void) int dist; float cash = 0.0; - if (!opt_TRADESHIPS) { - pr("Tradeships are not enabled.\n"); - return RET_FAIL; - } if (!snxtitem(&ni, EF_SHIP, player->argp[1], NULL)) return RET_SYN; diff --git a/src/lib/commands/scra.c b/src/lib/commands/scra.c index 9bad64fca..d3e4eac42 100644 --- a/src/lib/commands/scra.c +++ b/src/lib/commands/scra.c @@ -143,8 +143,7 @@ scra(void) prship(&item.ship)); continue; } - if (opt_TRADESHIPS - && (mchr[item.ship.shp_type].m_flags & M_TRADE)) { + if (mchr[item.ship.shp_type].m_flags & M_TRADE) { pr("WARNING: You only collect money from trade ships if you \"scuttle\" them!\n"); sprintf(prompt, "Are you really sure that you want to scrap %s (n)? ", diff --git a/src/lib/commands/scut.c b/src/lib/commands/scut.c index 4e78b6346..46a582c53 100644 --- a/src/lib/commands/scut.c +++ b/src/lib/commands/scut.c @@ -125,7 +125,7 @@ scut(void) if (type == EF_SHIP) { mp = &mchr[(int)item.ship.shp_type]; - if (opt_TRADESHIPS && (mp->m_flags & M_TRADE)) { + if (mp->m_flags & M_TRADE) { if (!scuttle_tradeship(&item.ship, 1)) continue; } diff --git a/src/lib/commands/vers.c b/src/lib/commands/vers.c index cde2ce125..31116dbc9 100644 --- a/src/lib/commands/vers.c +++ b/src/lib/commands/vers.c @@ -33,7 +33,7 @@ * Ken Stevens * Steve McClure * Ron Koenderink, 2005-2006 - * Markus Armbruster, 2005-2010 + * Markus Armbruster, 2005-2011 */ #include @@ -44,6 +44,7 @@ #include "ship.h" #include "version.h" +static int have_trade_ships(void); static void show_custom(void); static void show_opts(int val); static char *prwrap(char *, char *, int *); @@ -156,7 +157,7 @@ vers(void) -(etu_per_update / sect_mob_neg_factor)); pr("\n"); pr("Ships on autonavigation may use %i cargo holds per ship.\n", TMAX); - if (opt_TRADESHIPS) { + if (have_trade_ships()) { pr("Trade-ships that go at least %d sectors get a return of %.1f%% per sector.\n", trade_1_dist, trade_1 * 100.0); pr("Trade-ships that go at least %d sectors get a return of %.1f%% per sector.\n", @@ -231,6 +232,18 @@ vers(void) return RET_OK; } +static int +have_trade_ships(void) +{ + int i; + + for (i = ef_nelem(EF_SHIP_CHR) - 1; i >= 0; i--) { + if (mchr[i].m_flags & M_TRADE) + return 1; + } + return 0; +} + static void show_custom(void) { diff --git a/src/lib/global/constants.c b/src/lib/global/constants.c index 64fcbabbc..fafb40559 100644 --- a/src/lib/global/constants.c +++ b/src/lib/global/constants.c @@ -195,7 +195,7 @@ float drnuke_const = 0.0; /* research must be at least drnuke_const*tech */ * drnuke_const is .25, you need a 75 res to * build a nuke that takes 300 tech */ -/* opt_TRADESHIPS */ +/* trade ships */ int trade_1_dist = 8; /* less than this gets no money */ int trade_2_dist = 14; /* less than this gets trade_1 money */ int trade_3_dist = 25; /* less than this gets trade_2 money */ @@ -204,7 +204,6 @@ float trade_2 = 0.035; /* return on trade_2 distance */ float trade_3 = 0.050; /* return on trade_3 distance */ float trade_ally_bonus = 0.20; /* 20% bonus for trading with allies */ float trade_ally_cut = 0.10; /* 10% bonus for ally you trade with */ -/* end opt_TRADESHIPS */ int torpedo_damage = 40; /* damage is X + 1dX + 1dX, so 40+1d40+1d40 */ diff --git a/src/lib/global/options.c b/src/lib/global/options.c index 0945cbf18..a9487ce91 100644 --- a/src/lib/global/options.c +++ b/src/lib/global/options.c @@ -60,5 +60,4 @@ int opt_RES_POP = 0; int opt_SAIL = 1; int opt_SUPER_BARS = 0; int opt_TECH_POP = 0; -int opt_TRADESHIPS = 0; int opt_TREATIES = 1; diff --git a/src/lib/global/ship.config b/src/lib/global/ship.config index 997af0740..b4bd2a0f5 100644 --- a/src/lib/global/ship.config +++ b/src/lib/global/ship.config @@ -54,7 +54,8 @@ type name l_b h_b tech cost ... 2 "cs cargo ship" 60 40 20 500 3 "os ore ship" 60 40 20 500 4 "ss slave ship" 60 40 0 300 - 5 "ts trade ship" 200 100 30 1750 +# Uncomment to enable trade ships +# 5 "ts trade ship" 200 100 30 1750 6 "frg frigate" 30 30 0 600 7 "oe oil exploration boat" 25 15 40 800 8 "od oil derrick" 60 60 50 1500 @@ -95,7 +96,7 @@ type name arm spe vis vrn frn gli nla npl nch nxl ... 2 "cs cargo ship" 20 25 35 3 0 0 2 0 0 1 3 "os ore ship" 20 25 35 3 0 0 0 0 0 1 4 "ss slave ship" 20 10 35 3 0 0 0 0 0 1 - 5 "ts trade ship" 20 25 35 3 0 0 0 0 0 1 +# 5 "ts trade ship" 20 25 35 3 0 0 0 0 0 1 6 "frg frigate" 50 25 25 3 1 1 2 0 0 1 7 "oe oil exploration boat" 10 25 15 2 0 0 0 0 0 0 8 "od oil derrick" 30 15 65 3 0 0 0 0 0 2 @@ -136,7 +137,7 @@ type name civ mil she gun pet iro dus bar foo oil lcm hcm 2 "cs cargo ship" 600 50 300 50 0 0 0 0 900 0 1400 900 250 0 (supply) 3 "os ore ship" 30 5 0 0 0 990 990 0 200 0 0 0 45 990 () 4 "ss slave ship" 20 80 0 0 0 0 0 0 200 0 0 0 1200 0 () - 5 "ts trade ship" 50 50 0 0 0 0 0 0 100 0 0 0 0 0 (trade) +# 5 "ts trade ship" 50 50 0 0 0 0 0 0 100 0 0 0 0 0 (trade) 6 "frg frigate" 0 60 10 2 0 0 0 0 60 0 0 0 0 0 (semi-land) 7 "oe oil exploration boat" 10 5 0 0 0 0 0 0 100 1 0 0 0 0 (oil canal) 8 "od oil derrick" 990 80 0 0 0 0 0 0 990 990 0 0 990 0 (oil) diff --git a/src/lib/subs/show.c b/src/lib/subs/show.c index 0362f6d16..c8f7f791a 100644 --- a/src/lib/subs/show.c +++ b/src/lib/subs/show.c @@ -83,8 +83,6 @@ make_mchr_index(struct chr_index chridx[], int tlev) continue; if (mchr[i].m_tech > tlev) continue; - if ((mchr[i].m_flags & M_TRADE) && !opt_TRADESHIPS) - continue; chridx[n].type = i; chridx[n].tech = mchr[i].m_tech; n++; diff --git a/src/lib/update/nav_ship.c b/src/lib/update/nav_ship.c index 20b8ba0bf..16592dffc 100644 --- a/src/lib/update/nav_ship.c +++ b/src/lib/update/nav_ship.c @@ -53,8 +53,7 @@ scuttle_it(struct shpstr *sp) sp->shp_x, sp->shp_y, sp->shp_uid); return; } - if (CANT_HAPPEN(!opt_TRADESHIPS - || !(mchr[sp->shp_type].m_flags & M_TRADE))) + if (CANT_HAPPEN(!(mchr[sp->shp_type].m_flags & M_TRADE))) return; if (!scuttle_tradeship(sp, 0)) { wu(0, sp->shp_own, -- 2.43.0