(nukstr): Hold one nuke instead of a stockpile: replace members nuk_n, nuk_types by nuk_type, nuk_plane. Add nuk_land for completeness, like nuk_ship it's not yet used. (nuke_ca): Update accordingly: replace selectors number and types by type and plane. (build_nuke): Update accordingly. (ndump, nuke): Update accordingly. Output is no longer sorted by location, and nukes in same location no longer share id. nuke's extra columns for nuclear plants are repeated for every nuke. (trade_desc): Update accordingly. (cede, grab_sect, check_nuke_ok, detonate, trade_nameof): Talk about nukes instead of nuclear stockpiles. (arm, disarm): Rewrite, split off new disarm(). Don't remove nuke from the nuke file on arm. Allow usual plane syntax, not just plane number. Change second argument from nuke type to nuke number. When plane is already armed, ignore nuke argument and rearm (broken in 4.2.6). (tran_nuke): Update for changed struct nukstr, make as similar as possible to tran_plane. Change syntax to match transport plane. (player_coms): Update arm, disarm and transport accordingly. (prnuke, nuk_on_plane): New. (nuk_add, nuk_delete): Stockpile management, remove.
97 lines
2.6 KiB
C
97 lines
2.6 KiB
C
/*
|
|
* Empire - A multi-player, client/server Internet based war game.
|
|
* Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
|
|
* Ken Stevens, Steve McClure
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*
|
|
* ---
|
|
*
|
|
* See files README, COPYING and CREDITS in the root of the source
|
|
* tree for related information and legal notices. It is expected
|
|
* that future projects/authors will amend these files as needed.
|
|
*
|
|
* ---
|
|
*
|
|
* nuke.c: Display a listing of your nuclear arsenal
|
|
*
|
|
* Known contributors to this file:
|
|
* Dave Pare, 1986
|
|
*/
|
|
|
|
#include <config.h>
|
|
|
|
#include "misc.h"
|
|
#include "player.h"
|
|
#include "sect.h"
|
|
#include "nuke.h"
|
|
#include "xy.h"
|
|
#include "nsc.h"
|
|
#include "nat.h"
|
|
#include "file.h"
|
|
#include "commands.h"
|
|
|
|
int
|
|
nuke(void)
|
|
{
|
|
int first_line = 0;
|
|
int show_comm;
|
|
int i;
|
|
struct nstr_item nstr;
|
|
struct nukstr nuk;
|
|
struct sctstr sect;
|
|
|
|
if (!snxtitem(&nstr, EF_NUKE, player->argp[1]))
|
|
return RET_SYN;
|
|
|
|
while (nxtitem(&nstr, &nuk)) {
|
|
if (!player->god && !player->owner)
|
|
continue;
|
|
if (nuk.nuk_own == 0)
|
|
continue;
|
|
if (first_line++ == 0) {
|
|
if (player->god)
|
|
pr("own ");
|
|
pr(" sect eff num nuke-type lcm hcm oil rad avail\n");
|
|
}
|
|
getsect(nuk.nuk_x, nuk.nuk_y, §);
|
|
show_comm = 0;
|
|
if (sect.sct_type == SCT_NUKE && sect.sct_effic >= 60)
|
|
show_comm = 1;
|
|
if (player->god)
|
|
pr("%-3d ", nuk.nuk_own);
|
|
prxy("%4d,%-4d", sect.sct_x, sect.sct_y, player->cnum);
|
|
pr(" %c", dchr[sect.sct_type].d_mnem);
|
|
if (sect.sct_newtype != sect.sct_type)
|
|
pr("%c", dchr[sect.sct_newtype].d_mnem);
|
|
else
|
|
pr(" ");
|
|
pr("%4d%%", sect.sct_effic);
|
|
|
|
pr("%3d ", 1);
|
|
pr("%-16.16s ", nchr[(int)nuk.nuk_type].n_name);
|
|
|
|
if (show_comm) {
|
|
pr("%5d ", sect.sct_item[I_LCM]);
|
|
pr("%5d ", sect.sct_item[I_HCM]);
|
|
pr("%5d ", sect.sct_item[I_OIL]);
|
|
pr("%5d ", sect.sct_item[I_RAD]);
|
|
pr("%5d", sect.sct_avail);
|
|
show_comm = 0;
|
|
}
|
|
pr("\n");
|
|
}
|
|
return RET_OK;
|
|
}
|