]> git.pond.sub.org Git - empserver/log
empserver
16 years agoJournal the PRNG seed
Markus Armbruster [Sun, 16 Mar 2008 11:56:03 +0000 (12:56 +0100)]
Journal the PRNG seed

16 years agoSimplify how fire command parses third argument
Markus Armbruster [Sat, 15 Mar 2008 07:26:35 +0000 (08:26 +0100)]
Simplify how fire command parses third argument

Remove a useless strcpy() that truncated the argument to 19
characters.

16 years agoClean up fire command's enum targ_type
Markus Armbruster [Sat, 15 Mar 2008 07:24:04 +0000 (08:24 +0100)]
Clean up fire command's enum targ_type

You can't fire at land units.  target is never set to targ_unit, only
compared to it.  Remove.

16 years agoSimplify fire command's encoding of attacker
Markus Armbruster [Sat, 15 Mar 2008 07:08:59 +0000 (08:08 +0100)]
Simplify fire command's encoding of attacker

Use file types instead of enum targ_type.

16 years agoFix use of uninitialized variable in multifire()
Markus Armbruster [Sat, 15 Mar 2008 06:51:25 +0000 (07:51 +0100)]
Fix use of uninitialized variable in multifire()

multifire() used shots to print either shell or shells.  4.2.3 removed
its initialization for land unit fire, and commit 22c6fd8b removed it
for ship fire.  Fix by just printing shells always.

16 years agoRemove nightly build configurations files that are not being used
Ron Koenderink [Sun, 16 Mar 2008 23:17:04 +0000 (17:17 -0600)]
Remove nightly build configurations files that are not being used

This files are not current with nightlybuild.sh, common.sh
and report.sh.

16 years agoRemove pre_update_hook decoration
Ron Koenderink [Sun, 16 Mar 2008 23:09:00 +0000 (17:09 -0600)]
Remove pre_update_hook decoration

Improve the portability.  The Windows version of "echo" does
not support single quotes as a quoting character and therefore
fails and prevents updates in the Windows nightly build.

16 years agoDon't write junk bits to unused bytes of telegram files
Markus Armbruster [Fri, 14 Mar 2008 20:22:32 +0000 (21:22 +0100)]
Don't write junk bits to unused bytes of telegram files

There are holes in struct telstr, which typed_wu() neglected to
initialize.  Fix that.

16 years agoFix update's resupply of food to avoid starvation
Markus Armbruster [Fri, 14 Mar 2008 19:01:23 +0000 (20:01 +0100)]
Fix update's resupply of food to avoid starvation

do_feed() used supply_commod() incorrectly, which wiped out all food
in the starving sector.

16 years agoFix return fire ammunition use in fire command
Markus Armbruster [Fri, 14 Mar 2008 19:00:48 +0000 (20:00 +0100)]
Fix return fire ammunition use in fire command

The old code let each defender fire on each target separately.  To
avoid charging ammo multiple times, it didn't update the defenders
after fire; it charged them in use_ammo() instead.  Bugs: not updating
the defender lost any shells fetched by automatic resupply, and
use_ammo() always charged one shell for gun fire, which was wrong for
most ships and land units.

Rewrite to let each defender fire once, updating it normally.  Reuse
the damage for the other targets.  This also yields the proper
probability distribution for damage.

16 years agoNew emp_searchque()
Markus Armbruster [Thu, 13 Mar 2008 21:30:43 +0000 (22:30 +0100)]
New emp_searchque()

16 years agoSimplify how fire command encodes lists of firing objects
Markus Armbruster [Fri, 14 Mar 2008 19:00:30 +0000 (20:00 +0100)]
Simplify how fire command encodes lists of firing objects

Use file type rather than enum targ_type for struct flist member type.

Clean up natid vs. int sloppiness while there.

16 years agoSimplify multifire() to silence compiler warning
Markus Armbruster [Thu, 13 Mar 2008 21:34:44 +0000 (22:34 +0100)]
Simplify multifire() to silence compiler warning

16 years agoSimplify how fire command passes attacker to defend()
Markus Armbruster [Thu, 13 Mar 2008 21:05:36 +0000 (22:05 +0100)]
Simplify how fire command passes attacker to defend()

