Commit graph

3033 commits

Author SHA1 Message Date
3b4de2feb1 Remove option FUEL
The abstract idea of tying ships and land units to a logistical tether
is sound, the concrete implementation as option FUEL is flawed.  It
adds too much busy-work to the game to be enjoyable.  It hasn't been
enabled in a public game for years.  The code implementing it is ugly,
repetitive, and a burden to maintain.

Remove selector fuel from ship_ca[] and land_ca[], and selectors
fuelc, fuelu from mchr_ca[] and lchr_ca[].  Remove fields fuelc, fuelu
from ship.config and land.config.

Remove command fuel from player_coms[].

Deprecate edit key 'B' in doship(), dounit(), and don't show it in
pr_ship(), pr_land().

Drop opt_FUEL code from build_ship(), shi(), sdump(), ship_damage(),
show_ship_stats(), do_mob_ship(), nav_ship(), build_land(), land(),
ldump(), land_damage(), show_land_stats(), do_mob_land(),
resupply_all(), resupply_commod(), get_minimum(), has_supply(),
unit_list(), vers().

Remove opt_FUEL, fuel_mult, struct shpstr member shp_fuel, struct
mchrstr members m_fuelc and m_fuelu, M_OILER, struct lndstr member
lnd_fuel, struct lchrstr members l_fuelc and l_fuelu, fuel(), and
auto_fuel_ship().
2008-05-12 09:25:20 +02:00
3cc80e83c3 Remove unused num_shipsatxy() 2008-05-11 13:45:30 +02:00
286388dcdc Fix pin bomb not to report subs when there are none
pin_bomb() computed the number of foreign subs as number of ships less
number of foreign surface ships.  This counted own surface ships as
subs.

Change it to count foreign subs directly.  Closes #906040.

However, shipsatxy(), the function for counting foreign ships, also
lists them.  Add a parameter to suppress that, and change its callers.
2008-05-11 13:44:29 +02:00
221e88f106 Distinguish between sacking and obliterating a capital
Make caploss() transfer money, loans and market lots to the player
only if he actually took the capital, not if he obliterated it to
deity.

To make this work, caploss() needs to be called after the sector is
updated for damage and change of ownership.  Change callers
accordingly.

Closes #914049.
2008-05-11 10:48:30 +02:00
f6308422c3 Fix transfer of loans and market lots on sack of capital
Fix caploss() to transfer only signed loans.  Before, it transferred
any loan with a non-zero duration, which included loan offers, and
could claim to tranfer nonexistent loans.

Fix caploss() not to claim transfer of nonexistant market lots when
country 0 sacks a capital.
2008-05-11 10:30:32 +02:00
a16af46af9 Fix test for capital in caploss() to check country status
Test for STAT_ACTIVE instead of non-zero country number.  Inactive
countries have no capital they could lose!
2008-05-11 10:20:40 +02:00
ba5c360ca7 Remove useless call of caploss() from detonate()
The call has no effect, because by that time caploss() already ran
from sct_prewrite().
2008-05-11 10:05:25 +02:00
bb7c8665e4 Start the Empire clock on first break or update
Before, the Empire clock started at the epoch, which effectively made
it not tick before the first update.
2008-05-10 21:52:19 +02:00
dc8a7fe3ef Remove useless sanctuary break logic from designate
Don't call bsanct() when desi() is redesignating a sanctuary.  It's
pointless, because only deities can redesignate sanctuaries, and
bsanct() does nothing for them.
2008-05-10 19:09:20 +02:00
0a61f8eb78 Fix some argument prompts to end in one space
Corrects first argument of collect and show, and second argument of
assault, follow, mine, lmine and mobquota.
2008-05-10 18:52:29 +02:00
a1f4dc9592 Fix edit l, s, u, p not to wipe out concurrent updates
Make edit() bail out if the edited object changed while edit() slept
for input.
2008-05-10 08:40:48 +02:00
3dbb4dbb93 Fix xdump nat for relations
Commit ee863c5d (v4.3.12) got opt_HIDDEN backwards in nstr_exec_val().
2008-05-10 08:36:45 +02:00
27c3466aa5 Fix origin command not to prompt twice for its argument
Broken in commit b69173ee, v4.3.0.
2008-05-07 22:05:22 +02:00
db031971aa Bump version to 4.3.15 2008-05-07 21:58:15 +02:00
13d0fc7077 Avoid compiler warning 2008-05-05 21:54:02 +02:00
abd64835c7 Update change log again for 4.3.14 2008-05-05 06:57:42 +02:00
fe5b26658d Fix fire not to disclose retreat and wipe out target shell use
multifire() clobbered any changes to the target ship or sector made by
defend().  This let the target fire back for free.

