clean and extend the enum of resources.

This commit is contained in:
Enno Rehling 2017-03-05 11:10:59 +01:00
parent 614978a343
commit 5675ef6091
4 changed files with 36 additions and 21 deletions

View File

@ -2130,7 +2130,7 @@ static void planttrees(unit * u, int raw)
} }
/* Mallornb<6E>ume kann man nur in Mallornregionen z<>chten */ /* Mallornb<6E>ume kann man nur in Mallornregionen z<>chten */
rtype = get_resourcetype(fval(r, RF_MALLORN) ? R_MALLORNSEED : R_SEED); rtype = get_resourcetype(fval(r, RF_MALLORN) ? R_MALLORN_SEED : R_SEED);
/* Skill pr<70>fen */ /* Skill pr<70>fen */
skill = effskill(u, SK_HERBALISM, 0); skill = effskill(u, SK_HERBALISM, 0);
@ -2195,7 +2195,7 @@ static void breedtrees(unit * u, int raw)
} }
/* Mallornb<6E>ume kann man nur in Mallornregionen z<>chten */ /* Mallornb<6E>ume kann man nur in Mallornregionen z<>chten */
rtype = get_resourcetype(fval(r, RF_MALLORN) ? R_MALLORNSEED : R_SEED); rtype = get_resourcetype(fval(r, RF_MALLORN) ? R_MALLORN_SEED : R_SEED);
/* Skill pr<70>fen */ /* Skill pr<70>fen */
skill = effskill(u, SK_HERBALISM, 0); skill = effskill(u, SK_HERBALISM, 0);
@ -2313,7 +2313,7 @@ static void breed_cmd(unit * u, struct order *ord)
default: default:
if (p != P_ANY) { if (p != P_ANY) {
rtype = findresourcetype(s, u->faction->locale); rtype = findresourcetype(s, u->faction->locale);
if (rtype == get_resourcetype(R_SEED) || rtype == get_resourcetype(R_MALLORNSEED)) { if (rtype == get_resourcetype(R_SEED) || rtype == get_resourcetype(R_MALLORN_SEED)) {
breedtrees(u, m); breedtrees(u, m);
break; break;
} }

View File

@ -614,25 +614,24 @@ struct order *ord)
#define R_MINHERB R_PLAIN_1 #define R_MINHERB R_PLAIN_1
#define R_MINPOTION R_FAST #define R_MINPOTION R_FAST
#define R_MINITEM R_IRON #define R_MINITEM R_IRON
#define MAXITEMS MAX_ITEMS
#define MAXRESOURCES MAX_RESOURCES
#define MAXHERBS MAX_HERBS
#define MAXPOTIONS MAX_POTIONS
#define MAXHERBSPERPOTION 6 #define MAXHERBSPERPOTION 6
const potion_type *oldpotiontype[MAXPOTIONS + 1]; const potion_type *oldpotiontype[MAX_POTIONS + 1];
/*** alte items ***/ /*** alte items ***/
static const char *resourcenames[MAX_RESOURCES] = { static const char *resourcenames[MAX_RESOURCES] = {
"money", "aura", "permaura",
"hp", "peasant", "person",
"sapling", "mallornsapling",
"tree", "mallorntree",
"seed", "mallornseed",
"iron", "stone", "horse", "ao_healing", "iron", "stone", "horse", "ao_healing",
"aots", "roi", "rop", "ao_chastity", "aots", "roi", "rop", "ao_chastity",
"laen", "fairyboot", "aoc", "pegasus", "laen", "fairyboot", "aoc", "pegasus",
"elvenhorse", "charger", "dolphin", "roqf", "trollbelt", "elvenhorse", "charger", "dolphin", "roqf", "trollbelt",
"aurafocus", "sphereofinv", "magicbag", "aurafocus", "sphereofinv", "magicbag",
"magicherbbag", "dreameye", "p2", "seed", "mallornseed", "magicherbbag", "dreameye", "p2"
"money", "aura", "permaura",
"hp", "peasant", "person"
}; };
const resource_type *get_resourcetype(resource_t type) { const resource_type *get_resourcetype(resource_t type) {
@ -966,7 +965,7 @@ static void init_oldpotions(void)
}; };
int p; int p;
for (p = 0; p != MAXPOTIONS; ++p) { for (p = 0; p != MAX_POTIONS; ++p) {
item_type *itype = it_find(potionnames[p]); item_type *itype = it_find(potionnames[p]);
if (itype != NULL) { if (itype != NULL) {
oldpotiontype[p] = itype->rtype->ptype; oldpotiontype[p] = itype->rtype->ptype;
@ -978,6 +977,11 @@ void init_resources(void)
{ {
resource_type *rtype; resource_type *rtype;
/* there are resources that are special and must be hard-coded.
* these are not items, but things like trees or hitpoints
* which can be used in a construction recipe or as a spell ingredient.
*/
rt_get_or_create(resourcenames[R_PERSON]); /* lousy hack */ rt_get_or_create(resourcenames[R_PERSON]); /* lousy hack */
rtype = rt_get_or_create(resourcenames[R_PEASANT]); rtype = rt_get_or_create(resourcenames[R_PEASANT]);

View File

@ -252,8 +252,27 @@ extern "C" {
variant magres, int prot, unsigned int flags); variant magres, int prot, unsigned int flags);
potion_type *new_potiontype(item_type * itype, int level); potion_type *new_potiontype(item_type * itype, int level);
/* these constants are used with get_resourcetype.
* The order of the enum is not important for stored data.
* The resourcenames array must be updated to match.
*/
typedef enum { typedef enum {
/* SPECIAL */
R_SILVER,
R_AURA, /* Aura */
R_PERMAURA, /* Permanente Aura */
R_LIFE,
R_PEASANT,
R_PERSON,
R_SAPLING,
R_MALLORN_SAPLING,
R_TREE,
R_MALLORN_TREE,
/* ITEMS: */ /* ITEMS: */
R_SEED,
R_MALLORN_SEED,
R_IRON, R_IRON,
R_STONE, R_STONE,
R_HORSE, R_HORSE,
@ -277,15 +296,7 @@ extern "C" {
R_SACK_OF_CONSERVATION, R_SACK_OF_CONSERVATION,
R_TACTICCRYSTAL, R_TACTICCRYSTAL,
R_WATER_OF_LIFE, R_WATER_OF_LIFE,
R_SEED,
R_MALLORNSEED,
/* SONSTIGE */ /* SONSTIGE */
R_SILVER,
R_AURA, /* Aura */
R_PERMAURA, /* Permanente Aura */
R_LIFE,
R_PEASANT,
R_PERSON,
MAX_RESOURCES, /* do not use outside item.c ! */ MAX_RESOURCES, /* do not use outside item.c ! */
NORESOURCE = -1 NORESOURCE = -1

View File

@ -149,7 +149,7 @@ enter_arena(unit * u, const item_type * itype, int amount, order * ord)
assert(!"not implemented"); assert(!"not implemented");
/* /*
for (res=0;res!=MAXRESOURCES;++res) if (res!=R_SILVER && res!=R_ARENA_GATE && (is_item(res) || is_herb(res) || is_potion(res))) { for (res=0;res!=MAX_RESOURCES;++res) if (res!=R_SILVER && res!=R_ARENA_GATE && (is_item(res) || is_herb(res) || is_potion(res))) {
int x = get_resource(u, res); int x = get_resource(u, res);
if (x) { if (x) {
if (u2) { if (u2) {