(pln_onewaymission): Use it. No functional change.
(pln_airbase_ok): Use it to enforce capabilities. Before, a plane
could fly once it got on the ship. Because ships can load only planes
that can fly from them, this has no effect other than make that sanity
check redundant; remove it.
(pln_airbase_ok): Update land unit case to keep it similar to the ship
case.
Check player->cnum only when noisy. Update existing caller to pass 1.
No functional change.
(mission_pln_airbase_ok): Remove, use pln_airbase_ok() instead. No
functional change.
last, so when it was (no longer) allied, attempting to fly off it let
you test the conditions checked before that. Check owner first.
(mission_pln_airbase_ok): Matching change, to avoid diverging from
pln_airbase_ok().
bad. Before, the plane was destroyed, and the player got a message.
(pln_airbase_ok, mission_pln_airbase_ok): Oops when plane's base
sector is bad.
(pln_airbase_ok): Oops when the player doesn't own the plane. Before,
this was checked only for planes on carriers, and the plane was
destroyed, and the player got a misleading message.
more so: additionally, any of P_E, P_K, P_L satisfied any subset of
P_E, P_K, P_L. Chainsaw fixed this one in plnsub.c, but not here.
Remove, use the fixed pln_wanted() instead.
(pln_wanted): External linkage.
buggy: any P_E, P_L, P_K in wantflags were ignored when the plane
lacked P_ESC. The bug bit only when non-escort interceptors escorted
a one-way mission to a carrier. pln_oneway_to_carrier_ok() then could
not fit the plane on the carrier, and the command failed complaining
about lack of room on the carrier. Broken since Chainsaw added
escorts, abusable before 4.2.17 catched it. Also change behavior when
only one of P_F and P_ESC is in wantflags: new version requires that
flag, while old version treats it as if both flags were in wantflags:
a plane having either is okay. Current code never passes such
wantflags.
ships, so that order of loading no longer matters: choppers can use
chopper or plane slots, x-lights can use x-light or plane slots, light
planes can use plane slots. However, plane slots require M_FLY or
M_MSL to hold missiles or x-lights, and M_FLY to hold anything else.
Choppers and x-lights can now use plane slots even when not light.
X-light choppers, which don't exist in the stock game, can no longer
use x-light slots.
(fit_plane_on_ship, fit_plane_on_land): New.
(pln_oneway_to_carrier_ok, put_plane_on_ship, count_planes)
(put_plane_on_land, count_land_planes): Use them. No functional
change.
(fit_plane_off_ship, fit_plane_off_land): New.
(take_plane_off_ship, take_plane_off_land): Use them. This oopses
when the carriers plane counter underflows.
(take_plane_off_ship): Document that carrier's plane counters may be
screwed up.
(take_plane_off_ship, take_plane_off_land): Oops when the plane isn't
on the carrier.
(take_plane_off_ship, take_plane_off_land): Don't fail when the plane
to be taken off can't go on this type of carrier, just take it off.
No error condition left, so return void. Callers couldn't do anything
useful with the status anyway, and most didn't bother. Change those
that did.
other. Ensure headers in include/ can be included in any order
(except for econfig-spec.h, which is special). New header types.h to
help avoid inclusion cycles. Sort include directives. Remove some
superflous includes.
(pln_mobcost): Don't round cost computation intermediate values.
(pln_mobcost): Don't limit cost to current mobility + 32. No
airworthy plane can possibly use more than 55 mobility in one sortie,
and mobility going that much negative is fine.
airburst. Leave taking nuke off the plane to caller. Use coord for
coordinate parameters.
(pln_damage): Take nuke off the plane.
(detonate): Destroy the nuke. This is required since arming doesn't
remove nukes from the nuke file anymore (arm.c rev. 1.15).
(ltend, multifire, quite_bigdef, mine, landmine)
(do_loan, prod, printdiff, sell, sona, stre)
(tend, fire_dchrg, vers, work, ac_planedamage)
(ac_shipflak, ask_off, get_mine_dsupport, att_fight)
(ask_move_in_off, detonate, sd, land_gun)
(land_unitgun, lnd_fort_interdiction, lnd_fortify)
(perform_mission, pln_mine, pln_mobcost)
(retreat_ship1, retreat_land1, shp_sweep)
(shp_fort_interdiction, shp_missle_defense)
(new_work, growfood, upd_land, land_repair)
(get_materials, do_mob_ship, do_mob_land)
(load_it, unload_it, prod_plane, produce)
(guerrilla, upd_buildeff, spread_fallout)
(upd_ship, ship_repair, min, dmin, MIN):
Remove min() and dmin() functions and replace
with a MIN macro in misc.h. Remove local MIN
macros and use the new one in misc.h. This
change removes the need for the special
case for _WIN32.
(fuel, look_ship, multifire, mission, sona)
(plane_sona, ef_open, player_accept, player_main)
(ac_dog, att_get_combat, calc_mobcost)
(ask_move_in_off, intelligence_report)
(build_mission_list_type, perform_mission)
(show_mission, use_supply, dodistribute)
(allocate_memory, max, dmax, MAX):
Remove max() and dmax() functions and replace
with a MAX macro in misc.h. Remove local MAX
macros and use the new one in misc.h. This
change removes the need for the special
case for _WIN32.
unowned sectors. The assembly point must now be owned or allied, or
have an owned or allied ship.
Info pages didn't match the old rule. Fix them to match the new rule.