diff --git a/src/kernel/curse.c b/src/kernel/curse.c index 12f635521..1818079b5 100644 --- a/src/kernel/curse.c +++ b/src/kernel/curse.c @@ -255,6 +255,9 @@ void curse_write(const attrib * a, const void *owner, struct storage *store) if (global.data_version < EXPLICIT_CURSE_ISNEW_VERSION) { flags = (c->flags & ~CURSE_ISNEW) | (c->type->flags & CURSE_ISNEW); } + else { + flags = c->flags | c->type->flags; + } WRITE_INT(store, c->no); WRITE_TOK(store, ct->cname); diff --git a/src/kernel/unit.c b/src/kernel/unit.c index 9906bc4aa..ea2bbd950 100644 --- a/src/kernel/unit.c +++ b/src/kernel/unit.c @@ -1282,7 +1282,7 @@ static int update_gbdream(const unit * u, int bonus, curse *c, const curse_type if (sign * effect > sign * bonus) { if (mage == NULL || mage->number == 0 || sign>0?alliedunit(mage, u->faction, HELP_GUARD):!alliedunit(mage, u->faction, HELP_GUARD)) { - bonus = effect; + bonus = (int)effect; } } } @@ -1322,7 +1322,7 @@ int att_modification(const unit * u, skill_t sk) * jeweils erste vom Typ C_GBDREAM zurueckgegen wird, wir aber alle * durchsuchen und aufaddieren muessen */ if (u->region) { - double bonus = 0, malus = 0; + int bonus = 0, malus = 0; attrib *a = a_find(u->region->attribs, &at_curse); while (a && a->type == &at_curse) { curse *c = (curse *)a->data.v; diff --git a/src/spells.c b/src/spells.c index 3df54e2de..734858745 100644 --- a/src/spells.c +++ b/src/spells.c @@ -4697,7 +4697,7 @@ static int sp_gbdreams(castorder * co, const char *curse_name, int effect) duration = 2 + rng_int() % duration; /* Nichts machen als ein entsprechendes Attribut in die Region legen. */ - c = create_curse(mage, &r->attribs, ct_find(curse_name), power, duration, effect, 0); + c = create_curse(mage, &r->attribs, ct_find(curse_name), power, duration, (float)effect, 0); /* Erfolg melden */ ADDMSG(&mage->faction->msgs, msg_message("regionmagic_effect",