empserver/include/item.h
Markus Armbruster d9e4677926 collect: Derive collection value from power value
The collection value of a sector is

    sector value = sector type value * (sector efficiency + 100)
                 + sum of item values
    item value = item type value * amount

The sector and item type values are configurable.

The item type collect values aren't too far off the power values:

    uid mnem  pow val pow/val
      0  "c"   50   1   50
      1  "m"  100   0  inf
      2  "s"  125   5   25
      3  "g"  950  60   15.8
      4  "p"    7   4    1.75
      5  "i"   10   2    5
      6  "d"  200  20   10
      7  "b" 2500 280    8.9
      8  "f"    0   0  NaN
      9  "o"   50   8    6.25
     10  "l"   20   2   10
     11  "h"   40   4   10
     12  "u"   50   1   50
     13  "r"   50 150    0.33

The power value is very roughly ten times the collect value, except
for civilians and uw it's 50, for rads its 0.33, and military are free
to collect.  The latter two make no sense.

Replace the item type collect value by the power value / 50 for
people, and by the power value / 10 for everything else.  This makes
collecting military, shells, guns and uw more expensive, and petrol,
bars, iron, oil and rads cheaper.

The sector type values are basically arbitrary.  For instance, an iron
mine costs five times as much as a wilderness, but a third of an
uranium mine, regardless of actual resource contents.

Replace this by different arbitrary values:

    sector value = (item value of materials necessary to build it
                    + build cost) * efficiency / 100
		 + sector type maximum population
                 + sum of item values

Some sector types become cheaper, some more expensive.

Drop sect-chr and item selector value.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
2017-08-06 19:59:59 +02:00

90 lines
2.4 KiB
C

/*
* Empire - A multi-player, client/server Internet based war game.
* Copyright (C) 1986-2016, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure, Markus Armbruster
*
* Empire is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* ---
*
* 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.
*
* ---
*
* item.h: Definitions for item characteristics stuff
*
* Known contributors to this file:
* Markus Armbruster, 2004-2016
*/
#ifndef ITEM_H
#define ITEM_H
#include "misc.h"
enum i_packing {
IPKG, /* "inefficient" packaging (eff<60) */
NPKG, /* no special packaging */
WPKG, /* "warehouse" packaging */
UPKG, /* "urban" packaging */
BPKG /* "bank" packaging */
};
enum {
NUMPKG = BPKG + 1
};
/* Item types, must match item.config */
typedef enum {
I_NONE = -1,
I_CIVIL,
I_MILIT,
I_SHELL,
I_GUN,
I_PETROL,
I_IRON,
I_DUST,
I_BAR,
I_FOOD,
I_OIL,
I_LCM,
I_HCM,
I_UW,
I_RAD,
I_MAX = I_RAD
} ATTRIBUTE((packed)) i_type;
struct ichrstr {
char i_mnem; /* usually the initial letter */
i_type i_uid; /* index in ichr[] */
int i_power; /* power value of 1000 items */
int i_sell; /* can this be sold? */
int i_lbs; /* how hard to move */
int i_pkg[NUMPKG]; /* units for reg, ware, urb, bank */
int i_melt_denom; /* fallout meltdown denominator */
char *i_name; /* full name of item */
};
/* variables using this structure */
extern struct ichrstr ichr[I_MAX + 2];
/* procedures using/returning this struct */
extern struct ichrstr *whatitem(char *, char *);
extern struct ichrstr *item_by_name(char *);
#endif