Pass attacker empobj instead of attacker's targ_type, sector (used for
targ_land), ship (used otherwise) and coordinates (used in either
case).

16 years agoSimplify how fire command passes defender to defend()
Markus Armbruster [Thu, 13 Mar 2008 20:32:12 +0000 (21:32 +0100)]
Simplify how fire command passes defender to defend()

Pass defender country number instead of target type, sector (used if
target type is targ_land), and ship (used otherwise).

16 years agoSimplify quiet_bigdef()
Markus Armbruster [Thu, 13 Mar 2008 19:34:04 +0000 (20:34 +0100)]
Simplify quiet_bigdef()

Move common part of submarine and surface ship return fire out of the
conditional.

Use ni.curdist instead of recomputing the range.

16 years agoPlug memory leak in fire command
Markus Armbruster [Thu, 13 Mar 2008 19:06:13 +0000 (20:06 +0100)]
Plug memory leak in fire command

add_to_fired_queue() adds a defender at most once.  It neglects to
free the defender flist nodes it doesn't add.  Broken since option
MULTIFIRE appeared in Chainsaw.

16 years agoFix commit 91eefc3f
Markus Armbruster [Thu, 13 Mar 2008 18:22:21 +0000 (19:22 +0100)]
Fix commit 91eefc3f

It miscomputed size of configdir, resulting in excessive memory
allocation.

16 years agoFix make distclean to remove generated sources.mk
Markus Armbruster [Sun, 9 Mar 2008 17:19:07 +0000 (18:19 +0100)]
Fix make distclean to remove generated sources.mk

16 years agoBump version to 4.3.12
Markus Armbruster [Sun, 9 Mar 2008 17:06:13 +0000 (18:06 +0100)]
Bump version to 4.3.12

16 years agoUpdate known contributors comments
Markus Armbruster [Sun, 9 Mar 2008 15:26:27 +0000 (16:26 +0100)]
Update known contributors comments

16 years agoMake xundump catch extraneous fields
Markus Armbruster [Sun, 9 Mar 2008 12:50:00 +0000 (13:50 +0100)]
Make xundump catch extraneous fields

Make deffld() reject fields whose selector has flag NSC_EXTRA set.
Since xundump() doesn't provides space for these, the bug could lead
to buffer overruns.

16 years agoFix stmtch() for exact match after multiple partial matches
Markus Armbruster [Sun, 9 Mar 2008 12:45:29 +0000 (13:45 +0100)]
Fix stmtch() for exact match after multiple partial matches

Keep looking for exact match after finding the second partial match.

16 years agoNew timestamp selectors
Markus Armbruster [Sun, 9 Mar 2008 12:41:13 +0000 (13:41 +0100)]
New timestamp selectors

New timestamp selector for commodity, country, game, loan, nation,
news, trade, treaty.

16 years agoSet timestamp automatically on write
Markus Armbruster [Wed, 5 Mar 2008 21:43:10 +0000 (22:43 +0100)]
Set timestamp automatically on write

Do it in do_write().  Remove the setting of timestamps elsewhere.

This fixes empdump to set timestamps to the current time instead of
zero on import.

16 years agoPut a timestamp into struct emptypedstr
Markus Armbruster [Wed, 5 Mar 2008 21:36:48 +0000 (22:36 +0100)]
Put a timestamp into struct emptypedstr

Make sure all members of unit empobj_storage share it.

Add matching timestamp member to struct comstr, struct empobj, struct
gamestr, struct lonstr, struct natstr, struct nwsstr, struct trdstr,
struct trtstr.  The timestamp isn't yet set for these.  To be fixed.

Move the timestamp member to the right place in struct lndstr, struct
loststr, struct realmstr, struct nukstr, struct plnstr, struct sctstr,
struct shpstr.

16 years agoFactor common code out of add() and new() into nat_reset()
Markus Armbruster [Wed, 5 Mar 2008 21:21:08 +0000 (22:21 +0100)]
Factor common code out of add() and new() into nat_reset()

The common nation wipe code is not quite identical, and it doesn't
wipe the nation thoroughly enough.  The new code does.

Changes to both commands:

