diff --git a/src/common/kernel/build.c b/src/common/kernel/build.c index 7fd59da37..a4ccb423e 100644 --- a/src/common/kernel/build.c +++ b/src/common/kernel/build.c @@ -1116,13 +1116,13 @@ do_misc(char try) case P_BUILDING: case P_GEBAEUDE: - /* Sollte momentan nicht vorkommen, da Schwimmer nicht - * an Land können, und es keine Gebäude auf See gibt. */ - - if( !fval(u->race, RCF_WALK) && - !fval(u->race, RCF_FLY)) { - if (try) cmistake(u, S->s, 232, MSG_MOVE); - break; + /* Schwimmer können keine Gebäude betreten, außer diese sind + * auf dem Ozean */ + if( !fval(u->race, RCF_WALK) && !fval(u->race, RCF_FLY)) { + if (rterrain(r) != T_OCEAN){ + if (try) cmistake(u, S->s, 232, MSG_MOVE); + break; + } } b = getbuilding(r); @@ -1131,10 +1131,12 @@ do_misc(char try) if(try) cmistake(u, S->s, 6, MSG_MOVE); break; } + /* Gebäude auf dem Ozean sollte man betreten dürfen if(rterrain(r) == T_OCEAN) { if (try) cmistake(u, S->s, 297, MSG_MOVE); break; } + */ if (!mayenter(r, u, b)) { if(try) { sprintf(buf, "Der Eintritt in %s wurde verwehrt", diff --git a/src/common/kernel/spell.c b/src/common/kernel/spell.c index 6ce932102..1d69cb562 100644 --- a/src/common/kernel/spell.c +++ b/src/common/kernel/spell.c @@ -2282,13 +2282,6 @@ sp_ironkeeper(castorder *co) unit *mage = (unit *)co->magician; int cast_level = co->level; - if(rterrain(r) != T_MOUNTAIN && rterrain(r) != T_GLACIER ) { - sprintf(buf, "%s in %s: Wächtergeister können nur in Bergen " - "und Gletschern beschworen werden.", unitname(mage), - regionid(mage->region)); - addmessage(r, mage->faction, buf, MSG_MAGIC, ML_MISTAKE); - return 0; - } keeper = create_unit(r, mage->faction, 1, new_race[RC_IRONKEEPER], 0, "Bergwächter", mage); /*keeper->age = cast_level + 2;*/ @@ -3635,28 +3628,26 @@ sp_bloodsacrifice(castorder *co) { unit *mage = (unit *)co->magician; int cast_level = co->level; - int aura, damage; + int aura; int skill = eff_skill(mage, SK_MAGIC, mage->region); - int hp = mage->hp - 5; /* braucht noch 4 HP zum Bezahlen des - Spruchs, und 1 HP zum Überleben*/ + int hp = co->force*4; if (hp <= 0){ report_failure(mage, co->order); return 0; } - damage = min(hp, dice_rand("4d12")); + aura = lovar(hp*2); if (skill < 8) { - aura = damage / 4; + aura /= 4; } else if (skill < 12){ - aura = damage / 3; + aura /= 3; } else if (skill < 15){ - aura = damage / 2; - } else if (skill < 18){ - aura = damage; - } else { - aura = damage * 2; + aura /= 2; + /* von 15 bis 17 ist hp = aura */ + } else if (skill > 17){ + aura *= 2; } if (aura <= 0){ @@ -3664,8 +3655,10 @@ sp_bloodsacrifice(castorder *co) return 0; } + /* sicherheitshalber gibs hier einen HP gratis. sonst schaffen es + * garantiert ne ganze reihe von leuten ihren Magier damit umzubringen */ + mage->hp++; change_spellpoints(mage, aura); - use_pooled(mage, mage->region, R_HITPOINTS, damage); ADDMSG(&mage->faction->msgs, msg_message("sp_bloodsacrifice_effect", "unit region command amount", @@ -7483,7 +7476,7 @@ spell spelldaten[] = }, {SPL_IRONKEEPER, "Bergwächter", - "Erschafft in Bergen oder Gletschern einen Wächtergeist, der Eisen- und " + "Erschafft einen Wächtergeist, der Eisen- und " "Laenabbau durch nichtalliierte Parteien (HELFE BEWACHE) verhindert, " "solange er die Region bewacht. Der Bergwächter ist an den Ort der " "Beschwörung gebunden.", @@ -8122,7 +8115,7 @@ spell spelldaten[] = NULL, M_CHAOS, (ONSHIPCAST), 1, 4, { - {R_HITPOINTS, 12, SPC_FIX}, + {R_HITPOINTS, 4, SPC_LEVEL}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, diff --git a/src/eressea/korrektur.c b/src/eressea/korrektur.c index 46ec1262c..42a9c4d3c 100644 --- a/src/eressea/korrektur.c +++ b/src/eressea/korrektur.c @@ -578,12 +578,8 @@ show_newspells(void) * terminieren */ spellid_t newspellids[] = { + SPL_IRONKEEPER, SPL_BLOODSACRIFICE, - SPL_DEATHCLOUD, - SPL_PLAGUE, - SPL_UNHOLYPOWER, - SPL_CHAOSSUCTION, - SPL_CHAOSROW, SPL_NOSPELL }; /* die id's der neuen oder veränderten Sprüche werden in newspellids[]