]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/work.c
COPYING duplicates information from README. Remove. Move GPL from
[empserver] / src / lib / commands / work.c
index 3f7725103b41e0a0255eb267ff435ade56308d61..998489d8c81056a3d8d89021fda2a968dbc4b887 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-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -19,9 +19,9 @@
  *
  *  ---
  *
- *  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.
  *
  *  ---
  *
  *   
  */
 
+#include <config.h>
+
 #include "misc.h"
 #include "player.h"
-#include "var.h"
 #include "xy.h"
 #include "sect.h"
 #include "land.h"
 #include "nat.h"
 #include "nsc.h"
-#include "deity.h"
 #include "file.h"
 #include "optlist.h"
 #include "commands.h"
@@ -55,7 +55,6 @@ work(void)
     struct lndstr land;
     int work_amt, eff_amt, w;
     s_char *p;
-    extern int land_mob_max;
     coord donex = 0, doney = 1;
     s_char buf[1024];
 
@@ -70,13 +69,9 @@ work(void)
        return RET_FAIL;
     }
     nunits = 0;
-    while (nxtitem(&ni, (s_char *)&land)) {
+    while (nxtitem(&ni, &land)) {
        if (!player->owner || land.lnd_own == 0)
            continue;
-       if (land.lnd_type < 0 || land.lnd_type > lnd_maxno) {
-           pr("bad unit type %d (#%d)\n", land.lnd_type, ni.cur);
-           continue;
-       }
        if (!(lchr[(int)land.lnd_type].l_flags & L_ENGINEER))
            continue;
        if (land.lnd_mobil <= 0) {
@@ -94,7 +89,7 @@ work(void)
            doney = sect.sct_y;
            continue;
        }
-       eff_amt = min(land.lnd_mobil, work_amt);
+       eff_amt = MIN(land.lnd_mobil, work_amt);
        w = ldround(((double)eff_amt * land.lnd_effic / 600.0), 1);
        if (w < 1) {
            pr("%s doesn't work enough to change efficiency (try increasing amount)\n", prland(&land));
@@ -127,13 +122,10 @@ work(void)
 static int
 buildeff(struct sctstr *sp, int work, double *money)
 {
-    int vec[I_MAX + 1];
-    register int work_cost;
+    int work_cost;
     int n, hcms, lcms;
     int effdone = 0;
 
-    getvec(VT_ITEM, vec, (s_char *)sp, EF_SECTOR);
-
     work_cost = 0;
     if (sp->sct_type != sp->sct_newtype) {
        /*
@@ -161,13 +153,13 @@ buildeff(struct sctstr *sp, int work, double *money)
            work_cost = work;
 
        if (dchr[sp->sct_type].d_lcms > 0) {
-           lcms = vec[I_LCM];
+           lcms = sp->sct_item[I_LCM];
            lcms /= dchr[sp->sct_type].d_lcms;
            if (work_cost > lcms)
                work_cost = lcms;
        }
        if (dchr[sp->sct_type].d_hcms > 0) {
-           hcms = vec[I_HCM];
+           hcms = sp->sct_item[I_HCM];
            hcms /= dchr[sp->sct_type].d_hcms;
            if (work_cost > hcms)
                work_cost = hcms;
@@ -178,11 +170,10 @@ buildeff(struct sctstr *sp, int work, double *money)
 
        if ((dchr[sp->sct_type].d_lcms > 0) ||
            (dchr[sp->sct_type].d_hcms > 0)) {
-           vec[I_LCM] -= work_cost * dchr[sp->sct_type].d_lcms;
-           vec[I_HCM] -= work_cost * dchr[sp->sct_type].d_hcms;
+           sp->sct_item[I_LCM] -= work_cost * dchr[sp->sct_type].d_lcms;
+           sp->sct_item[I_HCM] -= work_cost * dchr[sp->sct_type].d_hcms;
        }
        effdone += work_cost;
     }
-    putvec(VT_ITEM, vec, (s_char *)sp, EF_SECTOR);
     return effdone;
 }