* Wipe nat_update, nat_ann, nat_access, and nat_contact.  Bug: should
  set nat_ann to the number of announcements.

Changes to add command:

* Don't wipe for status active and god.  Before, nat_relate and
  nat_flags where wiped then.

Changes to newcap command:

* Wipe nat_hostaddr, nat_hostname, nat_userid, nat_dayno, nat_minused,
  nat_reserve, nat_last_login, nat_last_logout, nat_newstim,
  nat_annotim, nat_relate, nat_rejects, nat_flags.

16 years agoUpdate indent-emp for removed typedef names, belatedly.
Markus Armbruster [Wed, 5 Mar 2008 05:10:54 +0000 (06:10 +0100)]
Update indent-emp for removed typedef names, belatedly.

16 years agoReplace some typedef names by enum tags.
Markus Armbruster [Wed, 5 Mar 2008 05:09:48 +0000 (06:09 +0100)]
Replace some typedef names by enum tags.

Also get rid of some mildly silly manual packing of enum types.

16 years agoNew utility program empdump
Markus Armbruster [Tue, 4 Mar 2008 20:55:29 +0000 (21:55 +0100)]
New utility program empdump

empdump exports and imports game state as plain text.  Limitations: it
currently can't export player bmaps, power report, telegrams,
announcements, message of the day, no-login message and log files.
Exported floating-point values may be inexact.  Importing an exported
game state may not result in identical data files; besides the loss of
floating-point precision just mentioned, coordinates are normalized,
and characters beyond a string's terminating zero in a character array
are lost.  Bug: importing resets timestamps to zero.  It should set
them to the current time.

16 years agoImplement human-readable dialect for xdump
Markus Armbruster [Tue, 4 Mar 2008 20:49:44 +0000 (21:49 +0100)]
Implement human-readable dialect for xdump

This is for the forthcoming empdump utility program.  The xdump
command still does not support the human-readable dialect.

xundump has supported the human-readable dialect for a long time
(commit 4871a10a).

16 years agoMake xundump interpret escapes in identifiers
Markus Armbruster [Tue, 4 Mar 2008 20:41:26 +0000 (21:41 +0100)]
Make xundump interpret escapes in identifiers

We need this because we have symbols with spaces, e.g. missions[].

16 years agoMinor xdump documentation edit
Markus Armbruster [Tue, 4 Mar 2008 20:38:59 +0000 (21:38 +0100)]
Minor xdump documentation edit

16 years agoMake xdump code available for future use outside the server
Markus Armbruster [Fri, 8 Feb 2008 20:51:24 +0000 (21:51 +0100)]
Make xdump code available for future use outside the server

Move the bits useful there from src/lib/commands/xdump.c to new
include/xdump.h and src/lib/common/xdump.c.

16 years agoPrepare some xdump code for future use outside the server
Markus Armbruster [Fri, 8 Feb 2008 20:12:43 +0000 (21:12 +0100)]
Prepare some xdump code for future use outside the server

We don't have player->cnum, player->god and pr() there.  Pass
parameters instead.

16 years agoDon't store land unit stats in struct lndstr, part 2
Markus Armbruster [Tue, 4 Mar 2008 20:27:30 +0000 (21:27 +0100)]
Don't store land unit stats in struct lndstr, part 2

struct lndstr members lnd_spy, lnd_rad, lnd_ammo, lnd_fuelc,
lnd_fuelu, lnd_maxlight, lnd_maxlight are mere copies of struct
lchrstr members l_spy, l_rad, l_ammo, l_fuelc, l_fuelu, l_nxlight,
l_nland.  Remove them.

Make land unit selectors spy, rmax, ammo, fuelc, fuelu, maxlight
virtual.

16 years agoDon't store land unit stats in struct lndstr, part 1
Markus Armbruster [Tue, 4 Mar 2008 20:20:23 +0000 (21:20 +0100)]
Don't store land unit stats in struct lndstr, part 1

New lnd_att(), lnd_def(), lnd_vul(), lnd_spd(), lnd_vis(), lnd_frg(),
lnd_acc(), lnd_dam(), lnd_aaf() replace the struct lndstr members with
the same names.

