diff --git a/src/common/gamecode/economy.c b/src/common/gamecode/economy.c index ad4f4adbb..2da386dc7 100644 --- a/src/common/gamecode/economy.c +++ b/src/common/gamecode/economy.c @@ -1762,7 +1762,7 @@ create_potion(unit * u, const potion_type * ptype, int want) static void create_item(unit * u, const item_type * itype, int want) { - if (fval(itype->rtype, RTF_LIMITED)) { + if (itype->construction && fval(itype->rtype, RTF_LIMITED)) { #if GUARD_DISABLES_PRODUCTION == 1 if(is_guarded(u->region, u, GUARD_PRODUCE)) { cmistake(u, u->thisorder, 70, MSG_EVENT); diff --git a/src/common/gamecode/study.c b/src/common/gamecode/study.c index b94a7dedd..c78c76f27 100644 --- a/src/common/gamecode/study.c +++ b/src/common/gamecode/study.c @@ -107,12 +107,16 @@ magic_lowskill(unit *u) int study_cost(unit *u, skill_t sk) { - static int cost = 0; + static int cost[MAXSKILLS]; int stufe, k = 50; - if (cost==0) { - cost = get_param_int(global.parameters, "skills.cost", 200); + if (cost[sk]==0) { + char buffer[256]; + sprintf(buffer, "skills.cost.%s", skillnames[sk]); + cost[sk] = get_param_int(global.parameters, buffer, -1); } + if (cost[sk]>=0) return cost[sk]; + switch (sk) { case SK_SPY: return 100; diff --git a/src/res/e3a.xml b/src/res/e3a.xml index 11a7c6489..f00a07f1c 100644 --- a/src/res/e3a.xml +++ b/src/res/e3a.xml @@ -123,7 +123,7 @@ - +