]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/spy.c
Move declarations for chance.c to new chance.h
[empserver] / src / lib / commands / spy.c
index 5c31d243327257d7bc71b383354e56c5d5d4b168..60505d50272347a1b9e15e55a3409770910f93f5 100644 (file)
@@ -1,11 +1,11 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2008, Dave Pare, Jeff Bailey, Thomas Ruschak,
- *                           Ken Stevens, Steve McClure
+ *  Copyright (C) 1986-2013, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *                Ken Stevens, Steve McClure, Markus Armbruster
  *
- *  This program is free software; you can redistribute it and/or modify
+ *  Empire 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
+ *  the Free Software Foundation, either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  This program is distributed in the hope that it will be useful,
@@ -14,8 +14,7 @@
  *  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
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  *  ---
  *
  *  Known contributors to this file:
  *     Dave Pare, 1986
  *     Steve McClure, 1998-2000
- *     Markus Armbruster, 2005-2008
+ *     Markus Armbruster, 2005-2011
  */
 
 #include <config.h>
 
+#include "chance.h"
 #include "commands.h"
 #include "item.h"
 #include "land.h"
@@ -86,7 +86,7 @@ spy(void)
        pr("You don't have the BTU's for spying on that scale!\n");
        return RET_FAIL;
     }
-    bitmap = calloc(WORLD_SZ() / 8, 1);
+    bitmap = calloc((WORLD_SZ() + 7) / 8, 1);
     if (!bitmap) {
        logerror("malloc failed in do_look\n");
        pr("Memory error.  Tell the deity.\n");
@@ -129,7 +129,7 @@ spy(void)
                continue;
 
            own = dsect.sct_own;
-           relat = getrel(getnatp(own), player->cnum);
+           relat = relations_with(own, player->cnum);
            if (relat <= NEUTRAL
                && chance(dsect.sct_item[I_MILIT] / 200.0)) {
                /* spy caught */
@@ -150,6 +150,7 @@ spy(void)
                        wu(0, own, "%s (#%d) spy caught in %s\n",
                           cname(player->cnum), player->cnum,
                           xyas(nx, ny, own));
+                   nreport(player->cnum, N_SPY_SHOT, own, 1);
                }
                if (opt_HIDDEN)
                    setcont(own, player->cnum, FOUND_SPY);
@@ -181,7 +182,7 @@ spy(void)
 static void
 spy_report(struct sctstr *sp)
 {
-    prxy("%4d,%-4d", sp->sct_x, sp->sct_y, player->cnum);
+    prxy("%4d,%-4d", sp->sct_x, sp->sct_y);
     pr(" %c%c %3d %3d %3d %3d %3d %3d %4d %4d %4d %3d %4d %4d %4d\n",
        dchr[sp->sct_type].d_mnem,
        sp->sct_newtype == sp->sct_type ? ' ' : dchr[sp->sct_newtype].d_mnem,
@@ -189,7 +190,7 @@ spy_report(struct sctstr *sp)
        sp->sct_oldown,
        roundintby((int)sp->sct_effic, 10),
        roundintby((int)sp->sct_road, 10),
-       roundintby((int)sp->sct_rail, 10),
+       opt_RAILWAYS ? !!sct_rail_track(sp) : roundintby(sp->sct_rail, 10),
        roundintby((int)sp->sct_defense, 10),
        roundintby(sp->sct_item[I_CIVIL], 10),
        roundintby(sp->sct_item[I_MILIT], 10),
@@ -253,7 +254,7 @@ prplanes(int x, int y)
 static char *
 player_relstr(natid them)
 {
-    int rel = getrel(getnatp(player->cnum), them);
+    int rel = relations_with(player->cnum, them);
 
     if (rel == ALLIED)
        return "Allied";