Make land unit selectors att, def, vul, spd, vis, frg, acc, dam, aaf
virtual.

16 years agoDon't store ship stats in struct shpstr
Markus Armbruster [Tue, 4 Mar 2008 20:15:59 +0000 (21:15 +0100)]
Don't store ship stats in struct shpstr

New shp_armor(), shp_speed(), shp_visib(), shp_frnge(), shp_glim()
replace the struct shpstr members with the same names.

16 years agoDon't store plane stats in struct plnstr
Markus Armbruster [Tue, 4 Mar 2008 20:09:32 +0000 (21:09 +0100)]
Don't store plane stats in struct plnstr

New pln_att(), pln_def(), pln_acc(), pln_range_max(), pln_load()
replace the struct plnstr members with the same names.

Make plane selectors att and def virtual.

16 years agoNew nstr_mksymval() to create symbolic values
Markus Armbruster [Tue, 4 Mar 2008 09:29:49 +0000 (10:29 +0100)]
New nstr_mksymval() to create symbolic values

16 years agoVirtual selectors
Markus Armbruster [Tue, 4 Mar 2008 20:02:00 +0000 (21:02 +0100)]
Virtual selectors

Where ordinary selectors specify a value stored in some object,
virtual selectors specify a function to call to compute a value
associated with some object.

Use them to replace the special case xdump ver by new table
EF_VERSION.

Move configkeys[] to lib/common because nsc_init() needs it to
initialize empfile[EF_VERSION].cadef.

16 years agoReorder members of struct castr to make nsc.c easier to read
Markus Armbruster [Tue, 4 Mar 2008 19:27:26 +0000 (20:27 +0100)]
Reorder members of struct castr to make nsc.c easier to read

16 years agoMake nstr_exec oops on bad operator
Markus Armbruster [Tue, 4 Mar 2008 07:10:05 +0000 (08:10 +0100)]
Make nstr_exec oops on bad operator

16 years agoMake nstr_exec_val() return its first argument
Markus Armbruster [Tue, 4 Mar 2008 07:03:01 +0000 (08:03 +0100)]
Make nstr_exec_val() return its first argument

16 years agoMake nstr_exec_val() more robust
Markus Armbruster [Tue, 4 Mar 2008 06:55:32 +0000 (07:55 +0100)]
Make nstr_exec_val() more robust

Oops on bad argument, and make a better error value then.

16 years agoMove nstr_promote() to src/lib/common/, external linkage
Markus Armbruster [Tue, 4 Mar 2008 06:51:56 +0000 (07:51 +0100)]
Move nstr_promote() to src/lib/common/, external linkage

16 years agoDocument nsc.h more completely
Markus Armbruster [Tue, 4 Mar 2008 06:47:06 +0000 (07:47 +0100)]
Document nsc.h more completely

16 years agoFix documentation of empfile[] contents
Markus Armbruster [Tue, 4 Mar 2008 06:43:23 +0000 (07:43 +0100)]
Fix documentation of empfile[] contents

16 years agoMake xdprval() oops on bad argument
Markus Armbruster [Mon, 3 Mar 2008 20:43:36 +0000 (21:43 +0100)]
Make xdprval() oops on bad argument

16 years agoFix oops recovery in xdprval()
Markus Armbruster [Mon, 3 Mar 2008 20:40:22 +0000 (21:40 +0100)]
Fix oops recovery in xdprval()

Failed to print the separator, which could run fields together.

16 years agoFactor out torpedo hit chance into shp_torp_hitchance()
Markus Armbruster [Mon, 3 Mar 2008 19:59:39 +0000 (20:59 +0100)]
Factor out torpedo hit chance into shp_torp_hitchance()

16 years agoFactor out ship usable gun calculation into shp_usable_gun()
Markus Armbruster [Mon, 3 Mar 2008 19:33:54 +0000 (20:33 +0100)]
Factor out ship usable gun calculation into shp_usable_gun()

16 years agoGive effrange() internal linkage.
Markus Armbruster [Mon, 3 Mar 2008 19:28:03 +0000 (20:28 +0100)]
Give effrange() internal linkage.

