Englische Namen für alle Zauber.

Rassen-Spells in XML müssen keine ID mehr nutzen.
This commit is contained in:
Enno Rehling 2005-10-08 18:27:40 +00:00
parent fed680604a
commit c7c6f169cb
11 changed files with 403 additions and 123 deletions

View File

@ -497,8 +497,8 @@ get_combatspell(const unit *u, int nr)
m = get_mage(u); m = get_mage(u);
if (m) { if (m) {
return m->combatspells[nr].sp; return m->combatspells[nr].sp;
} else if (u->race->precombatspell != SPL_NOSPELL) { } else if (u->race->precombatspell != NULL) {
return find_spellbyid(u->race->precombatspell); return u->race->precombatspell;
} }
return NULL; return NULL;
@ -2755,10 +2755,7 @@ spell_info(const spell * sp, const struct locale * lang)
const char * const char *
spell_name(const spell * sp, const struct locale * lang) spell_name(const spell * sp, const struct locale * lang)
{ {
if (sp->info==NULL) { return LOC(lang, mkname("spell", sp->sname));
return LOC(lang, mkname("spell", sp->sname));
}
return sp->sname;
} }
void void

View File

@ -97,7 +97,7 @@ rc_new(const char * zName)
rc->_name[2] = strdup(zBuffer); rc->_name[2] = strdup(zBuffer);
sprintf(zBuffer, "%s_x", zName); sprintf(zBuffer, "%s_x", zName);
rc->_name[3] = strdup(zBuffer); rc->_name[3] = strdup(zBuffer);
rc->precombatspell = SPL_NOSPELL; rc->precombatspell = NULL;
return rc; return rc;
} }

View File