multifire() retreated the target ship before reporting its location to
the player.  This disclosed its new location.

Fix by damaging and retreating the target after calling defend().
2008-05-05 06:53:33 +02:00
aae77430bf Change fire to always fire guns when the target is beyond range
multifire() drops depth charges if the target is a submarine, else it
fires guns.  It fails if the target is out of range.  But players
could still find out whether the target is a sub then, because depth
charge shell use differs from gun fire shell use.  This loophole
existed before 4.0.6, and was reopened by commit a3ad623b (v4.3.12).

Change multifire() to always use guns if the target is out of range.

While there, treat failure from shp_dchrg() and shp_fire() the same,
so that the player can't distinguish the two cases.  Failure there
should not happen.
2008-05-05 06:52:15 +02:00
cd6d12c4fb Make depth charges work with just one shell
Commit a3ad623b (v4.3.12) made depth charging fail when there's just
one shell.  This let players find all submarine uids.  It basically
reopened the loophole closed in commit aa26c53e (v4.2.20).

Fix by making shp_dchrg() with just one shell succeed and return
damage like fire from one gun.
2008-05-04 19:27:31 +02:00
66165f34cb Fix fire command to detect when the firing object changes
multifire() failed to take into account that the firing firing sector,
ship or land unit can change while it is getting the target argument.
It thus clobbered any updates made to the firing object while it was
sleeping for the target argument.  Abusable.  Broken when Chainsaw
introduced MULTIFIRE.
2008-05-04 16:44:26 +02:00
bf2fd6cb82 Fix parsing of anchor-relative time in update schedule
Commit 16b811d4 (v4.3.13) broke parse_time().
2008-05-04 09:52:46 +02:00
e8f82d34a7 Update change log again for 4.3.14. 2008-04-29 22:08:03 +02:00
a433320125 Journal input of special cookies "ctld" and "aborted"
The latter is necessary to interpret the journal correctly.  The
former isn't, as it should always lead to a logout straight away, but
treating it just the same is simple and doesn't hurt.
2008-04-29 21:42:17 +02:00
f3202225f2 Rewrite recvclient() for clarity
Behavior differs for the following scenario: if, while the thread
sleeps in io_input() called from recvclient(), at least one line of
input arrives and the thread gets awakened by the update aborting
commands, then the old code throws away the first line of input, but
the new code doesn't.
2008-04-29 21:35:02 +02:00
8209b88a54 Fix launch not to report the same ship sunk twice
This happened when a marine missile with a conventional warhead sunk
its target.
2008-04-29 21:10:33 +02:00
c539820350 Oops on nuclear-tipped anti-sat missiles
Anti-sat code is not prepared to deal with nuclear damage.  The arm
command refuses to arm anti-sats, but better check.
2008-04-29 21:01:54 +02:00
7bc63871c6 Fix bugs in tracking of planes flying a sortie
Commit 7ca4f412 fixed tracking of planes flying a sortie by marking
them with flag PLN_LAUNCHED.  It failed to write SAMs and planes
flying missions back to the plane file, in sam_intercept() and
mission_pln_arm().  The only known problem with that is fairly
harmless: when the mission damages planes on the ground, the planes
flying it get damaged as if they were still sitting in their bases,
but the damage gets wiped out when they land.

The same issue applies to missiles.  So they need to be tracked as
well.  Do that in msl_hit().