16 years agoFactor out land unit firing range calculation into lnd_fire_range()
Markus Armbruster [Mon, 3 Mar 2008 19:24:52 +0000 (20:24 +0100)]
Factor out land unit firing range calculation into lnd_fire_range()

16 years agoFactor out ship firing range calculation into shp_fire_range()
Markus Armbruster [Mon, 3 Mar 2008 19:20:39 +0000 (20:20 +0100)]
Factor out ship firing range calculation into shp_fire_range()

16 years agoTighten gcc warning options
Markus Armbruster [Mon, 3 Mar 2008 19:12:46 +0000 (20:12 +0100)]
Tighten gcc warning options

Suppress only unused parameters, not all unused stuff.

16 years agoRemove an unused variable in fit_plane_off_land()
Markus Armbruster [Mon, 3 Mar 2008 19:09:26 +0000 (20:09 +0100)]
Remove an unused variable in fit_plane_off_land()

16 years agoRemove dead code for estimating defense
Markus Armbruster [Mon, 3 Mar 2008 19:08:43 +0000 (20:08 +0100)]
Remove dead code for estimating defense

Clean up of intelligence_report().  Should have been done in commit
092a52f2.

16 years agouse_supply() is now unused, remove
Markus Armbruster [Mon, 3 Mar 2008 07:31:03 +0000 (08:31 +0100)]
use_supply() is now unused, remove

16 years agoFactor out common land unit fire code into lnd_fire()
Markus Armbruster [Mon, 3 Mar 2008 07:29:52 +0000 (08:29 +0100)]
Factor out common land unit fire code into lnd_fire()

This takes care of a number of bugs / inconsistencies:

* Resupply before fire: fire command did not require unit to be in
  supply, and resupplied shells.  Everywhere else (return fire,
  support and interdiction) the land unit had to be in supply after
  resupply of everything.  Unify not to resupply anything and not to
  require being in supply.  This is consistent with ships and sectors.

* Resupply after fire: fire command resupplied shells after active
  fire.  Unify not to do that.  This is consistent with ships and
  sectors.

* When a land unit returned fire to multiple attackers, quiet_bigdef()
  charged it ammo for each one.  Finally, it was charged one shell
  more by use_ammo().  Except only the first land unit got charged
  there in fact, because buggy add_to_fired_queue() entered only the
  first land unit into the defender list.  Fix add_to_fired_queue()
  and change quiet_bigdef() not to charge ammo, just like for ships
  and sectors.  This charges only one shell instead of the true ammo
  use, which is wrong, but consistent with ships.

* lnd_support() tallied support damage unrounded.  Unify to round
  before tally.

16 years agoSimplify torpedo return fire logic
Markus Armbruster [Sun, 2 Mar 2008 21:19:57 +0000 (22:19 +0100)]
Simplify torpedo return fire logic

Don't bother checking capabilities that will be checked again later,
just try torpedo, then depth charge / gun fire.

16 years agoFactor out common torpedo fire code into shp_torp()
Markus Armbruster [Sun, 2 Mar 2008 14:45:41 +0000 (15:45 +0100)]
Factor out common torpedo fire code into shp_torp()

This takes care of a number of bugs / inconsistencies:

* Submarines with zero mobility could interdict.  Change to require
  positive mobility.

* Submarines with zero firing range could not interdict.  Fix by
  dropping the test from perform_mission().  No ships in the stock
  game are affected.

* Submarines without capability torp could fire return torpedoes and
  interdict.  Stock sbc, nm and msb were affected by the return fire
  bug.  Closes bug#950936.

* Shell resupply bugs: quiet_bigdef(), fire_torp() and
  perform_mission() resupplied before checking all other requirements
  and could thus get more shells than actually needed.

torp() no longer resupplies shells.  It's hardly worth the bother, and
fire doesn't do it either.

16 years agoFix torpedo return fire line of sight requirement and range
Markus Armbruster [Sun, 2 Mar 2008 13:05:31 +0000 (14:05 +0100)]
Fix torpedo return fire line of sight requirement and range

anti_torp() required line of sight and used gun range for all kinds of
return fire.  Require line of sight only for torpedoes, not for gun
fire and depth charges.  Use torpedo range for torpedoes, gun range
for gun fire and depth charges.

