unit_work = 0;
pp = &pchr[dchr[type].d_prd];
vtype = pp->p_type;
+ if (pp->p_nrndx)
+ resource = (unsigned char *)§ + pp->p_nrndx;
+ else
+ resource = NULL;
natp = getnatp(sect.sct_own);
/*
* sect p_e (inc improvements)
*/
- if (pp->p_nrndx != 0) {
+ if (resource) {
unit_work++;
- resource = (unsigned char *)§ + pp->p_nrndx;
- p_e = (*resource * p_e) / 100.0;
+ p_e *= *resource / 100.0;
}
/*
* production effic.
* workforce?
*/
max = (int)(work * p_e / (double)unit_work + 0.5);
- if (pp->p_nrdep != 0 && vtype != I_NONE) {
+ if (resource && pp->p_nrdep != 0 && vtype != I_NONE) {
if (*resource * 100 < pp->p_nrdep * max)
max = *resource * 100 / pp->p_nrdep;
}
return 0;
product = &pchr[dchr[desig].d_prd];
item = product->p_type;
+ if (product->p_nrndx)
+ resource = (unsigned char *)sp + product->p_nrndx;
+ else
+ resource = NULL;
*amount = 0;
*cost = 0;
* calculate production efficiency.
*/
p_e = neweff / 100.0;
- if (product->p_nrndx != 0) {
+ if (resource) {
unit_work++;
- resource = (unsigned char *)sp + product->p_nrndx;
- p_e = (*resource * p_e) / 100.0;
+ p_e *= *resource / 100.0;
}
/*
* determine number that can be made with
worker_limit = roundavg(work * p_e / unit_work);
if (material_consume > worker_limit)
material_consume = worker_limit;
- if (product->p_nrdep != 0) {
+ if (resource && product->p_nrdep != 0) {
if (*resource * 100 < product->p_nrdep * material_consume)
material_consume = *resource * 100 / product->p_nrdep;
}
*/
if (!player->simulation) {
materials_charge(product, vec, material_consume);
- if (product->p_nrdep != 0) {
+ if (resource && product->p_nrdep != 0) {
/*
* lower natural resource in sector depending on
* amount produced