diff --git a/src/common/gamecode/economy.c b/src/common/gamecode/economy.c index d3a1b515a..845ebb94a 100644 --- a/src/common/gamecode/economy.c +++ b/src/common/gamecode/economy.c @@ -570,8 +570,7 @@ givemen(int n, unit * u, unit * u2, const char * cmd) } else if (u == u2) { error = 10; #if RACE_ADJUSTMENTS - } - else if (u->race == new_race[RC_SNOTLING]) { + } else if (!u2 && u->race == new_race[RC_SNOTLING]) { /* Snotlings können nicht an Bauern übergeben werden. */ error = 307; #endif diff --git a/src/common/gamecode/report.c b/src/common/gamecode/report.c index 81bf60b94..2d7eacad6 100644 --- a/src/common/gamecode/report.c +++ b/src/common/gamecode/report.c @@ -3371,7 +3371,7 @@ report_summary(summary * s, summary * o, boolean full) fprintf(F, "Aktive Vulkane: %d\n\n", s->active_volcanos); } - for (i = 0; i < MAXRACES; i++) if (s->factionrace[i] && playerrace(new_race[i])) { + for (i = 0; i < MAXRACES; i++) if (s->factionrace[i] && playerrace(new_race[i]) && i != RC_TEMPLATE) { fprintf(F, "%14svölker: %s\n", LOC(default_locale, rc_name(new_race[i], 3)), pcomp(s->factionrace[i], o->factionrace[i])); } diff --git a/src/common/kernel/item.c b/src/common/kernel/item.c index aecb32a7a..ec4f2b924 100644 --- a/src/common/kernel/item.c +++ b/src/common/kernel/item.c @@ -743,6 +743,7 @@ enum { #define FL_ITEM_ANIMAL (1<<3) /* ist ein Tier */ #define FL_ITEM_MOUNT ((1<<4) | FL_ITEM_ANIMAL) /* ist ein Reittier */ +#if 0 /* ------------------------------------------------------------- */ /* Sprüche auf Artefakten */ /* Benutzung magischer Gegenstände */ @@ -766,7 +767,7 @@ destroy_curse_crystal(attrib **alist, int cast_level, int force) c = (curse*)a->data.v; /* Immunität prüfen */ - if (c->flag & CURSE_IMMUN) continue; + if (c->flag & CURSE_IMMUN); if (cast_level < c->vigour) { /* Zauber ist nicht stark genug */ int chance; @@ -794,6 +795,7 @@ destroy_curse_crystal(attrib **alist, int cast_level, int force) return force; } +#endif /* ------------------------------------------------------------- */ /* Kann auch von Nichtmagier benutzt werden, erzeugt eine @@ -815,7 +817,7 @@ use_antimagiccrystal(region * r, unit * mage, strlist * cmdstrings) * um seine Stufe */ power = sp->level * 20; /* Stufe 5 =~ 100 */ - power = destroy_curse_crystal(&r->attribs, effect, power); + power = destroy_curse(&r->attribs, effect, power, NULL); if(power) { create_curse(mage, &r->attribs, C_ANTIMAGICZONE, 0, power, duration, effect, 0); diff --git a/src/common/kernel/reports.c b/src/common/kernel/reports.c index 6506fbbc1..05cee4233 100644 --- a/src/common/kernel/reports.c +++ b/src/common/kernel/reports.c @@ -638,9 +638,13 @@ spskill(const struct locale * lang, const struct unit * u, skill_t sk, int *dh, #else if(u->faction->options & Pow(O_SHOWSKCHANGE)) { skill *skill = get_skill(u, sk); - int oldeff = skill->old + get_modifier(u, sk, skill->old, u->region); + int oldeff = 0; int diff; + if(skill->old > 0) { + oldeff = skill->old + get_modifier(u, sk, skill->old, u->region); + } + oldeff = max(0, oldeff); diff = effsk - oldeff; diff --git a/src/common/kernel/spell.h b/src/common/kernel/spell.h index 2c0dcd2a6..414c07000 100644 --- a/src/common/kernel/spell.h +++ b/src/common/kernel/spell.h @@ -211,6 +211,7 @@ int use_item_power(struct region * r, struct unit * u); int use_item_regeneration(struct region * r, struct unit * u); void showspells(struct region *r, struct unit *u); int sp_antimagiczone(struct castorder *co); +int destroy_curse(struct attrib **alist, int cast_level, int force, const struct curse_type * ctype); /* Kampfzauber */ diff --git a/src/mapper/map_region.c b/src/mapper/map_region.c index 4db394d45..77f7b4ba4 100644 --- a/src/mapper/map_region.c +++ b/src/mapper/map_region.c @@ -158,7 +158,7 @@ SpecialFunction(region *r) } case '2': if(!is_cursed_internal(r->attribs, C_PEACE, 0)) { - create_curse(NULL, &r->attribs, C_PEACE, 0, 100, 1, 0, 0); + create_curse(NULL, &r->attribs, C_PEACE, 0, 100, 2, 0, 0); set_curseflag(r->attribs, C_PEACE, 0, CURSE_IMMUN); modified = 1; }