@ -74,7 +74,7 @@ typedef struct race {
char df_default; /* Verteidigungsskill Unbewaffnet (default: -2)*/ char df_default; /* Verteidigungsskill Unbewaffnet (default: -2)*/
char at_bonus; /* Verändert den Angriffsskill (default: 0)*/ char at_bonus; /* Verändert den Angriffsskill (default: 0)*/
char df_bonus; /* Verändert den Verteidigungskill (default: 0)*/ char df_bonus; /* Verändert den Verteidigungskill (default: 0)*/
spellid_t precombatspell; const spell * precombatspell;
struct att attack[10]; struct att attack[10];
char bonus[MAXSKILLS]; char bonus[MAXSKILLS];
boolean __remove_me_nonplayer; boolean __remove_me_nonplayer;

View File

@ -6730,24 +6730,6 @@ sp_stealaura(castorder *co)
return cast_level; return cast_level;
} }
/* ------------------------------------------------------------- */
/* Name: Erschaffe Antimagiekristall
* Stufe: 7
* Kategorie: Artefakt
* Wirkung:
* Erzeugt Antimagiekristall
*/
int
sp_create_antimagiccrystal(castorder *co)
{
unit *mage = (unit *)co->magician;
int cast_level = co->level;
change_item(mage,I_ANTIMAGICCRYSTAL,1);
creation_message(mage, olditemtype[I_ANTIMAGICCRYSTAL]);
return cast_level;
}
/* ------------------------------------------------------------- */ /* ------------------------------------------------------------- */
/* Name: Astrale Schwächezone /* Name: Astrale Schwächezone
* Stufe: 5 * Stufe: 5
@ -7492,6 +7474,11 @@ spell_list * spells = NULL;
void void
register_spell(spell * sp) register_spell(spell * sp)
{ {
#ifndef NDEBUG
const char * name = mkname("spell", sp->sname);
assert(name!=LOC(default_locale, name));
assert(strchr(sp->sname, ' ')==NULL);
#endif
if (sp->id==0) { if (sp->id==0) {
sp->id = hashstring(sp->sname); sp->id = hashstring(sp->sname);
} }
@ -7513,6 +7500,9 @@ find_spell(magic_t mtype, const char * name)
} }
slist = slist->next; slist = slist->next;
} }
if (spx==NULL) {
log_error(("cannot find spell by name: %s\n", name));
}
return spx; return spx;
} }
@ -7618,7 +7608,7 @@ find_spellbyid(spellid_t id)
spell* sp = slist->data; spell* sp = slist->data;
if (sp->id == id) return sp; if (sp->id == id) return sp;
} }
log_error(("cannot find spell by id: %u\n", id)); log_warning(("cannot find spell by id: %u\n", id));
return NULL; return NULL;
} }
@ -8063,7 +8053,7 @@ static spell spelldaten[] =
(spell_f)sp_fog_of_confusion, patzer (spell_f)sp_fog_of_confusion, patzer
}, },
{ {
SPL_MAELSTROM, "Mahlstrom", SPL_MAELSTROM, "maelstrom",
"Dieses Ritual beschört einen großen Wasserelementar aus den " "Dieses Ritual beschört einen großen Wasserelementar aus den "
"Tiefen des Ozeans. Der Elementar erzeugt einen gewaltigen " "Tiefen des Ozeans. Der Elementar erzeugt einen gewaltigen "
"Strudel, einen Mahlstrom, welcher alle Schiffe, die ihn passieren, " "Strudel, einen Mahlstrom, welcher alle Schiffe, die ihn passieren, "
@ -8081,7 +8071,7 @@ static spell spelldaten[] =
(spell_f)sp_maelstrom, patzer (spell_f)sp_maelstrom, patzer
}, },
{ {
SPL_MALLORN, "Wurzeln der Magie", SPL_MALLORN, "magic_roots",
"Mit Hilfe dieses aufwändigen Rituals läßt der Druide einen Teil seiner " "Mit Hilfe dieses aufwändigen Rituals läßt der Druide einen Teil seiner "
"dauerhaft in den Boden und die Wälder der Region fliessen. Dadurch wird " "dauerhaft in den Boden und die Wälder der Region fliessen. Dadurch wird "
"das Gleichgewicht der Natur in der Region für immer verändert, und in " "das Gleichgewicht der Natur in der Region für immer verändert, und in "
@ -8100,7 +8090,7 @@ static spell spelldaten[] =
(spell_f)sp_mallorn, patzer (spell_f)sp_mallorn, patzer
}, },
{ {
SPL_GREAT_DROUGHT, "Tor in die Ebene der Hitze", SPL_GREAT_DROUGHT, "great_drought",
"Dieses mächtige Ritual öffnet ein Tor in die Elementarebene der " "Dieses mächtige Ritual öffnet ein Tor in die Elementarebene der "
"Hitze. Eine grosse Dürre kommt über das Land. Bauern, Tiere und " "Hitze. Eine grosse Dürre kommt über das Land. Bauern, Tiere und "
"Pflanzen der Region kämpfen um das nackte Überleben, aber eine " "Pflanzen der Region kämpfen um das nackte Überleben, aber eine "
@ -8624,7 +8614,7 @@ static spell spelldaten[] =
(spell_f)sp_sleep, patzer (spell_f)sp_sleep, patzer
}, },
{ {
SPL_WISPS, "Irrlichter", SPL_WISPS, "wisps",
"Der Zauberer spricht eine Beschwörung über einen Teil der Region, " "Der Zauberer spricht eine Beschwörung über einen Teil der Region, "
"und in der Folgewoche entstehen dort Irrlichter. " "und in der Folgewoche entstehen dort Irrlichter. "
"Wer durch diese Nebel wandert, wird von Visionen geplagt und " "Wer durch diese Nebel wandert, wird von Visionen geplagt und "
@ -8700,7 +8690,7 @@ static spell spelldaten[] =
(spell_f)sp_summon_familiar, patzer (spell_f)sp_summon_familiar, patzer
}, },
{ {
SPL_CLONECOPY, "Seelenkopie", SPL_CLONECOPY, "clone",
"Dieser mächtige Zauber kann einen Magier vor dem sicheren Tod " "Dieser mächtige Zauber kann einen Magier vor dem sicheren Tod "
"bewahren. Der Magier erschafft anhand einer kleinen Blutprobe einen " "bewahren. Der Magier erschafft anhand einer kleinen Blutprobe einen "
"Klon von sich, und legt diesen in ein Bad aus Drachenblut und verdünntem " "Klon von sich, und legt diesen in ein Bad aus Drachenblut und verdünntem "
@ -8721,7 +8711,7 @@ static spell spelldaten[] =
(spell_f)sp_clonecopy, patzer (spell_f)sp_clonecopy, patzer
}, },
{ {
SPL_BADDREAMS, "Schlechte Träume", SPL_BADDREAMS, "bad_dreams",
"Dieser Zauber ermöglicht es dem Träumer, den Schlaf aller nichtaliierten " "Dieser Zauber ermöglicht es dem Träumer, den Schlaf aller nichtaliierten "
"Einheiten (HELFE BEWACHE) in der Region so stark zu stören, das sie " "Einheiten (HELFE BEWACHE) in der Region so stark zu stören, das sie "
"vorübergehend einen Teil ihrer Erinnerungen verlieren.", NULL, NULL, "vorübergehend einen Teil ihrer Erinnerungen verlieren.", NULL, NULL,
@ -8966,7 +8956,7 @@ static spell spelldaten[] =
}, },
(spell_f)sp_fumbleshield, patzer (spell_f)sp_fumbleshield, patzer
}, },
{ SPL_CALM_MONSTER, "Monster friedlich stimmen", { SPL_CALM_MONSTER, "calm_monster",
"Dieser einschmeichelnde Gesang kann fast jedes intelligente Monster " "Dieser einschmeichelnde Gesang kann fast jedes intelligente Monster "
"zähmen. Es wird von Angriffen auf den Magier absehen und auch seine " "zähmen. Es wird von Angriffen auf den Magier absehen und auch seine "
"Begleiter nicht anrühren. Doch sollte man sich nicht täuschen, es " "Begleiter nicht anrühren. Doch sollte man sich nicht täuschen, es "
@ -8984,7 +8974,7 @@ static spell spelldaten[] =
}, },
(spell_f)sp_calm_monster, patzer (spell_f)sp_calm_monster, patzer
}, },
{ SPL_SEDUCE, "Lied der Verführung", { SPL_SEDUCE, "seduction",
"Mit diesem Lied kann eine Einheit derartig betört werden, so dass " "Mit diesem Lied kann eine Einheit derartig betört werden, so dass "
"sie dem Barden den größten Teil ihres Bargelds und ihres Besitzes " "sie dem Barden den größten Teil ihres Bargelds und ihres Besitzes "
"schenkt. Sie behält jedoch immer soviel, wie sie zum Überleben " "schenkt. Sie behält jedoch immer soviel, wie sie zum Überleben "
@ -9003,7 +8993,7 @@ static spell spelldaten[] =
(spell_f)sp_seduce, patzer (spell_f)sp_seduce, patzer
}, },
{ {
SPL_HEADACHE, "Schaler Wein", SPL_HEADACHE, "headache",
"Aufzeichung des Vortrags von Selen Ard'Ragorn in Bar'Glingal: " "Aufzeichung des Vortrags von Selen Ard'Ragorn in Bar'Glingal: "
"'Es heiss, dieser Spruch wäre wohl in den Spelunken der Westgassen " "'Es heiss, dieser Spruch wäre wohl in den Spelunken der Westgassen "
"entstanden, doch es kann genausogut in jedem andern verrufenen " "entstanden, doch es kann genausogut in jedem andern verrufenen "
@ -9045,7 +9035,7 @@ static spell spelldaten[] =
}, },
(spell_f)sp_headache, patzer (spell_f)sp_headache, patzer
}, },
{ SPL_PUMP, "Aushorchen", { SPL_PUMP, "sound_out",
"Erliegt die Einheit dem Zauber, so wird sie dem Magier alles erzählen, " "Erliegt die Einheit dem Zauber, so wird sie dem Magier alles erzählen, "
"was sie über die gefragte Region weiß. Ist in der Region niemand " "was sie über die gefragte Region weiß. Ist in der Region niemand "
"ihrer Partei, so weiß sie nichts zu berichten. Auch kann sie nur das " "ihrer Partei, so weiß sie nichts zu berichten. Auch kann sie nur das "
@ -9063,7 +9053,7 @@ static spell spelldaten[] =
(spell_f)sp_pump, patzer (spell_f)sp_pump, patzer
}, },
{ {
SPL_BLOODTHIRST, "Kriegsgesang", SPL_BLOODTHIRST, "bloodthirst",
"Wie viele magischen Gesänge, so entstammt auch dieser den altem " "Wie viele magischen Gesänge, so entstammt auch dieser den altem "
"Wissen der Katzen, die schon immer um die machtvolle Wirkung der " "Wissen der Katzen, die schon immer um die machtvolle Wirkung der "
"Stimme wussten. Mit diesem Lied wird die Stimmung der Krieger " "Stimme wussten. Mit diesem Lied wird die Stimmung der Krieger "
@ -9082,7 +9072,7 @@ static spell spelldaten[] =
(spell_f)sp_berserk, patzer (spell_f)sp_berserk, patzer
}, },
{ {
SPL_FRIGHTEN, "Gesang der Angst", SPL_FRIGHTEN, "frighten",
"Dieser Kriegsgesang sät Panik in der Front der Gegner und schwächt " "Dieser Kriegsgesang sät Panik in der Front der Gegner und schwächt "
"so ihre Kampfkraft erheblich. Angst wird ihren Schwertarm schwächen " "so ihre Kampfkraft erheblich. Angst wird ihren Schwertarm schwächen "
"und Furcht ihren Schildarm lähmen.", NULL, NULL, "und Furcht ihren Schildarm lähmen.", NULL, NULL,
@ -9097,7 +9087,7 @@ static spell spelldaten[] =
(spell_f)sp_frighten, patzer (spell_f)sp_frighten, patzer
}, },
{ {
SPL_OBJ_ANALYSESONG, "Lied des Ortes analysieren", SPL_OBJ_ANALYSESONG, "analyse_object",
"Wie Lebewesen, so haben auch Schiffe und Gebäude und sogar Regionen " "Wie Lebewesen, so haben auch Schiffe und Gebäude und sogar Regionen "
"ihr eigenes Lied, wenn auch viel schwächer und schwerer zu hören. " "ihr eigenes Lied, wenn auch viel schwächer und schwerer zu hören. "
"Und so, wie wie aus dem Lebenslied einer Person erkannt werden kann, " "Und so, wie wie aus dem Lebenslied einer Person erkannt werden kann, "
@ -9118,7 +9108,7 @@ static spell spelldaten[] =
(spell_f)sp_analysesong_obj, patzer (spell_f)sp_analysesong_obj, patzer
}, },
{ {
SPL_CERDDOR_DESTROY_MAGIC, "Lebenslied festigen", SPL_CERDDOR_DESTROY_MAGIC, "cerddor_destroymagic",
"Jede Verzauberung beeinflußt das Lebenslied, schwächt und verzerrt es. " "Jede Verzauberung beeinflußt das Lebenslied, schwächt und verzerrt es. "
"Der kundige Barde kann versuchen, das Lebenslied aufzufangen und zu " "Der kundige Barde kann versuchen, das Lebenslied aufzufangen und zu "
"verstärken und die Veränderungen aus dem Lied zu tilgen.", "verstärken und die Veränderungen aus dem Lied zu tilgen.",
@ -9140,7 +9130,7 @@ static spell spelldaten[] =
(spell_f)sp_destroy_magic, patzer (spell_f)sp_destroy_magic, patzer
}, },
{ {
SPL_MIGRANT, "Ritual der Aufnahme", SPL_MIGRANT, "migration",
"Dieses Ritual ermöglicht es, eine Einheit, egal welcher Art, in die " "Dieses Ritual ermöglicht es, eine Einheit, egal welcher Art, in die "
"eigene Partei aufzunehmen. Der um Aufnahme Bittende muss dazu willig " "eigene Partei aufzunehmen. Der um Aufnahme Bittende muss dazu willig "
"und bereit sein, seiner alten Partei abzuschwören. Dies bezeugt er " "und bereit sein, seiner alten Partei abzuschwören. Dies bezeugt er "
@ -9164,7 +9154,7 @@ static spell spelldaten[] =
(spell_f)sp_migranten, patzer (spell_f)sp_migranten, patzer
}, },
{ {
SPL_CERDDOR_FAMILIAR, "Vertrauten rufen", SPL_CERDDOR_FAMILIAR, "summon_familiar",
"Einem erfahrenen Magier wird irgendwann auf seinen Wanderungen ein " "Einem erfahrenen Magier wird irgendwann auf seinen Wanderungen ein "
"ungewöhnliches Exemplar einer Gattung begegnen, welches sich dem " "ungewöhnliches Exemplar einer Gattung begegnen, welches sich dem "
"Magier anschließen wird.", NULL, NULL, "Magier anschließen wird.", NULL, NULL,
@ -9179,7 +9169,7 @@ static spell spelldaten[] =
(spell_f)sp_summon_familiar, patzer (spell_f)sp_summon_familiar, patzer
}, },
{ {
SPL_RAISEPEASANTS, "Mob aufwiegeln", SPL_RAISEPEASANTS, "raise_mob",
"Mit Hilfe dieses magischen Gesangs überzeugt der Magier die Bauern " "Mit Hilfe dieses magischen Gesangs überzeugt der Magier die Bauern "
"der Region, sich ihm anzuschließen. Die Bauern werden ihre Heimat jedoch " "der Region, sich ihm anzuschließen. Die Bauern werden ihre Heimat jedoch "
"nicht verlassen, und keine ihrer Besitztümer fortgeben. Jede Woche " "nicht verlassen, und keine ihrer Besitztümer fortgeben. Jede Woche "
@ -9197,7 +9187,7 @@ static spell spelldaten[] =
(spell_f)sp_raisepeasants, patzer (spell_f)sp_raisepeasants, patzer
}, },
{ {
SPL_SONG_RESISTMAGIC, "Gesang des wachen Geistes", SPL_SONG_RESISTMAGIC, "song_resist_magic",
"Dieses magische Lied wird, einmal mit Inbrunst gesungen, sich in der " "Dieses magische Lied wird, einmal mit Inbrunst gesungen, sich in der "
"Region fortpflanzen, von Mund zu Mund springen und eine Zeitlang " "Region fortpflanzen, von Mund zu Mund springen und eine Zeitlang "
"überall zu vernehmen sein. Nach wie vielen Wochen der Gesang aus dem " "überall zu vernehmen sein. Nach wie vielen Wochen der Gesang aus dem "
@ -9220,7 +9210,7 @@ static spell spelldaten[] =
(spell_f)sp_song_resistmagic, patzer (spell_f)sp_song_resistmagic, patzer
}, },
{ {
SPL_DEPRESSION, "Gesang der Melancholie", SPL_DEPRESSION, "melancholy",
"Mit diesem Gesang verbreitet der Barde eine melancholische, traurige " "Mit diesem Gesang verbreitet der Barde eine melancholische, traurige "
"Stimmung unter den Bauern. Einige Wochen lang werden sie sich in ihre " "Stimmung unter den Bauern. Einige Wochen lang werden sie sich in ihre "
"Hütten zurückziehen und kein Silber in den Theatern und Tavernen lassen.", NULL, NULL, "Hütten zurückziehen und kein Silber in den Theatern und Tavernen lassen.", NULL, NULL,
@ -9235,7 +9225,7 @@ static spell spelldaten[] =
(spell_f)sp_depression, patzer (spell_f)sp_depression, patzer
}, },
{ {
SPL_SONG_SUSCEPTMAGIC, "Gesang des schwachen Geistes", SPL_SONG_SUSCEPTMAGIC, "song_suscept_magic",
"Dieses Lied, das in die magische Essenz der Region gewoben wird, " "Dieses Lied, das in die magische Essenz der Region gewoben wird, "
"schwächt die natürliche Widerstandskraft gegen eine " "schwächt die natürliche Widerstandskraft gegen eine "
"Verzauberung einmalig um 15%. Nur die Verbündeten des Barden " "Verzauberung einmalig um 15%. Nur die Verbündeten des Barden "
@ -9253,7 +9243,7 @@ static spell spelldaten[] =
(spell_f)sp_song_susceptmagic, patzer (spell_f)sp_song_susceptmagic, patzer
}, },
{ {
SPL_SONG_OF_PEACE, "Gesang der Friedfertigkeit", SPL_SONG_OF_PEACE, "song_of_peace",
"Dieser mächtige Bann verhindert jegliche Attacken. Niemand in der " "Dieser mächtige Bann verhindert jegliche Attacken. Niemand in der "
"ganzen Region ist fähig seine Waffe gegen irgendjemanden zu erheben. " "ganzen Region ist fähig seine Waffe gegen irgendjemanden zu erheben. "
"Die Wirkung kann etliche Wochen andauern", NULL, NULL, "Die Wirkung kann etliche Wochen andauern", NULL, NULL,
@ -9268,7 +9258,7 @@ static spell spelldaten[] =
(spell_f)sp_song_of_peace, patzer (spell_f)sp_song_of_peace, patzer
}, },
{ {
SPL_SONG_OF_ENSLAVE, "Gesang der Versklavung", SPL_SONG_OF_ENSLAVE, "song_of_slavery",
"Dieser mächtige Bann raubt dem Opfer seinen freien Willen und " "Dieser mächtige Bann raubt dem Opfer seinen freien Willen und "
"unterwirft sie den Befehlen des Barden. Für einige Zeit wird das Opfer " "unterwirft sie den Befehlen des Barden. Für einige Zeit wird das Opfer "
"sich völlig von seinen eigenen Leuten abwenden und der Partei des Barden " "sich völlig von seinen eigenen Leuten abwenden und der Partei des Barden "
@ -9285,7 +9275,7 @@ static spell spelldaten[] =
(spell_f)sp_charmingsong, patzer (spell_f)sp_charmingsong, patzer
}, },
{ {
SPL_BIGRECRUIT, "Hohe Kunst der Überzeugung", SPL_BIGRECRUIT, "big_recruit",
"Aus 'Wanderungen' von Firudin dem Weisen: " "Aus 'Wanderungen' von Firudin dem Weisen: "
"'In Weilersweide, nahe dem Wytharhafen, liegt ein kleiner Gasthof, der " "'In Weilersweide, nahe dem Wytharhafen, liegt ein kleiner Gasthof, der "
"nur wenig besucht ist. Niemanden bekannt ist, das dieser Hof " "nur wenig besucht ist. Niemanden bekannt ist, das dieser Hof "
@ -9305,7 +9295,7 @@ static spell spelldaten[] =
(spell_f)sp_bigrecruit, patzer (spell_f)sp_bigrecruit, patzer
}, },
{ {
SPL_RALLYPEASANTMOB, "Aufruhr beschwichtigen", SPL_RALLYPEASANTMOB, "calm_riot",
"Mit Hilfe dieses magischen Gesangs kann der Magier eine Region in " "Mit Hilfe dieses magischen Gesangs kann der Magier eine Region in "
"Aufruhr wieder beruhigen. Die Bauernhorden werden sich verlaufen " "Aufruhr wieder beruhigen. Die Bauernhorden werden sich verlaufen "
"und wieder auf ihre Felder zurückkehren.", NULL, NULL, "und wieder auf ihre Felder zurückkehren.", NULL, NULL,
@ -9320,7 +9310,7 @@ static spell spelldaten[] =
(spell_f)sp_rallypeasantmob, patzer (spell_f)sp_rallypeasantmob, patzer
}, },
{ {
SPL_RAISEPEASANTMOB, "Aufruhr verursachen", SPL_RAISEPEASANTMOB, "incite_riot",
"Mit Hilfe dieses magischen Gesangs versetzt der Magier eine ganze " "Mit Hilfe dieses magischen Gesangs versetzt der Magier eine ganze "
"Region in Aufruhr. Rebellierende Bauernhorden machen jedes Besteuern " "Region in Aufruhr. Rebellierende Bauernhorden machen jedes Besteuern "
"unmöglich, kaum jemand wird mehr für Gaukeleien Geld spenden und " "unmöglich, kaum jemand wird mehr für Gaukeleien Geld spenden und "
@ -9393,7 +9383,7 @@ static spell spelldaten[] =
}, },
#ifdef SHOWASTRAL_NOT_BORKED #ifdef SHOWASTRAL_NOT_BORKED
{ {
SPL_SHOWASTRAL, "Astraler Blick", SPL_SHOWASTRAL, "show_astral",
"Der Magier kann kurzzeitig in die Astralebene blicken und erfährt " "Der Magier kann kurzzeitig in die Astralebene blicken und erfährt "
"so alle Einheiten innerhalb eines astralen Radius von Stufe/5 Regionen.", NULL, NULL, "so alle Einheiten innerhalb eines astralen Radius von Stufe/5 Regionen.", NULL, NULL,
M_ASTRAL, (SPELLLEVEL), 5, 2, M_ASTRAL, (SPELLLEVEL), 5, 2,
@ -9408,7 +9398,7 @@ static spell spelldaten[] =
}, },
#endif #endif
{ {
SPL_RESISTMAGICBONUS, "Schutzzauber", SPL_RESISTMAGICBONUS, "resist_magic",
"Dieser Zauber verstärkt die natürliche Widerstandskraft gegen Magie. " "Dieser Zauber verstärkt die natürliche Widerstandskraft gegen Magie. "
"Eine so geschützte Einheit ist auch gegen Kampfmagie weniger " "Eine so geschützte Einheit ist auch gegen Kampfmagie weniger "
"empfindlich. Pro Stufe reicht die Kraft des Magiers aus, um 5 Personen " "empfindlich. Pro Stufe reicht die Kraft des Magiers aus, um 5 Personen "
@ -9439,7 +9429,7 @@ static spell spelldaten[] =
(spell_f)sp_keeploot, patzer (spell_f)sp_keeploot, patzer
}, },
{ {
SPL_ENTERASTRAL, "Astraler Weg", SPL_ENTERASTRAL, "enterastral",
"Alte arkane Formeln ermöglichen es dem Magier, sich und andere in die " "Alte arkane Formeln ermöglichen es dem Magier, sich und andere in die "
"astrale Ebene zu schicken. Der Magier kann (Stufe-3)*15 GE durch das " "astrale Ebene zu schicken. Der Magier kann (Stufe-3)*15 GE durch das "
"kurzzeitig entstehende Tor schicken. Ist der Magier erfahren genug, " "kurzzeitig entstehende Tor schicken. Ist der Magier erfahren genug, "
@ -9457,7 +9447,7 @@ static spell spelldaten[] =
(spell_f)sp_enterastral, patzer (spell_f)sp_enterastral, patzer
}, },
{ {
SPL_LEAVEASTRAL, "Astraler Ausgang", SPL_LEAVEASTRAL, "leaveastral",
"Der Magier konzentriert sich auf die Struktur der Realität und kann " "Der Magier konzentriert sich auf die Struktur der Realität und kann "
"so die astrale Ebene verlassen. Er kann insgesamt (Stufe-3)*15 GE durch " "so die astrale Ebene verlassen. Er kann insgesamt (Stufe-3)*15 GE durch "
"das kurzzeitig entstehende Tor schicken. Ist der Magier erfahren genug, " "das kurzzeitig entstehende Tor schicken. Ist der Magier erfahren genug, "
@ -9477,7 +9467,7 @@ static spell spelldaten[] =
(spell_f)sp_leaveastral, patzer (spell_f)sp_leaveastral, patzer
}, },
{ {
SPL_TRANSFERAURA_ASTRAL, "Auratransfer", SPL_TRANSFERAURA_ASTRAL, "auratransfer",
"Mit Hilfe dieses Zauber kann der Magier eigene Aura im Verhältnis " "Mit Hilfe dieses Zauber kann der Magier eigene Aura im Verhältnis "
"2:1 auf einen anderen Magier des gleichen Magiegebietes oder im " "2:1 auf einen anderen Magier des gleichen Magiegebietes oder im "
"Verhältnis 3:1 auf einen Magier eines anderen Magiegebietes " "Verhältnis 3:1 auf einen Magier eines anderen Magiegebietes "
@ -9495,7 +9485,7 @@ static spell spelldaten[] =
(spell_f)sp_transferaura, patzer (spell_f)sp_transferaura, patzer
}, },
{ {
SPL_SHOCKWAVE, "Schockwelle", SPL_SHOCKWAVE, "shockwave",
"Dieser Zauber läßt eine Welle aus purer Kraft über die " "Dieser Zauber läßt eine Welle aus purer Kraft über die "
"gegnerischen Reihen hinwegfegen. Viele Kämpfer wird der Schock " "gegnerischen Reihen hinwegfegen. Viele Kämpfer wird der Schock "
"so benommen machen, daß sie für einen kurzen Moment nicht angreifen " "so benommen machen, daß sie für einen kurzen Moment nicht angreifen "
@ -9511,7 +9501,7 @@ static spell spelldaten[] =
(spell_f)sp_stun, patzer (spell_f)sp_stun, patzer
}, },
{ {
SPL_ANTIMAGICZONE, "Astrale Schwächezone", SPL_ANTIMAGICZONE, "antimagiczone",
"Mit diesem Zauber kann der Magier eine Zone der astralen Schwächung " "Mit diesem Zauber kann der Magier eine Zone der astralen Schwächung "
"erzeugen, ein lokales Ungleichgewicht im Astralen Feld. Dieses " "erzeugen, ein lokales Ungleichgewicht im Astralen Feld. Dieses "
"Zone wird bestrebt sein, wieder in den Gleichgewichtszustand " "Zone wird bestrebt sein, wieder in den Gleichgewichtszustand "
@ -9530,7 +9520,7 @@ static spell spelldaten[] =
(spell_f)sp_antimagiczone, patzer (spell_f)sp_antimagiczone, patzer
}, },
{ {
SPL_TYBIED_DESTROY_MAGIC, "Magiefresser", SPL_TYBIED_DESTROY_MAGIC, "destroy_magic",
"Dieser Zauber ermöglicht dem Magier, Verzauberungen einer Einheit, " "Dieser Zauber ermöglicht dem Magier, Verzauberungen einer Einheit, "
"eines Schiffes, Gebäudes oder auch der Region aufzulösen.", "eines Schiffes, Gebäudes oder auch der Region aufzulösen.",
"ZAUBERE [REGION x y] [STUFE n] \'Magiefresser\' REGION\n" "ZAUBERE [REGION x y] [STUFE n] \'Magiefresser\' REGION\n"
@ -9551,7 +9541,7 @@ static spell spelldaten[] =
(spell_f)sp_destroy_magic, patzer (spell_f)sp_destroy_magic, patzer
}, },
{ {
SPL_PULLASTRAL, "Astraler Ruf", SPL_PULLASTRAL, "pull_astral",
"Ein Magier, der sich in der astralen Ebene befindet, kann mit Hilfe " "Ein Magier, der sich in der astralen Ebene befindet, kann mit Hilfe "
"dieses Zaubers andere Einheiten zu sich holen. Der Magier kann " "dieses Zaubers andere Einheiten zu sich holen. Der Magier kann "
"(Stufe-3)*15 GE durch das kurzzeitig entstehende Tor schicken. Ist der " "(Stufe-3)*15 GE durch das kurzzeitig entstehende Tor schicken. Ist der "
@ -9573,7 +9563,7 @@ static spell spelldaten[] =
}, },
{ {
SPL_FETCHASTRAL, "Ruf der Realität", SPL_FETCHASTRAL, "fetch_astral",
"Ein Magier, welcher sich in der materiellen Welt befindet, kann er mit " "Ein Magier, welcher sich in der materiellen Welt befindet, kann er mit "
"Hilfe dieses Zaubers Einheiten aus der angrenzenden Astralwelt herbeiholen. " "Hilfe dieses Zaubers Einheiten aus der angrenzenden Astralwelt herbeiholen. "
"Ist der Magier erfahren genug, den Zauber auf Stufen von 13 oder mehr zu " "Ist der Magier erfahren genug, den Zauber auf Stufen von 13 oder mehr zu "
@ -9591,7 +9581,7 @@ static spell spelldaten[] =
(spell_f)sp_fetchastral, patzer (spell_f)sp_fetchastral, patzer
}, },
{ {
SPL_STEALAURA, "Stehle Aura", SPL_STEALAURA, "steal_aura",
"Mit Hilfe dieses Zaubers kann der Magier einem anderen Magier seine " "Mit Hilfe dieses Zaubers kann der Magier einem anderen Magier seine "
"Aura gegen dessen Willen entziehen und sich selber zuführen.", NULL, "Aura gegen dessen Willen entziehen und sich selber zuführen.", NULL,
"u", "u",
@ -9608,7 +9598,7 @@ static spell spelldaten[] =
(spell_f)sp_stealaura, patzer (spell_f)sp_stealaura, patzer
}, },
{ {
SPL_FLYING_SHIP, "Luftschiff", SPL_FLYING_SHIP, "airship",
"Diese magischen Runen bringen ein Boot oder Langboot für eine Woche " "Diese magischen Runen bringen ein Boot oder Langboot für eine Woche "
"zum fliegen. Damit kann dann auch Land überquert werden. Die Zuladung " "zum fliegen. Damit kann dann auch Land überquert werden. Die Zuladung "
"von Langbooten ist unter der Einwirkung dieses Zaubers auf 100 " "von Langbooten ist unter der Einwirkung dieses Zaubers auf 100 "
@ -9626,25 +9616,7 @@ static spell spelldaten[] =
(spell_f)sp_flying_ship, patzer (spell_f)sp_flying_ship, patzer
}, },
{ {
SPL_CREATE_ANTIMAGICCRYSTAL, "Erschaffe Antimagiekristall", SPL_DESTROY_MAGIC, "break_curse",
"Mit Hilfe dieses Zauber entzieht der Magier einem Quarzkristall "
"all seine magischen Energien. Der Kristall wird dann, wenn er zu "
"feinem Staub zermahlen und verteilt wird, die beim Zaubern "
"freigesetzten magischen Energien aufsaugen und alle Zauber, "
"welche in der betreffenden Woche in der Region gezaubert werden "
"fehlschlagen lassen.", NULL, NULL,
M_ASTRAL, (ONSHIPCAST), 5, 7,
{
{ R_AURA, 50, SPC_FIX },
{ R_SILVER, 3000, SPC_FIX },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 }
},
(spell_f)sp_create_antimagiccrystal, patzer_createitem
},
{
SPL_DESTROY_MAGIC, "Fluch brechen",
"Dieser Zauber ermöglicht dem Magier, gezielt eine bestimmte " "Dieser Zauber ermöglicht dem Magier, gezielt eine bestimmte "
"Verzauberung einer Einheit, eines Schiffes, Gebäudes oder auch " "Verzauberung einer Einheit, eines Schiffes, Gebäudes oder auch "
"der Region aufzulösen.", "der Region aufzulösen.",
@ -9664,7 +9636,7 @@ static spell spelldaten[] =
(spell_f)sp_destroy_curse, patzer (spell_f)sp_destroy_curse, patzer
}, },
{ {
SPL_ETERNIZEWALL, "Mauern der Ewigkeit", SPL_ETERNIZEWALL, "eternal_walls",
"Mit dieser Formel bindet der Magier auf ewig die Kräfte der Erde in " "Mit dieser Formel bindet der Magier auf ewig die Kräfte der Erde in "
"die Mauern des Gebäudes. Ein solchermaßen verzaubertes Gebäude ist " "die Mauern des Gebäudes. Ein solchermaßen verzaubertes Gebäude ist "
"gegen den Zahn der Zeit geschützt und benötigt keinen " "gegen den Zahn der Zeit geschützt und benötigt keinen "
@ -9684,7 +9656,7 @@ static spell spelldaten[] =
(spell_f)sp_eternizewall, patzer (spell_f)sp_eternizewall, patzer
}, },
{ {
SPL_SCHILDRUNEN, "Runen des Schutzes", SPL_SCHILDRUNEN, "protective_runes",
"Zeichnet man diese Runen auf die Wände eines Gebäudes oder auf die " "Zeichnet man diese Runen auf die Wände eines Gebäudes oder auf die "
"Planken eines Schiffes, so wird es schwerer durch Zauber zu " "Planken eines Schiffes, so wird es schwerer durch Zauber zu "
"beeinflussen sein. Jedes Ritual erhöht die Widerstandskraft des " "beeinflussen sein. Jedes Ritual erhöht die Widerstandskraft des "
@ -9708,7 +9680,7 @@ static spell spelldaten[] =
}, },
{ {
SPL_REDUCESHIELD, "Schild des Fisches", SPL_REDUCESHIELD, "fish_shield",
"Dieser Zauber vermag dem Gegner ein geringfügig versetztes Bild der " "Dieser Zauber vermag dem Gegner ein geringfügig versetztes Bild der "
"eigenen Truppen vorzuspiegeln, so wie der Fisch im Wasser auch nicht " "eigenen Truppen vorzuspiegeln, so wie der Fisch im Wasser auch nicht "
"dort ist wo er zu sein scheint. Von jedem Treffer kann so die Hälfte " "dort ist wo er zu sein scheint. Von jedem Treffer kann so die Hälfte "
@ -9726,7 +9698,7 @@ static spell spelldaten[] =
(spell_f)sp_reduceshield, patzer (spell_f)sp_reduceshield, patzer
}, },
{ {
SPL_SPEED, "Beschleunigung", SPL_SPEED, "combat_speed",
"Dieser Zauber beschleunigt einige Kämpfer auf der eigenen Seite " "Dieser Zauber beschleunigt einige Kämpfer auf der eigenen Seite "
"so, dass sie während des gesamten Kampfes in einer Kampfrunde zweimal " "so, dass sie während des gesamten Kampfes in einer Kampfrunde zweimal "
"angreifen können.", NULL, NULL, "angreifen können.", NULL, NULL,
@ -9741,7 +9713,7 @@ static spell spelldaten[] =
(spell_f)sp_speed, patzer (spell_f)sp_speed, patzer
}, },
{ {
SPL_ARTEFAKT_OF_POWER, "Erschaffe einen Ring der Macht", SPL_ARTEFAKT_OF_POWER, "create_rop",
"Dieses mächtige Ritual erschafft einen Ring der Macht. Ein Ring " "Dieses mächtige Ritual erschafft einen Ring der Macht. Ein Ring "
"der Macht erhöht die Stärke jedes Zaubers, den sein Träger zaubert, " "der Macht erhöht die Stärke jedes Zaubers, den sein Träger zaubert, "
"als wäre der Magier eine Stufe besser.", NULL, NULL, "als wäre der Magier eine Stufe besser.", NULL, NULL,
@ -9756,7 +9728,7 @@ static spell spelldaten[] =
(spell_f)sp_createitem_power, patzer_createitem (spell_f)sp_createitem_power, patzer_createitem
}, },
{ {
SPL_VIEWREALITY, "Blick in die Realität", SPL_VIEWREALITY, "view_reality",
"Der Magier kann mit Hilfe dieses Zaubers aus der Astral- in die " "Der Magier kann mit Hilfe dieses Zaubers aus der Astral- in die "
"materielle Ebene blicken und die Regionen und Einheiten genau " "materielle Ebene blicken und die Regionen und Einheiten genau "
"erkennen.", NULL, NULL, "erkennen.", NULL, NULL,
@ -9771,7 +9743,7 @@ static spell spelldaten[] =
(spell_f)sp_viewreality, patzer (spell_f)sp_viewreality, patzer
}, },
{ {
SPL_BAG_OF_HOLDING, "Erschaffe einen Beutel des Negativen Gewichts", SPL_BAG_OF_HOLDING, "create_bagofholding",
"Dieser Beutel umschließt eine kleine Dimensionsfalte, in der bis " "Dieser Beutel umschließt eine kleine Dimensionsfalte, in der bis "
"zu 200 Gewichtseinheiten transportiert werden können, ohne dass " "zu 200 Gewichtseinheiten transportiert werden können, ohne dass "
"sie auf das Traggewicht angerechnet werden. Pferde und andere " "sie auf das Traggewicht angerechnet werden. Pferde und andere "
@ -9790,7 +9762,7 @@ static spell spelldaten[] =
(spell_f)sp_create_bag_of_holding, patzer (spell_f)sp_create_bag_of_holding, patzer
}, },
{ {
SPL_SPEED2, "Zeitdehnung", SPL_SPEED2, "double_time",
"Diese praktische Anwendung des theoretischen Wissens um Raum und Zeit " "Diese praktische Anwendung des theoretischen Wissens um Raum und Zeit "
"ermöglicht es, den Zeitfluß für einige Personen zu verändern. Auf " "ermöglicht es, den Zeitfluß für einige Personen zu verändern. Auf "
"diese Weise veränderte Personen bekommen für einige Wochen doppelt " "diese Weise veränderte Personen bekommen für einige Wochen doppelt "
@ -9807,7 +9779,7 @@ static spell spelldaten[] =
(spell_f)sp_speed2, patzer (spell_f)sp_speed2, patzer
}, },
{ {
SPL_ARMORSHIELD, "Rüstschild", SPL_ARMORSHIELD, "armor_shield",
"Diese vor dem Kampf zu zaubernde Ritual gibt den eigenen Truppen " "Diese vor dem Kampf zu zaubernde Ritual gibt den eigenen Truppen "
"einen zusätzlichen Bonus auf ihre Rüstung. Jeder Treffer " "einen zusätzlichen Bonus auf ihre Rüstung. Jeder Treffer "
"reduziert die Kraft des Zaubers, so dass der Schild sich irgendwann " "reduziert die Kraft des Zaubers, so dass der Schild sich irgendwann "
@ -9823,7 +9795,7 @@ static spell spelldaten[] =
(spell_f)sp_armorshield, patzer (spell_f)sp_armorshield, patzer
}, },
{ {
SPL_TYBIED_FAMILIAR, "Vertrauten rufen", SPL_TYBIED_FAMILIAR, "summon_familiar",
"Einem erfahrenen Magier wird irgendwann auf seinen Wanderungen ein " "Einem erfahrenen Magier wird irgendwann auf seinen Wanderungen ein "
"ungewöhnliches Exemplar einer Gattung begegnen, welches sich dem " "ungewöhnliches Exemplar einer Gattung begegnen, welches sich dem "
"Magier anschließen wird.", NULL, NULL, "Magier anschließen wird.", NULL, NULL,
@ -9838,7 +9810,7 @@ static spell spelldaten[] =
(spell_f)sp_summon_familiar, patzer (spell_f)sp_summon_familiar, patzer
}, },
{ {
SPL_MOVECASTLE, "Belebtes Gestein", SPL_MOVECASTLE, "living_rock",
"Dieses kräftezehrende Ritual beschwört mit Hilfe einer Kugel aus " "Dieses kräftezehrende Ritual beschwört mit Hilfe einer Kugel aus "
"konzentriertem Laen einen gewaltigen Erdelementar und bannt ihn " "konzentriertem Laen einen gewaltigen Erdelementar und bannt ihn "
"in ein Gebäude. Dem Elementar kann dann befohlen werden, das " "in ein Gebäude. Dem Elementar kann dann befohlen werden, das "
@ -9862,7 +9834,7 @@ static spell spelldaten[] =
(spell_f)sp_movecastle, patzer (spell_f)sp_movecastle, patzer
}, },
{ {
SPL_DISRUPTASTRAL, "Störe Astrale Integrität", SPL_DISRUPTASTRAL, "astral_disruption",
"Dieser Zauber bewirkt eine schwere Störung des Astralraums. Innerhalb " "Dieser Zauber bewirkt eine schwere Störung des Astralraums. Innerhalb "
"eines astralen Radius von Stufe/5 Regionen werden alle Astralwesen, " "eines astralen Radius von Stufe/5 Regionen werden alle Astralwesen, "
"die dem Zauber nicht wiederstehen können, aus der astralen Ebene " "die dem Zauber nicht wiederstehen können, aus der astralen Ebene "
@ -9879,7 +9851,7 @@ static spell spelldaten[] =
(spell_f)sp_disruptastral, patzer (spell_f)sp_disruptastral, patzer
}, },
{ {
SPL_PERMTRANSFER, "Opfere Kraft", SPL_PERMTRANSFER, "sacrifice_strength",
"Mit Hilfe dieses Zaubers kann der Magier einen Teil seiner magischen " "Mit Hilfe dieses Zaubers kann der Magier einen Teil seiner magischen "
"Kraft permanent auf einen anderen Magier übertragen. Auf einen Tybied-" "Kraft permanent auf einen anderen Magier übertragen. Auf einen Tybied-"
"Magier kann er die Hälfte der eingesetzten Kraft übertragen, auf einen " "Magier kann er die Hälfte der eingesetzten Kraft übertragen, auf einen "
@ -9899,7 +9871,7 @@ static spell spelldaten[] =
/* M_GRAU */ /* M_GRAU */
/* Definitionen von Create_Artefaktsprüchen */ /* Definitionen von Create_Artefaktsprüchen */
{ {
SPL_ARTEFAKT_OF_AURAPOWER, "Erschaffe einen Fokus", SPL_ARTEFAKT_OF_AURAPOWER, "create_focus",
"Der auf diesem Gegenstand liegende Zauber erleichtert es dem " "Der auf diesem Gegenstand liegende Zauber erleichtert es dem "
"Zauberers enorm größere Mengen an Aura zu beherrschen.", NULL, NULL, "Zauberers enorm größere Mengen an Aura zu beherrschen.", NULL, NULL,
M_GRAU, (ONSHIPCAST), 5, 9, M_GRAU, (ONSHIPCAST), 5, 9,
@ -9913,7 +9885,7 @@ static spell spelldaten[] =
(spell_f)sp_createitem_aura, patzer_createitem (spell_f)sp_createitem_aura, patzer_createitem
}, },
{ {
SPL_ARTEFAKT_OF_REGENERATION, "Regeneration", SPL_ARTEFAKT_OF_REGENERATION, "regeneration",
"Der auf diesem Gegenstand liegende Zauber saugt die diffusen " "Der auf diesem Gegenstand liegende Zauber saugt die diffusen "
"magischen Energien des Lebens aus der Umgebung auf und läßt sie " "magischen Energien des Lebens aus der Umgebung auf und läßt sie "
"seinem Träger zukommen.", NULL, NULL, "seinem Träger zukommen.", NULL, NULL,
@ -9928,7 +9900,7 @@ static spell spelldaten[] =
(spell_f)sp_createitem_regeneration, patzer_createitem (spell_f)sp_createitem_regeneration, patzer_createitem
}, },
{ {
SPL_ARTEFAKT_CHASTITYBELT, "Erschaffe ein Amulett der Keuschheit", SPL_ARTEFAKT_CHASTITYBELT, "create_chastitybelt",
"Dieses Amulett in Gestalt einer orkischen Matrone unterdrückt den " "Dieses Amulett in Gestalt einer orkischen Matrone unterdrückt den "
"Fortpflanzungstrieb eines einzelnen Orks sehr zuverlässig. Ein Ork " "Fortpflanzungstrieb eines einzelnen Orks sehr zuverlässig. Ein Ork "
"mit Amulett der Keuschheit wird sich nicht mehr vermehren.", NULL, NULL, "mit Amulett der Keuschheit wird sich nicht mehr vermehren.", NULL, NULL,
@ -9943,7 +9915,7 @@ static spell spelldaten[] =
(spell_f)sp_createitem_chastitybelt, patzer_createitem (spell_f)sp_createitem_chastitybelt, patzer_createitem
}, },
{ {
SPL_METEORRAIN, "Meteorregen", SPL_METEORRAIN, "meteor_rain",
"Ein Schauer von Meteoren regnet über das Schlachtfeld.", NULL, NULL, "Ein Schauer von Meteoren regnet über das Schlachtfeld.", NULL, NULL,
M_GRAU, (COMBATSPELL | SPELLLEVEL), 5, 3, M_GRAU, (COMBATSPELL | SPELLLEVEL), 5, 3,
{ {
@ -9956,7 +9928,7 @@ static spell spelldaten[] =
(spell_f)sp_kampfzauber, patzer (spell_f)sp_kampfzauber, patzer
}, },
{ {
SPL_ARTEFAKT_RUNESWORD, "Erschaffe ein Runenschwert", SPL_ARTEFAKT_RUNESWORD, "create_runesword",
"Mit diesem Spruch erzeugt man ein Runenschwert. Die Klinge des " "Mit diesem Spruch erzeugt man ein Runenschwert. Die Klinge des "
"schwarzen " "schwarzen "
"Schwertes ist mit alten, magischen Runen verziert, und ein seltsames " "Schwertes ist mit alten, magischen Runen verziert, und ein seltsames "
@ -9975,7 +9947,7 @@ static spell spelldaten[] =
(spell_f)sp_createitem_runesword, patzer_createitem (spell_f)sp_createitem_runesword, patzer_createitem
}, },
{ {
SPL_BECOMEWYRM, "Wyrmtransformation", SPL_BECOMEWYRM, "wyrm_transformation",
"Mit Hilfe dieses Zaubers kann sich der Magier permanent in einen " "Mit Hilfe dieses Zaubers kann sich der Magier permanent in einen "
"mächtigen Wyrm verwandeln. Der Magier behält seine Talente und " "mächtigen Wyrm verwandeln. Der Magier behält seine Talente und "
"Möglichkeiten, bekommt jedoch die Kampf- und Bewegungseigenschaften " "Möglichkeiten, bekommt jedoch die Kampf- und Bewegungseigenschaften "
@ -9993,7 +9965,7 @@ static spell spelldaten[] =
(spell_f)sp_becomewyrm, patzer (spell_f)sp_becomewyrm, patzer
}, },
/* Monstersprüche */ /* Monstersprüche */
{ SPL_FIREDRAGONODEM, "Feuriger Drachenodem", { SPL_FIREDRAGONODEM, "fiery_dragonbreath",
"Verbrennt die Feinde", NULL, NULL, "Verbrennt die Feinde", NULL, NULL,
M_GRAU, (COMBATSPELL), 5, 3, M_GRAU, (COMBATSPELL), 5, 3,
{ {
@ -10005,7 +9977,7 @@ static spell spelldaten[] =
}, },
(spell_f)sp_dragonodem, patzer (spell_f)sp_dragonodem, patzer
}, },
{ SPL_DRAGONODEM, "Eisiger Drachenodem", { SPL_DRAGONODEM, "icy_dragonbreath",
"Tötet die Feinde", NULL, NULL, "Tötet die Feinde", NULL, NULL,
M_GRAU, (COMBATSPELL), 5, 6, M_GRAU, (COMBATSPELL), 5, 6,
{ {
@ -10017,7 +9989,7 @@ static spell spelldaten[] =
}, },
(spell_f)sp_dragonodem, patzer (spell_f)sp_dragonodem, patzer
}, },
{ SPL_WYRMODEM, "Großer Drachenodem", { SPL_WYRMODEM, "powerful_dragonbreath",
"Verbrennt die Feinde", NULL, NULL, "Verbrennt die Feinde", NULL, NULL,
M_GRAU, (COMBATSPELL), 5, 12, M_GRAU, (COMBATSPELL), 5, 12,
{ {
@ -10029,7 +10001,7 @@ static spell spelldaten[] =
}, },
(spell_f)sp_dragonodem, patzer (spell_f)sp_dragonodem, patzer
}, },
{ SPL_DRAINODEM, "Schattenodem", { SPL_DRAINODEM, "drain_skills",
"Entzieht Talentstufen und macht Schaden wie Großer Odem", NULL, NULL, "Entzieht Talentstufen und macht Schaden wie Großer Odem", NULL, NULL,
M_GRAU, (COMBATSPELL), 5, 12, M_GRAU, (COMBATSPELL), 5, 12,
{ {
@ -10042,7 +10014,7 @@ static spell spelldaten[] =
(spell_f)sp_dragonodem, patzer (spell_f)sp_dragonodem, patzer
}, },
{ {
SPL_AURA_OF_FEAR, "Furchteinflößende Aura", SPL_AURA_OF_FEAR, "aura_of_fear",
"Panik", NULL, NULL, "Panik", NULL, NULL,
M_GRAU, (COMBATSPELL), 5, 12, M_GRAU, (COMBATSPELL), 5, 12,
{ {
@ -10055,7 +10027,7 @@ static spell spelldaten[] =
(spell_f)sp_flee, patzer (spell_f)sp_flee, patzer
}, },
{ {
SPL_SHADOWCALL, "Schattenruf", SPL_SHADOWCALL, "shadowcall",
"Ruft Schattenwesen.", NULL, NULL, "Ruft Schattenwesen.", NULL, NULL,
M_GRAU, (PRECOMBATSPELL), 5, 12, M_GRAU, (PRECOMBATSPELL), 5, 12,
{ {
@ -10068,7 +10040,7 @@ static spell spelldaten[] =
(spell_f)sp_shadowcall, patzer (spell_f)sp_shadowcall, patzer
}, },
{ {
SPL_IMMOLATION, "Feuersturm", SPL_IMMOLATION, "firestorm",
"Verletzt alle Gegner.", NULL, NULL, "Verletzt alle Gegner.", NULL, NULL,
M_GRAU, (COMBATSPELL), 5, 12, M_GRAU, (COMBATSPELL), 5, 12,
{ {
@ -10080,7 +10052,7 @@ static spell spelldaten[] =
}, },
(spell_f)sp_immolation, patzer (spell_f)sp_immolation, patzer
}, },
{ SPL_FIREODEM, "Feuerwalze", { SPL_FIREODEM, "immolation",
"Tötet die Feinde", NULL, NULL, "Tötet die Feinde", NULL, NULL,
M_GRAU, (COMBATSPELL), 5, 8, M_GRAU, (COMBATSPELL), 5, 8,
{ {
@ -10092,7 +10064,7 @@ static spell spelldaten[] =
}, },
(spell_f)sp_immolation, patzer (spell_f)sp_immolation, patzer
}, },
{ SPL_ICEODEM, "Eisnebel", { SPL_ICEODEM, "coldfront",
"Tötet die Feinde", NULL, NULL, "Tötet die Feinde", NULL, NULL,
M_GRAU, (COMBATSPELL), 5, 8, M_GRAU, (COMBATSPELL), 5, 8,
{ {
@ -10104,7 +10076,7 @@ static spell spelldaten[] =
}, },
(spell_f)sp_immolation, patzer (spell_f)sp_immolation, patzer
}, },
{ SPL_ACIDODEM, "Säurenebel", { SPL_ACIDODEM, "acidrain",
"Tötet die Feinde", NULL, NULL, "Tötet die Feinde", NULL, NULL,
M_GRAU, (COMBATSPELL), 5, 8, M_GRAU, (COMBATSPELL), 5, 8,
{ {
@ -10191,7 +10163,7 @@ static spell spelldaten[] =
#endif #endif
/* SPL_NOSPELL MUSS der letzte Spruch der Liste sein*/ /* SPL_NOSPELL MUSS der letzte Spruch der Liste sein*/
{ {
SPL_NOSPELL, "Keiner", NULL, NULL, NULL, 0, 0, 0, 0, SPL_NOSPELL, "no spell", NULL, NULL, NULL, 0, 0, 0, 0,
{ {
{ 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 },

View File

@ -1134,6 +1134,9 @@ parse_spells(xmlDocPtr doc)
xmlXPathFreeObject(spells); xmlXPathFreeObject(spells);
xmlXPathFreeContext(xpath); xmlXPathFreeContext(xpath);
init_spells();
return 0; return 0;
} }
@ -1319,10 +1322,22 @@ parse_races(xmlDocPtr doc)
/* reading eressea/races/race/precombatspell */ /* reading eressea/races/race/precombatspell */
xpath->node = node; xpath->node = node;
result = xmlXPathEvalExpression(BAD_CAST "precombatspell", xpath); result = xmlXPathEvalExpression(BAD_CAST "precombatspell", xpath);
assert(rc->precombatspell==SPL_NOSPELL || !"precombatspell is already initialized"); assert(rc->precombatspell==NULL || !"precombatspell is already initialized");
for (k=0;k!=result->nodesetval->nodeNr;++k) { for (k=0;k!=result->nodesetval->nodeNr;++k) {
xmlNodePtr node = result->nodesetval->nodeTab[k]; xmlNodePtr node = result->nodesetval->nodeTab[k];
rc->precombatspell = (spellid_t)xml_ivalue(node, "spell", SPL_NOSPELL); xmlChar * property = xmlGetProp(node, BAD_CAST "spell");
if (property!=NULL) {
const spell * sp = find_spell(M_NONE, (const char *)property);
if (sp==NULL) {
int i = atoi((const char *)property);
if (i>0) {
sp = find_spellbyid((spellid_t)i);
}
}
assert(sp);
rc->precombatspell = sp;
xmlFree(property);
}
} }
xmlXPathFreeObject(result); xmlXPathFreeObject(result);

View File

@ -147,11 +147,11 @@ locale_setstring(locale * lang, const char * key, const char * value)
find->str = strdup(value); find->str = strdup(value);
} }
else { else {
if (strcmp(find->str, value)!=0) { if (strcmp(find->str, value)!=0) {
log_error(("Duplicate key %s for '%s' and '%s'\n", key, value, find->str)); log_error(("Duplicate key %s for '%s' and '%s'\n", key, value, find->str));
} }
assert(!strcmp(find->str, value) || !"duplicate string for key"); assert(!strcmp(find->str, value) || !"duplicate string for key");
} }
} }
const char * const char *

View File

@ -227,7 +227,6 @@ game_init(void)
register_xmlreader(); register_xmlreader();
enable_xml_gamecode(); enable_xml_gamecode();
init_spells();
init_data(xmlfile); init_data(xmlfile);
init_locales(); init_locales();

View File

@ -3804,6 +3804,242 @@
</string> </string>
</namespace> </namespace>
<namespace name="spell"> <namespace name="spell">
<string name="create_rop">
<text locale="de">Erschaffe einen Ring der Macht</text>
<text locale="en">Create A Ring Of Power</text>
</string>
<string name="fish_shield">
<text locale="de">Schild des Fisches</text>
<text locale="en">Shield Of The Fish</text>
</string>
<string name="protective_runes">
<text locale="de">Runen des Schutzes</text>
<text locale="en">Protective Runes</text>
</string>
<string name="fetch_astral">
<text locale="de">Ruf der Realität</text>
<text locale="en">Call Of Reality</text>
</string>
<string name="pull_astral">
<text locale="de">Astraler Ruf</text>
<text locale="en">Astral Call</text>
</string>
<string name="destroy_magic">
<text locale="de">Magiefresser</text>
<text locale="en">Destroy Magic</text>
</string>
<string name="eternal_walls">
<text locale="de">Mauern der Ewigkeit</text>
<text locale="en">Eternal Walls</text>
</string>
<string name="steal_aura">
<text locale="de">Stehle Aura</text>
<text locale="en">Steal Aura</text>
</string>
<string name="resist_magic">
<text locale="de">Schutzzauber</text>
<text locale="en">Resist Magic</text>
</string>
<string name="show_astral">
<text locale="de">Astraler Blick</text>
<text locale="en">Astral Gaze</text>
</string>
<string name="auratransfer">
<text locale="de">Auratransfer</text>
<text locale="en">Transfer Aura</text>
</string>
<string name="calm_monster">
<text locale="de">Monster friedlich stimmen</text>
<text locale="en">Calm Monster</text>
</string>
<string name="airship">
<text locale="de">Luftschiff</text>
<text locale="en">Airship</text>
</string>
<string name="seduction">
<text locale="de">Lied der Verführung</text>
<text locale="en">Song Of Seduction</text>
</string>
<string name="headache">
<text locale="de">Schaler Wein</text>
<text locale="en">Hangover</text>
</string>
<string name="sound_out">
<text locale="de">Aushorchen</text>
<text locale="en">sound_out</text>
</string>
<string name="bloodthirst">
<text locale="de">Kriegsgesang</text>
<text locale="en">Song Of War</text>
</string>
<string name="frighten">
<text locale="de">Gesang der Angst</text>
<text locale="en">Song Of Fear</text>
</string>
<string name="analyse_object">
<text locale="de">Lied des Ortes analysieren</text>
<text locale="en">Analysis</text>
</string>
<string name="shockwave">
<text locale="de">Schockwelle</text>
<text locale="en">Shockwave</text>
</string>
<string name="break_curse">
<text locale="de">Fluch brechen</text>
<text locale="en">Negate Curse</text>
</string>
<string name="create_chastitybelt">
<text locale="de">Erschaffe ein Amulett der Keuschheit</text>
<text locale="en">Create An Amulet Of Chastity</text>
</string>
<string name="combat_speed">
<text locale="de">Beschleunigung</text>
<text locale="en">Acceleration</text>
</string>
<string name="powerful_dragonbreath">
<text locale="de">Großer Drachenodem</text>
<text locale="en">Powerful Dragonbreath</text>
</string>
<string name="sacrifice_strength">
<text locale="de">Opfere Kraft</text>
<text locale="en">Sacrifice Strength</text>
</string>
<string name="living_rock">
<text locale="de">Belebtes Gestein</text>
<text locale="en">Living Rock</text>
</string>
<string name="melancholy">
<text locale="de">Gesang der Melancholie</text>
<text locale="en">Song of Melancholy</text>
</string>
<string name="song_resist_magic">
<text locale="de">Gesang des wachen Geistes</text>
<text locale="en">Song Of The Youthful Spirit</text>
</string>
<string name="song_suscept_magic">
<text locale="de">Gesang des schwachen Geistes</text>
<text locale="en">Song Of The Aging Spirit</text>
</string>
<string name="song_of_peace">
<text locale="de">Gesang der Friedfertigkeit</text>
<text locale="en">Song Of Peace</text>
</string>
<string name="song_of_slavery">
<text locale="de">Gesang der Versklavung</text>
<text locale="en">Song Of Slavery</text>
</string>
<string name="big_recruit">
<text locale="de">Hohe Kunst der Überzeugung</text>
<text locale="en">Song Of Slavery</text>
</string>
<string name="double_time">
<text locale="de">Zeitdehnung</text>
<text locale="en">Double Time</text>
</string>
<string name="summon_familiar">
<text locale="de">Vertrauten rufen</text>
<text locale="en">Summon Familiar</text>
</string>
<string name="armor_shield">
<text locale="de">Rüstschild</text>
<text locale="en">Shield Shine</text>
</string>
<string name="wyrm_transformation">
<text locale="de">Wyrmtransformation</text>
<text locale="en">Wyrmtransformation</text>
</string>
<string name="drain_skills">
<text locale="de">Schattenodem</text>
<text locale="en">Shadowbreath</text>
</string>
<string name="firestorm">
<text locale="de">Feuersturm</text>
<text locale="en">Firestorm</text>
</string>
<string name="immolation">
<text locale="de">Feuerwalze</text>
<text locale="en">Immolation</text>
</string>
<string name="coldfront">
<text locale="de">Eisnebel</text>
<text locale="en">Coldfront</text>
</string>
<string name="acidrain">
<text locale="de">Säurenebel</text>
<text locale="en">Acid Rain</text>
</string>
<string name="aura_of_fear">
<text locale="de">Furchteinflößende Aura</text>
<text locale="en">Panic</text>
</string>
<string name="meteor_rain">
<text locale="de">Meteorregen</text>
<text locale="en">Meteor Shower</text>
</string>
<string name="shadowcall">
<text locale="de">Schattenruf</text>
<text locale="en">Shadow Call</text>
</string>
<string name="regeneration">
<text locale="de">Regeneration</text>
<text locale="en">Regeneration</text>
</string>
<string name="raise_mob">
<text locale="de">Mob aufwiegeln</text>
<text locale="en">Mob Rule</text>
</string>
<string name="calm_riot">
<text locale="de">Aufruhr beschwichtigen</text>
<text locale="en">Calm Riot</text>
</string>
<string name="incite_riot">
<text locale="de">Aufruhr verursachen</text>
<text locale="en">Riot</text>
</string>
<string name="view_reality">
<text locale="de">Blick in die Realität</text>
<text locale="en">Gaze Upon Reality</text>
</string>
<string name="astral_disruption">
<text locale="de">Störe Astrale Integrität</text>
<text locale="en">Astral Disruption</text>
</string>
<string name="icy_dragonbreath">
<text locale="de">Eisiger Drachenodem</text>
<text locale="en">Icy Dragonbreath</text>
</string>
<string name="fiery_dragonbreath">
<text locale="de">Eisiger Drachenodem</text>
<text locale="en">Icy Dragonbreath</text>
</string>
<string name="create_runesword">
<text locale="de">Erschaffe ein Runenschwert</text>
<text locale="en">Create A Runesword</text>
</string>
<string name="create_bagofholding">
<text locale="de">Erschaffe einen Beutel des Negativen Gewichts</text>
<text locale="en">Create A Bag Of Holding</text>
</string>
<string name="create_focus">
<text locale="de">Erschaffe einen Aurafocus</text>
<text locale="en">Create An Aurafocus</text>
</string>
<string name="create_antimagic">
<text locale="de">Erschaffe Antimagiekristall</text>
<text locale="en">Create An Antimagic Crystal</text>
</string>
<string name="antimagiczone">
<text locale="de">Astrale Schwächezone</text>
<text locale="en">Antimagic</text>
</string>
<string name="leaveastral">
<text locale="de">Astraler Ausgang</text>
<text locale="en">Astral Exit</text>
</string>
<string name="enterastral">
<text locale="de">Astraler Weg</text>
<text locale="en">Astral Path</text>
</string>
<string name="keeploot"> <string name="keeploot">
<text locale="de">Beute Bewahren</text> <text locale="de">Beute Bewahren</text>
<text locale="en">Save Spoils</text> <text locale="en">Save Spoils</text>
@ -3912,6 +4148,18 @@
<text locale="de">Hagel</text> <text locale="de">Hagel</text>
<text locale="en">Hail</text> <text locale="en">Hail</text>
</string> </string>
<string name="clone">
<text locale="de">Seelenkopie</text>
<text locale="en">Doppelganger</text>
</string>
<string name="wisps">
<text locale="de">Irrlichter</text>
<text locale="en">Wisps</text>
</string>
<string name="bad_dreams">
<text locale="de">Schlechte Träume</text>
<text locale="en">Bad Dreams</text>
</string>
<string name="ironkeeper"> <string name="ironkeeper">
<text locale="de">Bergwächter</text> <text locale="de">Bergwächter</text>
<text locale="en">Mountain Guardian</text> <text locale="en">Mountain Guardian</text>
@ -3920,6 +4168,18 @@
<text locale="de">Magischer Pfad</text> <text locale="de">Magischer Pfad</text>
<text locale="en">Magic Path</text> <text locale="en">Magic Path</text>
</string> </string>
<string name="great_drought">
<text locale="de">Tor in die Ebene der Hitze</text>
<text locale="en">Great Drought</text>
</string>
<string name="magic_roots">
<text locale="de">Wurzeln der Magie</text>
<text locale="en">Roots Of Magic</text>
</string>
<string name="maelstrom">
<text locale="de">Mahlstrom</text>
<text locale="en">Maelstrom</text>
</string>
<string name="windshield"> <string name="windshield">
<text locale="de">Windschild</text> <text locale="de">Windschild</text>
<text locale="en">Air Shield</text> <text locale="en">Air Shield</text>
@ -3991,6 +4251,14 @@
<text locale="de">Geister bannen</text> <text locale="de">Geister bannen</text>
<text locale="en">Banish Spirits</text> <text locale="en">Banish Spirits</text>
</string> </string>
<string name="cerddor_destroymagic">
<text locale="de">Lebenslied festigen</text>
<text locale="en">Silence Dissonance</text>
</string>
<string name="migration">
<text locale="de">Ritual der Aufnahme</text>
<text locale="en">Rit of Acceptance</text>
</string>
<string name="treewalkenter"> <string name="treewalkenter">
<text locale="de">Weg der Bäume</text> <text locale="de">Weg der Bäume</text>
<text locale="en">Path Of Trees</text> <text locale="en">Path Of Trees</text>
@ -4798,6 +5066,18 @@
undiscovered. undiscovered.
</text> </text>
</string> </string>
<string name="create_antimagic">
<text locale="de">Mit Hilfe dieses Zauber entzieht der Magier einem
Quarzkristall all seine magischen Energien. Der Kristall wird dann, wenn
er zu feinem Staub zermahlen und verteilt wird, die beim Zaubern
freigesetzten magischen Energien aufsaugen und alle Zauber, welche in der
betreffenden Woche in der Region gezaubert werden fehlschlagen lassen.
</text>
<text locale="en">This spell creates a portable crystal of antimagic
which can be used by anybody to reduce or even eliminate the power of all
spells cast in the region during the same week.
</text>
</string>
<string name="create_roqf"> <string name="create_roqf">
<text locale="de">Die berühmte Bardin Miriam bhean'Meddaf war bekannt <text locale="de">Die berühmte Bardin Miriam bhean'Meddaf war bekannt
für ihr außergewöhnliches Geschick mit der Harfe. Ihre Finger sollen für ihr außergewöhnliches Geschick mit der Harfe. Ihre Finger sollen
@ -6435,3 +6715,5 @@

View File

@ -430,10 +430,10 @@
<text locale="en">amulets</text> <text locale="en">amulets</text>
</string> </string>
<string name="antimagic"> <string name="antimagic">
<text locale="en">antimagic cristal</text> <text locale="en">antimagic crystal</text>
</string> </string>
<string name="antimagic_p"> <string name="antimagic_p">
<text locale="en">antimagic cristals</text> <text locale="en">antimagic crystals</text>
</string> </string>
<string name="ao_chastity"> <string name="ao_chastity">
<text locale="en">amulet of chastity</text> <text locale="en">amulet of chastity</text>

View File

@ -103,4 +103,10 @@
<resource name="permaura" amount="1" cost="fixed"/> <resource name="permaura" amount="1" cost="fixed"/>
</spell> </spell>
<spell name="create_antimagic" type="tybied" ship="true" rank="5" level="7">
<function name="cast" value="luaspell"/>
<resource name="aura" amount="50" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
</spell>
</spells> </spells>

View File

@ -69,3 +69,12 @@ function create_dreameye(r, mage, level, force)
return level return level
end end
-- Erschaffe einen Antimagiekristall
function create_antimagic(r, mage, level, force)
mage:add_item("", 1);
local msg = creation_message(mage, "antimagic")
msg:send_faction(mage.faction)
return level
end