16 years agoChange test whether a land unit is artillery
Markus Armbruster [Mon, 3 Mar 2008 06:29:24 +0000 (07:29 +0100)]
Change test whether a land unit is artillery

Test for land unit firing damage instead of range, for consistency
with ships.

16 years agoFactor out common ship gun fire code into shp_fire()
Markus Armbruster [Sun, 2 Mar 2008 10:59:56 +0000 (11:59 +0100)]
Factor out common ship gun fire code into shp_fire()

This takes care of a number of bugs / inconsistencies:

* Ships with zero firing range could return fire and fire support, but
  not fire actively or interdict.  Fix by testing for gun limit
  instead in multifire() and mission().  No ships in the stock game
  are affected.

* Required gun crew was inconsistent: multifire() let N military fire
  max(1,floor(N/2)) guns for active fire.  Ditto perform_mission() for
  interdiction.  quiet_bigdef() let them fire N guns for returning gun
  fire.  Ditto sd() for firing support and firing at boarding parties.
  fire_dchrg() let them fire floor(N/2) for returning fire to
  torpedoes.  Unify to let N military fire floor((N+1)/2) guns.

* Shell use was inconsistent: sd() and perform_mission() used one
  shell per gun, everything else one per two guns.  Unify to one shell
  per two guns.

* Shell resupply bugs: multifire() got two shells regardless of actual
  ammo use.  quiet_bigdef() got one shell (but use_ammo() uses only
  one, which is a bug).  sd() and perform_mission() resupplied before
  checking all other requirements and could thus get more shells than
  actually needed.

16 years agoMake depth-charging code and documentation match
Markus Armbruster [Sun, 2 Mar 2008 10:01:42 +0000 (11:01 +0100)]
Make depth-charging code and documentation match

Before 4.0.6, depth charges required no guns, one military, did damage
like shell fire from two guns, and used two shells.  Missions were not
quite consistent with that (bug).  4.0.6 changed depth charges to work
exactly like shell fire (but without updating documentation
accordingly): require guns and gun crew, non-zero firing range, scale
damage and ammunition use with guns.

Go back to the old model, but with damage like three guns, to avoid
changing the stock game's dd now (three gun damage for two shells).
Stock game's af changes from two gun damage for one shell, and nas
from four gun damage for two shells.

Factor out common depth-charging code into shp_dchrg().

16 years agoFactor out common fortress fire code into fort_fire()
Markus Armbruster [Fri, 14 Mar 2008 19:01:05 +0000 (20:01 +0100)]
Factor out common fortress fire code into fort_fire()

This takes care of a number of bugs / inconsistencies:

* sb() fired support even when there were not enough mil.

* Shell resupply bugs: multifire() and quiet_bigdef() resupplied
  shells before checking all other requirements and could thus get
  more shells than actually needed.

Rename landgun() to fortgun() for consistency.

16 years agoInclude system headers before ours
Markus Armbruster [Fri, 29 Feb 2008 06:09:34 +0000 (07:09 +0100)]
Include system headers before ours

16 years agoGive logx() internal linkage
Markus Armbruster [Fri, 29 Feb 2008 06:08:59 +0000 (07:08 +0100)]
Give logx() internal linkage

16 years agoNew unit stat development functions
Markus Armbruster [Fri, 29 Feb 2008 05:49:18 +0000 (06:49 +0100)]
New unit stat development functions

The macros defining unit stat development in tech are somewhat
inconvenient to use.  Define more convenient functions, and hide away
the macros near the function definitions.

16 years agoConvert a CANT_HAPPEN() to CANT_REACH()
Markus Armbruster [Thu, 28 Feb 2008 19:26:54 +0000 (20:26 +0100)]
Convert a CANT_HAPPEN() to CANT_REACH()

16 years agoRemove edit keys deprecated in 4.3.3
Markus Armbruster [Thu, 28 Feb 2008 19:22:12 +0000 (20:22 +0100)]
Remove edit keys deprecated in 4.3.3

These are: land 'C', plane 'a' and 'd', unit 'X', ship 'H', 'P', 'X'
and 'Y'.

