/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2007, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2009, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
*
* This program is free software; you can redistribute it and/or modify
* ---
*
* ship.c: Do production for ships
- *
+ *
* Known contributors to this file:
* Dave Pare, 1986
* Steve McClure, 1996
* Ron Koenderink, 2004
- * Markus Armbruster, 2006
+ * Markus Armbruster, 2006-2008
*/
#include <config.h>
sectp = getsectp(sp->shp_x, sp->shp_y);
/* produce oil */
- if (np->nat_money > 0
+ if (np->nat_money >= 0
&& (mp->m_flags & M_OIL) && sectp->sct_type == SCT_WATER) {
product = &pchr[dchr[SCT_OIL].d_prd];
oil_gained = roundavg(total_work(100, etus,
sp->shp_item[I_OIL] += oil_gained;
}
/* produce fish */
- if (np->nat_money > 0
+ if (np->nat_money >= 0
&& (mp->m_flags & M_FOOD) && sectp->sct_type == SCT_WATER) {
sp->shp_item[I_FOOD]
+= roundavg(total_work(100, etus,
wf = 0;
/* only military can work on a military boat */
- if (ship->shp_glim > 0)
+ if (mp->m_glim != 0)
wf = etus * ship->shp_item[I_MILIT] / 2;
else
wf = etus * (ship->shp_item[I_CIVIL] / 2 + ship->shp_item[I_MILIT] / 5);
needed - sp->shp_item[I_FOOD]);
if (needed > sp->shp_item[I_FOOD]) {
/* take from embarked land units, but don't starve them */
- snxtitem_all(&ni, EF_LAND);
+ snxtitem_cargo(&ni, EF_LAND, EF_SHIP, sp->shp_uid);
while ((lp = nxtitemp(&ni)) && needed > sp->shp_item[I_FOOD]) {
- if (lp->lnd_ship != sp->shp_uid)
- continue;
give = lp->lnd_item[I_FOOD] - food_needed(lp->lnd_item, etus);
if (give < 1.0)
continue;