/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2004, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
*
* This program is free software; you can redistribute it and/or modify
{
s_char *p;
int mission_flags;
- int tech;
coord tx, ty;
coord ax, ay;
int ap_to_target;
wantflags = 0;
if (!snxtitem(&ni_bomb, EF_PLANE, player->argp[1]))
return RET_SYN;
- if (!snxtitem
- (&ni_esc, EF_PLANE, getstarg(player->argp[2], "escort(s)? ", buf)))
+ if (!snxtitem(&ni_esc, EF_PLANE,
+ getstarg(player->argp[2], "escort(s)? ", buf)))
pr("No escorts...\n");
if ((p = getstarg(player->argp[3], "assembly point? ", buf)) == 0
|| *p == 0)
ty = ay;
(void)pathtoxy(flightpath, &tx, &ty, fcost);
pr("Ending sector is %s\n", xyas(tx, ty, player->cnum));
+ ip = whatitem(player->argp[5], "transport what? ");
getsect(tx, ty, &target);
+
cno = -1;
- ip = whatitem(player->argp[5], "transport what? ");
- mission_flags = 0;
if (pln_onewaymission(&target, &cno, &wantflags) < 0)
return RET_SYN;
if (cno < 0) {
dst_ptr = (s_char *)&ship;
dst_type = EF_SHIP;
}
+
+ if (ip && ip->i_vtype == I_CIVIL && target.sct_own != target.sct_oldown) {
+ pr("Can't fly civilians into occupied sectors.\n");
+ return RET_FAIL;
+ }
+
ap_to_target = strlen(flightpath);
if (*(flightpath + strlen(flightpath) - 1) == 'h')
ap_to_target--;
/*
* select planes within range
*/
+ mission_flags = 0;
pln_sel(&ni_bomb, &bomb_list, &ap_sect, ap_to_target,
1, wantflags, P_M | P_O);
+ if (QEMPTY(&bomb_list)) {
+ pr("No planes could be equipped for the mission.\n");
+ return RET_FAIL;
+ }
wantflags |= P_F;
wantflags |= P_ESC;
pln_sel(&ni_esc, &esc_list, &ap_sect, ap_to_target,
1, wantflags, P_M | P_O);
+ if (cno >= 0 && !pln_oneway_to_carrier_ok(&bomb_list, &esc_list, cno)) {
+ pr("Not enough room on ship #%d!\n", cno);
+ return RET_FAIL;
+ }
/*
* now arm and equip the bombers, transports, whatever.
- * tech is stored in high 16 bits of mission_flags.
- * yuck.
*/
- tech = 0;
mission_flags |= P_X; /* stealth (shhh) */
mission_flags |= P_H; /* gets turned off if not all choppers */
- mission_flags =
- pln_arm(&bomb_list, ap_to_target, 't', ip, 0, mission_flags,
- &tech);
+ mission_flags = pln_arm(&bomb_list, ap_to_target, 't',
+ ip, 0, mission_flags);
if (QEMPTY(&bomb_list)) {
pr("No planes could be equipped for the mission.\n");
return RET_FAIL;
}
- mission_flags =
- pln_arm(&esc_list, ap_to_target, 't', ip, P_ESC | P_F,
- mission_flags, &tech);
+ mission_flags = pln_arm(&esc_list, ap_to_target, 't',
+ ip, P_ESC | P_F, mission_flags);
ac_encounter(&bomb_list, &esc_list, ax, ay, flightpath, mission_flags,
0, 0, 0);
if (QEMPTY(&bomb_list)) {