]> git.pond.sub.org Git - empserver/commitdiff
(shiprepair): Remove parameter vec, work with ship->shp_item[]
authorMarkus Armbruster <armbru@pond.sub.org>
Thu, 11 Mar 2004 13:15:02 +0000 (13:15 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 11 Mar 2004 13:15:02 +0000 (13:15 +0000)
instead.  This is safe, because the only caller passed a copy of the
latter created with getvec(), and shiprepair() doesn't change it.
Caller changed.

src/lib/update/ship.c

index 908ba3d17e4d45f630e290b0dd56a30844e70a4d..7bf1cef19cc6a2357d5809a552c281cbdf02181a 100644 (file)
@@ -57,7 +57,7 @@
 #define MIN(x,y)        ((x) > (y) ? (y) : (x))
 #endif
 
-static int shiprepair(register struct shpstr *, int *, struct natstr *,
+static int shiprepair(register struct shpstr *, struct natstr *,
                      int *, int);
 static void upd_ship(register struct shpstr *, register int,
                     struct natstr *, int *, int);
@@ -130,12 +130,10 @@ upd_ship(register struct shpstr *sp, register int etus,
     int eff;
 
     mp = &mchr[(int)sp->shp_type];
-    getvec(VT_ITEM, vec, (s_char *)sp, EF_SHIP);
     if (build == 1) {
        if (np->nat_priorities[PRI_SBUILD] == 0 || np->nat_money < 0)
            return;
-       if (sp->shp_effic < SHIP_MINEFF ||
-           !shiprepair(sp, vec, np, bp, etus)) {
+       if (sp->shp_effic < SHIP_MINEFF || !shiprepair(sp, np, bp, etus)) {
            makelost(EF_SHIP, sp->shp_own, sp->shp_uid, sp->shp_x,
                     sp->shp_y);
            sp->shp_own = 0;
@@ -164,6 +162,8 @@ upd_ship(register struct shpstr *sp, register int etus,
            np->nat_money -= cost;
        }
 
+       getvec(VT_ITEM, vec, (s_char *)sp, EF_SHIP);
+
        sectp = getsectp(sp->shp_x, sp->shp_y);
        if (((mp->m_flags & M_OIL) && (sectp->sct_type == SCT_WATER))
            && !player->simulation) {
@@ -264,7 +264,7 @@ upd_ship(register struct shpstr *sp, register int etus,
  * 8 * 8 * $40 = $2560!
  */
 static int
-shiprepair(register struct shpstr *ship, int *vec, struct natstr *np,
+shiprepair(register struct shpstr *ship, struct natstr *np,
           int *bp, int etus)
 {
     register int delta;
@@ -293,9 +293,9 @@ shiprepair(register struct shpstr *ship, int *vec, struct natstr *np,
     wf = 0;
     /* only military can work on a military boat */
     if (ship->shp_glim > 0)
-       wf = etus * vec[I_MILIT] / 2;
+       wf = etus * ship->shp_item[I_MILIT] / 2;
     else
-       wf = etus * (vec[I_CIVIL] / 2 + vec[I_MILIT] / 5);
+       wf = etus * (ship->shp_item[I_CIVIL] / 2 + ship->shp_item[I_MILIT] / 5);
 
     if (sp->sct_type != SCT_HARBR) {
        wf /= 3;
@@ -315,15 +315,15 @@ shiprepair(register struct shpstr *ship, int *vec, struct natstr *np,
        if (ship->shp_glim > 0) {
            abs_max = vl_find(V_MILIT, mp->m_vtype,
                              mp->m_vamt, (int)mp->m_nv);
-           amt = vec[I_MILIT];
+           amt = ship->shp_item[I_MILIT];
        } else {
            abs_max = vl_find(V_CIVIL, mp->m_vtype,
                              mp->m_vamt, (int)mp->m_nv);
-           amt = vec[I_CIVIL];
+           amt = ship->shp_item[I_CIVIL];
            if (abs_max == 0) {
                abs_max = vl_find(V_MILIT, mp->m_vtype, mp->m_vamt,
                                  (int)mp->m_nv);
-               amt = vec[I_MILIT];
+               amt = ship->shp_item[I_MILIT];
            }
        }