diff --git a/src/common/gamecode/randenc.c b/src/common/gamecode/randenc.c index 3ec38ab7c..1f824d400 100644 --- a/src/common/gamecode/randenc.c +++ b/src/common/gamecode/randenc.c @@ -167,130 +167,133 @@ dissolve_units(void) } static int -improve_all(faction * f, skill_t sk, int weeks) +improve_all(faction * f, skill_t sk, int by_weeks) { - unit *u; - - for (u = f->units; u; u = u->nextF) { - if (has_skill(u, sk)) { - while (weeks--) { - learn_skill(u, sk, 1.0); - } - } - } - - return weeks; + unit *u; + boolean ret = by_weeks; + + for (u = f->units; u; u = u->nextF) { + if (has_skill(u, sk)) { + int weeks = 0; + for (;weeks!=by_weeks;++weeks) { + learn_skill(u, sk, 1.0); + ret = 0; + } + } + } + + return ret; } void find_manual(region * r, unit * u) { - skill_t skill = NOSKILL; - sprintf(buf, "%s stolper%c bei der Erforschung der Region über ", - unitname(u), "nt"[u->number == 1]); + skill_t skill = NOSKILL; + sprintf(buf, "%s stolper%c bei der Erforschung der Region über ", + unitname(u), "nt"[u->number == 1]); + + switch (rand() % 4) { + case 0: + scat("die Ruine eines alten Tempels"); + break; + case 1: + scat("eine alte Burgruine"); + break; + case 2: + scat("ein zerfallenes Bauernhaus"); + break; + case 3: + scat("eine Leiche am Wegesrand"); + break; + } + + scat(". Bei der Durchsuchung "); + if (u->number == 1) { + scat("stößt"); + } else { + scat("stoßen"); + } + scat(" sie auf das zerfledderte Exemplar eines alten Buches, betitelt "); + + switch (rand() % 36) { + case 0: + scat("\'Magie der Elemente\'"); + skill = SK_MAGIC; + break; + case 1: + case 2: + case 3: + case 4: + scat("\'Schwerter, Armbrüste, Langbögen\'"); + skill = SK_WEAPONSMITH; + break; + case 5: + case 6: + scat("\'Gorms Almanach der Rationellen Kriegsführung\'"); + skill = SK_TACTICS; + break; + case 7: + case 8: + case 9: + case 10: + scat("\'Katamarane, Koggen, Karavellen\'"); + skill = SK_SHIPBUILDING; + break; + case 11: + case 12: + case 13: + case 14: + scat("\'Wege der Sterne\'"); + skill = SK_SAILING; + break; + case 15: + case 16: + case 17: + scat("\'Nadishahs Kleine Gift- und Kräuterkunde\'"); + skill = SK_HERBALISM; + break; + case 18: + case 19: + scat("\'Mandricks Kompendium der Alchemie\'"); + skill = SK_ALCHEMY; + break; + case 20: + case 21: + case 22: + case 23: + scat("\'Die Konstruktion der Burgen und Schlösser von Zentralandune\'"); + skill = SK_BUILDING; + break; + case 24: + case 25: + case 26: + case 27: + scat("\'Die Esse\'"); + skill = SK_ARMORER; + break; + case 28: + case 29: + case 30: + case 31: + scat("\'Über die Gewinnung von Erzen\'"); + skill = SK_MINING; + break; + case 32: + case 33: + case 34: + case 35: + scat("\'Barinions Lieder, eine Einführung für Unbedarfte\'"); + skill = SK_ENTERTAINMENT; + break; + } + + scat(". Der Wissensschub ist enorm."); + addmessage(r, u->faction, buf, MSG_EVENT, ML_IMPORTANT); - switch (rand() % 4) { - case 0: - scat("die Ruine eines alten Tempels"); - break; - case 1: - scat("eine alte Burgruine"); - break; - case 2: - scat("ein zerfallenes Bauernhaus"); - break; - case 3: - scat("eine Leiche am Wegesrand"); - break; - } - - scat(". Bei der Durchsuchung "); - if (u->number == 1) { - scat("stößt"); - } else { - scat("stoßen"); - } - scat(" sie auf das zerfledderte Exemplar eines alten Buches, betitelt "); - - switch (rand() % 36) { - case 0: - scat("\'Magie der Elemente\'"); - skill = SK_MAGIC; - break; - case 1: - case 2: - case 3: - case 4: - scat("\'Schwerter, Armbrüste, Langbögen\'"); - skill = SK_WEAPONSMITH; - break; - case 5: - case 6: - scat("\'Gorms Almanach der Rationellen Kriegsführung\'"); - skill = SK_TACTICS; - break; - case 7: - case 8: - case 9: - case 10: - scat("\'Katamarane, Koggen, Karavellen\'"); - skill = SK_SHIPBUILDING; - break; - case 11: - case 12: - case 13: - case 14: - scat("\'Wege der Sterne\'"); - skill = SK_SAILING; - break; - case 15: - case 16: - case 17: - scat("\'Nadishahs Kleine Gift- und Kräuterkunde\'"); - skill = SK_HERBALISM; - break; - case 18: - case 19: - scat("\'Mandricks Kompendium der Alchemie\'"); - skill = SK_ALCHEMY; - break; - case 20: - case 21: - case 22: - case 23: - scat("\'Die Konstruktion der Burgen und Schlösser von Zentralandune\'"); - skill = SK_BUILDING; - break; - case 24: - case 25: - case 26: - case 27: - scat("\'Die Esse\'"); - skill = SK_ARMORER; - break; - case 28: - case 29: - case 30: - case 31: - scat("\'Über die Gewinnung von Erzen\'"); - skill = SK_MINING; - break; - case 32: - case 33: - case 34: - case 35: - scat("\'Barinions Lieder, eine Einführung für Unbedarfte\'"); - skill = SK_ENTERTAINMENT; - break; - } - - scat(". Der Wissensschub ist enorm."); - addmessage(r, u->faction, buf, MSG_EVENT, ML_IMPORTANT); - - if (improve_all(u->faction, skill, 3) == 3) { - int i; - for (i=0;i!=9;++i) learn_skill(u, skill, 1.0); - } + if (improve_all(u->faction, skill, 3) == 3) { + int i; + for (i=0;i!=9;++i) learn_skill(u, skill, 1.0); + } } static void diff --git a/src/common/kernel/spell.c b/src/common/kernel/spell.c index ebf3ada1d..c0a1022b4 100644 --- a/src/common/kernel/spell.c +++ b/src/common/kernel/spell.c @@ -1348,7 +1348,7 @@ sp_rosthauch(castorder *co) for (;iweapon!=NULL;iweapon=iweapon->next) { item ** ip = i_find(&u->items, iweapon->type); - if (ip) { + if (*ip) { int i = min((*ip)->number, force); if (iweapon->chance<1.0) { i = (int)(i*iweapon->chance); @@ -1365,27 +1365,27 @@ sp_rosthauch(castorder *co) if (force<=0) break; } - if (ironweapon>0) { - /* {$mage mage} legt einen Rosthauch auf {target}. {amount} Waffen - * wurden vom Rost zerfressen */ - ADDMSG(&mage->faction->msgs, msg_message( - "rust_effect", "mage target amount", mage, u, ironweapon)); - ADDMSG(&u->faction->msgs, msg_message( - "rust_effect", "mage target amount", - cansee(u->faction, r, mage, 0) ? mage:NULL, u, ironweapon)); - success += ironweapon; - } else { - /* {$mage mage} legt einen Rosthauch auf {target}, doch der - * Rosthauch fand keine Nahrung */ - ADDMSG(&mage->faction->msgs, msg_message( - "rust_fail", "mage target", mage, u)); - } - } - /* in success stehen nun die insgesamt zerstörten Waffen. Im - * ungünstigsten Fall kann pro Stufe nur eine Waffe verzaubert werden, - * darum wird hier nur für alle Fälle in denen noch weniger Waffen - * betroffen wurden ein Kostennachlass gegeben */ - return min(success, cast_level); + if (ironweapon>0) { + /* {$mage mage} legt einen Rosthauch auf {target}. {amount} Waffen + * wurden vom Rost zerfressen */ + ADDMSG(&mage->faction->msgs, msg_message("rust_effect", + "mage target amount", mage, u, ironweapon)); + ADDMSG(&u->faction->msgs, msg_message("rust_effect", + "mage target amount", + cansee(u->faction, r, mage, 0) ? mage:NULL, u, ironweapon)); + success += ironweapon; + } else { + /* {$mage mage} legt einen Rosthauch auf {target}, doch der + * Rosthauch fand keine Nahrung */ + ADDMSG(&mage->faction->msgs, msg_message( + "rust_fail", "mage target", mage, u)); + } + } + /* in success stehen nun die insgesamt zerstörten Waffen. Im + * ungünstigsten Fall kann pro Stufe nur eine Waffe verzaubert werden, + * darum wird hier nur für alle Fälle in denen noch weniger Waffen + * betroffen wurden ein Kostennachlass gegeben */ + return min(success, cast_level); } diff --git a/src/common/modules/autoseed.c b/src/common/modules/autoseed.c index fd14e2710..ed493a5e5 100644 --- a/src/common/modules/autoseed.c +++ b/src/common/modules/autoseed.c @@ -408,7 +408,7 @@ get_island(region * root, region_list ** rlist) } } -int +static int island_size(region * r) { int size = 0; @@ -424,7 +424,11 @@ island_size(region * r) for (d=0;d!=MAXDIRECTIONS;++d) { region * rn = rconnect(r, d); if (rn && !fval(rn, FL_MARK) && rn->land) { - add_regionlist(&rlist->next, rn); + region_list * rnew = malloc(sizeof(region_list)); + rnew->data = rn; + rnew->next = rlist->next; + rlist->next = rnew; + fset(rn, FL_MARK); } } rlist = rlist->next; diff --git a/src/scripts/eressea.lua b/src/scripts/eressea.lua index 899150ced..313e2b6d7 100644 --- a/src/scripts/eressea.lua +++ b/src/scripts/eressea.lua @@ -8,7 +8,7 @@ end function change_locales() -- local localechange = { } - local localechange = { en = { "bLub" } } + local localechange = { de = { "2xwr" } } for loc, flist in localechange do for index, name in flist do