]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/sabo.c
Update copyright notice
[empserver] / src / lib / commands / sabo.c
index 9ad6cf2ecabb6e74ee1b9c1151d579a790fe9831..98a12d7534ee2026f8858692f06f5096c75ba598 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2010, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
  *
  *  ---
  *
- *  See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
- *  related information and legal notices. It is expected that any future
- *  projects/authors will amend these files as needed.
+ *  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.
  *
  *  ---
  *
  *  sabo.c: Spy terrorist bombing
- * 
+ *
  *  Known contributors to this file:
  *     John Yockey, 2001
+ *     Markus Armbruster, 2003-2009
  */
 
-/*
-#include <ctype.h>
-#include "player.h"
-#include "sect.h"
-#include "news.h"
-#include "xy.h"
-#include "nat.h"
-#include "path.h"
-#include "map.h"
-#include "commands.h"
-*/
+#include <config.h>
 
-#include "misc.h"
-#include "var.h"
+#include "commands.h"
 #include "land.h"
-#include "nsc.h"
-#include "file.h"
 
 int
 sabo(void)
@@ -56,13 +44,12 @@ sabo(void)
     struct lndstr land;
     struct sctstr sect;
     double odds;
-    int vec[I_MAX + 1];
     int dam;
 
-    if (!snxtitem(&ni, EF_LAND, player->argp[1]))
+    if (!snxtitem(&ni, EF_LAND, player->argp[1], NULL))
        return RET_SYN;
 
-    while (nxtitem(&ni, (s_char *)&land)) {
+    while (nxtitem(&ni, &land)) {
        if (!player->owner)
            continue;
        if (!(lchr[(int)land.lnd_type].l_flags & L_SPY)) {
@@ -79,12 +66,10 @@ sabo(void)
        }
        if (!getsect(land.lnd_x, land.lnd_y, &sect))
            continue;
-       getvec(VT_ITEM, vec, (s_char *)&land, EF_LAND);
-       if (vec[I_SHELL] == 0) {
+       if (land.lnd_item[I_SHELL] == 0) {
            pr("%s has no shells.\n", prland(&land));
            continue;
        }
-       putvar(V_SHELL, vec[I_SHELL] - 1, (s_char *)&land, EF_LAND);
 
        odds = LND_SPY_DETECT_CHANCE(land.lnd_effic);
        if (chance(odds)) {
@@ -98,12 +83,9 @@ sabo(void)
            continue;
        }
 
-       getvec(VT_ITEM, vec, (s_char *)&sect, EF_SECTOR);
-       dam = landgun(3 * land.lnd_effic, 7);
-       if (vec[I_SHELL] > 20)
-           dam += seagun(land.lnd_effic, random() % (vec[I_SHELL] / 10));
-       if (vec[I_PETROL] > 100)
-           dam += seagun(land.lnd_effic, random() % (vec[I_PETROL] / 50));
+       dam = lnd_sabo(&land, sect.sct_item);
+       if (dam < 0)
+           continue;
 
        pr("Explosion in %s causes %d damage.\n",
           xyas(land.lnd_x, land.lnd_y, land.lnd_own), dam);
@@ -117,7 +99,7 @@ sabo(void)
        land.lnd_own = 0;
        putland(land.lnd_uid, &land);
 
-       sectdamage(&sect, dam, 0);
+       sectdamage(&sect, dam);
        putsect(&sect);
 
        land.lnd_own = player->cnum;