16 years agoImplement xundump table truncation
Markus Armbruster [Tue, 26 Feb 2008 20:19:26 +0000 (21:19 +0100)]
Implement xundump table truncation

16 years agoNew ef_truncate()
Markus Armbruster [Sun, 9 Mar 2008 12:42:12 +0000 (13:42 +0100)]
New ef_truncate()

16 years agoPOSIX compatible ftruncate() for Windows
Markus Armbruster [Tue, 26 Feb 2008 19:05:36 +0000 (20:05 +0100)]
POSIX compatible ftruncate() for Windows

16 years agoClean up dependencies after failed compile
Markus Armbruster [Mon, 25 Feb 2008 20:38:22 +0000 (21:38 +0100)]
Clean up dependencies after failed compile

If gcc's preprocessor chokes, it leaves an empty dependency file
behind, and doesn't touch the object file.  If an old object file
exists, and is newer than the .c file, make will then consider the
object file up-to-date.  This can lead to nasty version errors.

16 years agoRemove redundant initializations from fairland's fl_sct_init()
Markus Armbruster [Mon, 25 Feb 2008 20:22:07 +0000 (21:22 +0100)]
Remove redundant initializations from fairland's fl_sct_init()

16 years agoClean up confusing loop control in fairland
Markus Armbruster [Mon, 25 Feb 2008 20:20:48 +0000 (21:20 +0100)]
Clean up confusing loop control in fairland

16 years agoReplace unit_type_name() by empobj_chr_name()
Markus Armbruster [Mon, 25 Feb 2008 20:18:35 +0000 (21:18 +0100)]
Replace unit_type_name() by empobj_chr_name()

16 years agoSimplify empobj_chr_name() oops recovery
Markus Armbruster [Mon, 25 Feb 2008 20:15:50 +0000 (21:15 +0100)]
Simplify empobj_chr_name() oops recovery

Return something usable instead of null.  Matches obj_nameof().  Fixes
those callers that neglected to check the value.

16 years agoRename emp_obj_chr_name() to empobj_chr_name()
Markus Armbruster [Mon, 25 Feb 2008 20:11:19 +0000 (21:11 +0100)]
Rename emp_obj_chr_name() to empobj_chr_name()

16 years agoMake ef_verify() check ef_type and uid
Markus Armbruster [Mon, 25 Feb 2008 20:07:06 +0000 (21:07 +0100)]
Make ef_verify() check ef_type and uid

16 years agoOops when bad ef_type or uid is written to disk
Markus Armbruster [Mon, 25 Feb 2008 20:05:48 +0000 (21:05 +0100)]
Oops when bad ef_type or uid is written to disk

16 years agoCheck ef_type before dereferencing struct empobj
Markus Armbruster [Mon, 25 Feb 2008 19:57:33 +0000 (20:57 +0100)]
Check ef_type before dereferencing struct empobj

Such manual checking is error prone, but the best we can do right now.

16 years agoCheck subscript of rpt[]
Markus Armbruster [Sun, 24 Feb 2008 21:15:10 +0000 (22:15 +0100)]
Check subscript of rpt[]

Make nws_vrb unsigned to simplify that.

16 years agoFix tests for unused news slots
Markus Armbruster [Sun, 24 Feb 2008 19:33:57 +0000 (20:33 +0100)]
Fix tests for unused news slots

delete_old_news() and init_nreport() tested for non-zero nws_when,
which is breaks for news at the epoch.  Not likely to happen, but
still wrong.

ncache() tested nws_uid, which breaks for the first entry in the news
file.  This made ncache() overlook that entry in the cache, and create
a new news item instead of incrementing nws_ntm.  Was always broken
that way.

Fix by testing nws_vrb instead.

16 years agoGet rid of struct newscache
Markus Armbruster [Sun, 24 Feb 2008 18:12:49 +0000 (19:12 +0100)]
Get rid of struct newscache

Just use struct nwsstr, it has the uid now.

16 years agoFix news expiry not to screw up nws_uid
Markus Armbruster [Sun, 24 Feb 2008 18:55:10 +0000 (19:55 +0100)]
Fix news expiry not to screw up nws_uid

