Ron Koenderink [Tue, 7 Sep 2004 14:04:19 +0000 (14:04 +0000)]
(info): `info' was not checking for all types of common files in
Windows, therefore could miss info files depending on the status
(archive, read-only). Also changed the error message to user to
provide a more accurate description of the problem. Closes #1018297.
(tran_plane): Fix major, abusable bug: getsect() before move_ground(),
putsect() afterwards. This allowed two cooperating countries to
duplicate items.
(keymatch): Replace member km_func by km_type. Initializers adapted.
(emp_config, print_config): Cope with km_type.
(worldxset, intset, floatset, optstrset, doubleset, longset): Unused,
remove.
(emp_config): Fail if specified file can't be read or contains errors.
Used to succeed always, returning RET_OK. RET_OK is not appropriate,
since this is not a command. Return 0 on success, -1 on failure.
Callers ignore failure at the moment. A missing or unreadable econfig
file used to be silently ignored. It is still ignored, but no longer
silently. It is questionable whether ignoring is wise, but that's
left for another day.
(emp_config): Improve diagnostic messages.
(set_option): Move diagnostics to caller.
(emp_config): Ignore leading whitespace in `#' comment lines.
(print_config): Simplify printing of km_comment.
(set_option): New parameter val, so it can set and clear options.
(delete_option): Remove.
(KM_ALLOC): Turn macro into enumeration constant.
(KM_INTERNAL): New.
(xdump, xdver): New version dump.
(keymatch, infodir, datadir, teldir, upfil, downfil, disablefil,
telfil, annfil, banfil, timestampfil, privname, privlog, update_times,
update_demandtimes, game_days, game_hours): Use plain char * instead
of s_char * for strings, void * for generic pointers.
(ANNO_KEEP_DAYS, anno_keep_days): Replace macro ANNO_KEEP_DAYS by
new configuration key. Closes #780425.
(delete_old_announcements): Do nothing when anno_keep_days is
negative.
(trad, set): Treat trade file slots with zero owner as unused, so that
freshly extended trade file makes sense. When set() removes a lot,
simply zero the slot.
(set): Initialize trd_uid.
(trade_check_ok): Use check_land_ok() & friends instead of doing it by
hand, but wrong. This fixes bying planes and land units loaded on
ships that moved after loading.
(check_trade_ok): New.
(trade_check_ok): Use it. Remove unused argument lot. Callers
changed.
Ron Koenderink [Sat, 28 Aug 2004 13:52:20 +0000 (13:52 +0000)]
(show_land_build, show_plane_build): Adjust the position of the $ column to match
'show ship b'. Adjust the crew column (show_plane_build) and the adjacent columns
to be right-justified.
(min_to_next_daytime): Happily returned zero if DTIME happend to be in
TIMES. This can make callers fire another update right away, possibly
several times. Observed for update policy UDP_TIMES while updates
were disabled, which makes them complete in much less than a second.
Fills up server.log real fast. Fix to consider DTIME tomorrow.
(IPKG): New.
(ichr): Set IPKG packing bonus for all sectors to 1.
(move): Use it. No functional change.
(deliver, dodistribute): Use it. Inefficient sectors now get IPKG
instead of NPKG packing bonus, cutting civilian packing bonus from 10
to 1.
(dodistribute): Export uses the better of sector or distribution
center packing bonus. Previously, it assumed that distribution center
WPKG packing is always best. Which is currently true, but needlessly
breaks the abstraction.
(NSC_EXTRA): New.
(sect_ca, NSC_GENITEM, plane_ca, land_ca): Use it for aliases and
cached functions of tech.
(xdflds, xdfldnam): Skip NSC_EXTRA fields.
Ron Koenderink [Sat, 21 Aug 2004 00:44:20 +0000 (00:44 +0000)]
(delete_old_announcements, copy_and_expire): Split off
copy_and_expire() to simplify cleanup. Previously, cleanup was
missing or incomplete on many less common code paths, which leaked
file descriptors and memory, and could corrupt the anno file. Use
stdio instead of POSIX I/O for writing. Check for I/O errors
properly. Treat bad telegram type just like bad telegram length (give
up). Closes #1013234.
(valstr): Replace member val_as.off by val_as.sym, which contains
offset and index. This is for the new dumps; conditions can't use it,
yet.
(nstr_comp_val): Zero index.
(nstr_exec_val): Implement index.
(coll, fina, repa, shark, disloan): Fix calculation of regular and
extended (beyond due date) loan time. At the due date, or after a
last payment made at the due date, durations were zero in fina() and
unpredictable elsewhere. With luck, debtors could abuse this to repay
loans cheap (they couldn't gain cash, though), sharks to purchase
loans cheap, and creditors to collect excessively.
(PRI_SMAINT, PRI_PMAINT, PRI_LMAINT, PRI_SBUILD, PRI_PBUILD,
PRI_LBUILD): Turn macros into enumeration constants. Value
SCT_MAXDEF+1 was previously unused; use it.
(PRI_MAX): New; replacing the horrible SCT_MAXDEF+8.
(show_sect_build): Simply examine all sector types, don't skip the
first five. The code ignores them just fine.
(show_sect_build, show_sect_stats, show_sect_capab): Don't try to show
sector types beyond SCT_MAXDEF. The table has some empty extra slots,
for whatever reasons; no use examining them.
(pln_onewaymission, carriersatxy): Change to match ordinary sorties:
offer carriers regardless of the sector they're in, require carriers
to be efficient. Closes #875376.
(show_sect_capab, V_ITEM): The difference between variable and
item types was removed some time ago. Simplify.
(VT_ITEM, VT_TYPE, V_MAX): Unused, remove.
(show_sect_capab): Properly use ichr[] member i_mnem to print item
characters.
(pchrstr, MAXPRCON): Simplify variable-style storage of constituents.
Store only up to MAXPRCON constituents, not MAXCHRNV; code doesn't
fully support more than three anyway. Remove member p_nv, use item
type I_NONE for unused slots. Rename members p_vtype, p_vamt to
p_ctype, p_camt to avoid confusion with variable-style storage.
(pchr): Initializers adapted.
(nullify_objects, materials_cost, materials_charge, prod,
show_sect_capab, grind): Adapt, simplify where possible, protect
against bad item types in pchr[].
(MAXCHRNV): Unused, remove.
(mchrstr, lchrstr): Change from variable-style storage of load
capacities to straight arrays. Users now subscript the array instead
of calling vl_find() or walking the variable data structure.
(mchr, lchr): Initializers adapted.
(vl_find): No longer used. Remove file.
Ron Koenderink [Tue, 17 Aug 2004 13:17:50 +0000 (13:17 +0000)]
(prod_eff): New, factored out of produce() and prod().
(upd_ship): Oil and food production used special rules that didn't
match ordinary production and didn't make much sense. Made them
follow ordinary production rules. This puts uw and mil to work, and
makes ship tech and efficiency relevant to production. Closes #917461
and #955072.
(lchr, pchr): Initializers depended on ETUS instead of etu_per_update.
ETUS is just the default for etu_per_update. Deities don't change
ETUS, they change etu_per_update by editing econfig. This nonsense
dates back at least to chainsaw 3.31, where it was just as broken as
now. Replace ETUS by 60 and simplify.
Ron Koenderink [Tue, 17 Aug 2004 02:31:10 +0000 (02:31 +0000)]
(prod_eff): New, factored out of produce() and prod().
(upd_ship): Oil and food production used special rules that didn't
match ordinary production and didn't make much sense. Made them
follow ordinary production rules. This puts uw and mil to work, and
makes ship tech and efficiency relevant to production. Closes #917461
and #955072.
(drop, fly): Fix previous rev. not to prohibit flying civilians to an
ally. Since you can load them onto their ships, you should be able to
fly them over.
(pln_mine, pln_dropoff): Split off aerial mining into new pln_mine().
Callers changed.
(drop): Do not disclose anything about target sector before planes
actually got there, unless the target sector is owned by the player or
an ally. This plugs a major loophole. Consequently, the command can
no longer always refuse to attempt to drop stuff where it won't work.
Instead, the planes fly out to try. Other plane commands (para, bomb)
behave exactly the same. Also closes #909859.
(pln_dropoff): Cope with planes trying to drop where they can't.
(drop): Refuse to drop civilians into allied sectors, for consistency
with other means to move around stuff.