While there, remove a few redundant PLN_LAUNCHED sanity checks.
2008-04-29 20:53:35 +02:00
4e9e58bf6a Write planes fixed on game start to disk properly
When fixing planes stuck in the air, we fixed them only in memory, so
when a fixed plane wasn't written to disk for other reasons before the
next game start, it had to be fixed again.

Change pln_zap_transient_flags() to write them out.
2008-04-29 20:38:10 +02:00
dd0e0423ee Don't let hardened missiles be loaded on ships or land units
Fix load_plane_ship() and load_plane_land() to reject hardened planes.
2008-04-28 22:30:19 +02:00
1d0f4b3071 Don't let missiles loaded on land units be hardened
hard() already rejected missiles loaded on ships, but missed land
units.
2008-04-28 22:27:54 +02:00
4f40ea04d8 Document what happens when the update aborts commands 2008-04-28 22:24:36 +02:00
c66e8319ee Revert "(prmptrd, uprmptrd): Should not be called while player->aborted. Check."
This reverts commit fee8ac9d8f.

These *are* called while player->aborted.  Could be avoided, but: the
reason for not wanting to prompt then is to have each prompt consume a
line of input.  That's actually not feasible, because when we wait for
an argument (after prompting for it) when the update aborts commands,
we can't consume the argument we prompted for.
2008-04-28 22:22:18 +02:00
61998d2316 Fix lnd_fire() ammo sanity check
Checking l_ammo before lnd_dam() oopses when something attempts to
fire from a land unit type that can't fire (l_dam == 0) and uses no
ammo.  Such usage is perfectly fine.  Move the check to the correct
place.
2008-04-26 10:15:05 +02:00
9e19123abf Update change log for 4.3.14 2008-04-25 22:28:40 +02:00
32d6c5e1b7 A script for post_crash_dump_hook 2008-04-25 22:13:08 +02:00
f63401329d New post_crash_dump_hook
Run it from crash_dump().  Useful to move core files out of the way,
alert deities by e-mail, and so forth.
2008-04-25 22:12:22 +02:00
dd0737f8e7 Detect and log errors in crash_dump() 2008-04-25 22:09:52 +02:00
f55860670a Move oops actions from log.c up to application
Change oops() to call the new oops_handler function pointer instead of
offering a fixed set of actions.  Change server's main() to install a
handler for the action requested by -E.
2008-04-25 22:06:13 +02:00
6709931d51 Give try_supply_commod() internal linkage 2008-04-22 21:56:35 +02:00
627e7d452d New server option -E to choose what to do on oops
Three options: abort, crash-dump, nothing.  crash-dump works by
aborting a fork.  It isn't implemented for Windows.

The oops action is no longer tied to daemon mode, but -d still implies
-E abort for convenience.
2008-04-21 21:52:27 +02:00
beb8a7ceb4 Flush every journal entry even when not in debug mode
Somewhat wasteful, but useful in case of a crash.
2008-04-21 20:42:50 +02:00
b1a0ff2fbd Don't let trains load trains
Doesn't affect the stock game, because its only train is heavy.
2008-04-20 15:11:15 +02:00
Ron Koenderink
aab015c641 Allow deity to display power report for all types of countries
Relax country status check of power c for deities.  Can be useful to
display NPCs.
2008-04-20 15:11:09 +02:00
66406bd240 Fix designate's check for disallowed sector types
Bug lets mortals designate all sector types, including sanctuaries.
desi() complains, but then executes anyway.  Broken in commit
8227d8c8, v4.3.12.
2008-04-16 07:45:07 +02:00
9272c47c9f Bump version to 4.3.14 2008-04-16 07:38:39 +02:00
fa98d40e86 Final polish for 4.3.13 2008-04-15 21:04:03 +02:00
2d4e4e0d96 Fix documented syntax of edit command.
While there: editing nukes isn't implemented, don't advertise it.
2008-04-15 20:57:28 +02:00
b88d59b9e4 Document that nukes can be traded 2008-04-15 20:56:07 +02:00
ba628b82bd Fix and polish comments emitted by pconfig 2008-04-15 20:29:29 +02:00
ae2a8097b8 4.3.13 late changes 2008-04-11 22:12:41 +02:00