delete_old_news() moves unexpired news.  Update nws_uid accordingly.
It then zaps the slots no longer in use.  Don't zap ef_type and
nws_uid.

16 years agoUse ef_blank() when extending news file
Markus Armbruster [Sun, 24 Feb 2008 18:02:43 +0000 (19:02 +0100)]
Use ef_blank() when extending news file

The call of ef_ensure_space() serves no purpose: the blank records it
adds are ignored on read, and overwritten (not updated) by new news.
Get rid of it.

16 years agoUse ef_blank() when extending lost file, and simplify
Markus Armbruster [Sun, 24 Feb 2008 17:50:02 +0000 (18:50 +0100)]
Use ef_blank() when extending lost file, and simplify

16 years agoUse ef_blank() when extending treaty, loan, comm and trade file
Markus Armbruster [Sun, 24 Feb 2008 17:47:22 +0000 (18:47 +0100)]
Use ef_blank() when extending treaty, loan, comm and trade file

Only treaty extension initialized ef_type and uid properly.  None of
them zeroed unused members and holes in the struct.  comm and trade
extension called ef_extend(), which had no effect, so remove that.

16 years agoUse ef_blank for new ships, planes, land units and nukes
Markus Armbruster [Fri, 14 Mar 2008 18:59:30 +0000 (19:59 +0100)]
Use ef_blank for new ships, planes, land units and nukes

Fixes commit 6cd3d55c, which broke initialization of ef_type.

16 years agoNew ef_blank()
Markus Armbruster [Sun, 24 Feb 2008 17:28:09 +0000 (18:28 +0100)]
New ef_blank()

It performs the same initialization as ef_extend().

16 years agoempfile's init callback is now unused, remove
Markus Armbruster [Sun, 24 Feb 2008 10:19:51 +0000 (11:19 +0100)]
empfile's init callback is now unused, remove

16 years agoshp_init(), lnd_init(), pln_init(), nuk_init() are now empty, remove
Markus Armbruster [Sun, 24 Feb 2008 10:13:48 +0000 (11:13 +0100)]
shp_init(), lnd_init(), pln_init(), nuk_init() are now empty, remove

16 years agoInitialize ef_type and uid automatically in ef_extend()
Markus Armbruster [Sun, 24 Feb 2008 10:07:18 +0000 (11:07 +0100)]
Initialize ef_type and uid automatically in ef_extend()

New struct emptypedstr to avoid depending on empobj.h there.

Remove now superfluous manual initializations elsewhere.

This doesn't fix any missing initializations.

16 years agoNew empfile flag EFF_TYPED to signal struct empobj support
Markus Armbruster [Sun, 24 Feb 2008 09:06:01 +0000 (10:06 +0100)]
New empfile flag EFF_TYPED to signal struct empobj support

Elements of tables with EFF_TYPED set share the common header of
struct empobj.

16 years agoExtend the common header of struct empobj to include uid
Markus Armbruster [Mon, 25 Feb 2008 07:23:19 +0000 (08:23 +0100)]
Extend the common header of struct empobj to include uid

Make sure all members of unit empobj_storage share uid in addition to
ef_type.

Add matching uid member to struct gamestr, struct natstr and struct
sctstr, and set them.

Swap struct empobj members uid and own to make that easier, and update
struct comstr, struct lndstr, struct lonstr, struct loststr, struct
nwsstr, struct nukstr, struct plnstr, struct realmstr, struct shpstr,
struct trdstr, struct trtstr accordingly.

Note that the uid isn't properly set for struct nwsstr, struct lonstr,
struct trdstr, struct comstr and struct loststr.  To be fixed.

16 years agoDocument tables EF_COMM, EF_TRADE and EF_COUNTRY have an owner
Markus Armbruster [Mon, 25 Feb 2008 19:37:01 +0000 (20:37 +0100)]
Document tables EF_COMM, EF_TRADE and EF_COUNTRY have an owner

xdvisible() relies on that.

Set EFF_OWNER in the table definitions.  EFF_OWNER is not actually
used right now, so this doesn't fix anything broken.

16 years agoSimplify unit_put()
Markus Armbruster [Sat, 23 Feb 2008 07:35:13 +0000 (08:35 +0100)]
Simplify unit_put()