diff --git a/src/common/gamecode/report.c b/src/common/gamecode/report.c
index e2f565236..e86b74db8 100644
--- a/src/common/gamecode/report.c
+++ b/src/common/gamecode/report.c
@@ -2022,16 +2022,18 @@ report(FILE *F, faction * f, struct seen_region ** seen, const faction_list * ad
centre(F, buf, true);
if (f->race == new_race[RC_HUMAN]) {
int maxmig = count_maxmigrants(f);
- m = msg_message("nr_migrants", "units max_units", count_migrants(f), maxmig);
+ m = msg_message("nr_migrants", "units maxunits", count_migrants(f), maxmig);
nr_render(m, f->locale, buf, sizeof(buf), f);
+ msg_release(m);
centre(F, buf, true);
}
#ifdef HEROES
{
int maxh = maxheroes(f);
if (maxh) {
- m = msg_message("nr_heroes", "units max_units", countheroes(f), maxh);
+ m = msg_message("nr_heroes", "units maxunits", countheroes(f), maxh);
nr_render(m, f->locale, buf, sizeof(buf), f);
+ msg_release(m);
centre(F, buf, true);
}
}
diff --git a/src/common/kernel/magic.c b/src/common/kernel/magic.c
index d32491c90..06f6c65b2 100644
--- a/src/common/kernel/magic.c
+++ b/src/common/kernel/magic.c
@@ -144,8 +144,7 @@ a_ageicastle(struct attrib * a)
if (data->time<=0) {
building * b = data->building;
region * r = b->region;
- sprintf(buf, "Plötzlich löst sich %s in kleine Traumwolken auf.", buildingname(b));
- addmessage(r, 0, buf, MSG_EVENT, ML_INFO);
+ ADDMSG(&r->msgs, msg_message("icastle_dissolve", "building", b));
/* destroy_building lets units leave the building */
destroy_building(b);
return 0;
@@ -945,27 +944,20 @@ cancast(unit * u, spell * sp, int level, int range, struct order * ord)
/* es fehlte schon eine andere Komponente, wir basteln die
* Meldung weiter zusammen */
scat(", ");
- icat(itemanz);
- scat(LOC(u->faction->locale, resname(res, itemanz!=1)));
- } else {
- /* Noch fehlte keine Komponente, wir generieren den Anfang der
- * Fehlermeldung */
- sprintf(buf, "%s in %s: 'ZAUBER %s' - Für diesen Zauber fehlen "
- "noch %d ", unitname(u), regionname(u->region, u->faction),
- spell_name(sp, u->faction->locale), itemanz);
- scat(LOC(u->faction->locale, resname(res, itemanz!=1)));
- b = false;
- }
+ } else {
+ b = false;
+ buf[0] = 0;
+ }
+ icat(itemanz);
+ scat(LOC(u->faction->locale, resname(res, itemanz!=1)));
}
}
}
- if (b == false) {
- scat(".");
- addmessage(0, u->faction, buf, MSG_MAGIC, ML_MISTAKE);
- return false;
+ if (!b) {
+ ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "missing_components_list", "list", buf));
}
- return true;
+ return b;
}
/* ------------------------------------------------------------- */
@@ -1277,7 +1269,6 @@ do_fumble(castorder *co)
int level = co->level;
int duration;
variant effect;
- const char * sp_name = spell_name(sp, u->faction->locale);
ADDMSG(&u->faction->msgs, msg_message("patzer", "unit region spell",
u, r, sp));
@@ -1303,8 +1294,8 @@ do_fumble(castorder *co)
}
u->race = new_race[RC_TOAD];
u->irace = new_race[RC_TOAD];
- sprintf(buf, "Eine Botschaft von %s: 'Ups! Quack, Quack!'", unitname(u));
- addmessage(r, 0, buf, MSG_MAGIC, ML_MISTAKE);
+ ADDMSG(&r->msgs, msg_message("patzer6", "unit region spell",
+ u, r, sp));
break;
case 2:
@@ -1329,13 +1320,8 @@ do_fumble(castorder *co)
/* Spruch gelingt, aber alle Magiepunkte weg */
((nspell_f)sp->sp_function)(co);
set_spellpoints(u, 0);
- sprintf(buf, "Als %s versucht, '%s' zu zaubern erhebt sich "
- "plötzlich ein dunkler Wind. Bizarre geisterhafte "
- "Gestalten kreisen um den Magier und scheinen sich von "
- "den magischen Energien des Zaubers zu ernähren. Mit letzter "
- "Kraft gelingt es %s dennoch den Spruch zu zaubern.",
- unitname(u), sp_name, unitname(u));
- addmessage(0, u->faction, buf, MSG_MAGIC, ML_WARN);
+ ADDMSG(&u->faction->msgs, msg_message("patzer4", "unit region spell",
+ u, r, sp));
break;
case 7:
@@ -1344,10 +1330,8 @@ do_fumble(castorder *co)
default:
/* Spruch gelingt, alle nachfolgenden Sprüche werden 2^4 so teuer */
((nspell_f)sp->sp_function)(co);
- sprintf(buf, "%s fühlt sich nach dem Zaubern von %s viel erschöpfter "
- "als sonst und hat das Gefühl, dass alle weiteren Zauber deutlich "
- "mehr Kraft als normalerweise kosten werden.", unitname(u), sp_name);
- addmessage(0, u->faction, buf, MSG_MAGIC, ML_WARN);
+ ADDMSG(&u->faction->msgs, msg_message("patzer5", "unit region spell",
+ u, r, sp));
countspells(u, 3);
}
@@ -2602,16 +2586,13 @@ magic(void)
if (!knowsspell(r, u, sp)) { /* Magier zaubert durch Vertrauten */
mage = get_familiar_mage(u);
if (range > 1) { /* Fehler! Versucht zu Farcasten */
- sprintf(buf, "%s kann Sprüche, die durch %s wirken, nicht "
- "zusätzlich nochmal in die Ferne richten.",
- unitname(mage), unitname(u));
- addmessage(0, u->faction, buf, MSG_MAGIC, ML_MISTAKE);
+ ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "familiar_farcast",
+ "mage", mage));
continue;
}
if (distance(mage->region, r) > eff_skill(mage, SK_MAGIC, mage->region)) {
- sprintf(buf, "%s kann nicht genug Kraft aufbringen, um "
- "durch %s zu wirken", unitname(mage), unitname(u));
- addmessage(0, u->faction, buf, MSG_MAGIC, ML_MISTAKE);
+ ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "familiar_toofar",
+ "mage", mage));
continue;
}
/* mage auf magier setzen, level anpassen, range für Erhöhung
@@ -2685,10 +2666,8 @@ magic(void)
/* Sprüche mit Fixkosten werden immer auf Stufe des Spruchs
* gezaubert, co->level ist aber defaultmäßig Stufe des Magiers */
if (spl_costtyp(sp) != SPC_FIX) {
- sprintf(buf, "%s hat nur genügend Komponenten um %s auf Stufe %d "
- "zu zaubern.", unitname(u), spell_name(sp, u->faction->locale),
- co->level);
- addmessage(0, u->faction, buf, MSG_MAGIC, ML_INFO);
+ ADDMSG(&u->faction->msgs, msg_message("missing_components",
+ "unit spell level", u, sp, level));
}
}
@@ -2703,9 +2682,8 @@ magic(void)
/* die Stärke kann durch Antimagie auf 0 sinken */
if (co->force <= 0) {
co->force = 0;
- sprintf(buf, "%s schafft es nicht genügend Kraft aufzubringen "
- "um %s dennoch zu zaubern.", unitname(u),
- spell_name(sp, u->faction->locale));
+ ADDMSG(&u->faction->msgs, msg_message("missing_force",
+ "unit spell level", u, sp, level));
addmessage(0, u->faction, buf, MSG_MAGIC, ML_MISTAKE);
}
@@ -2733,10 +2711,8 @@ magic(void)
co->force = 0;
/* zwar wurde mindestens ein Ziel gefunden, das widerstand
* jedoch dem Zauber. Kosten abziehen und abbrechen. */
- sprintf(buf, "%s gelingt es %s zu zaubern, doch der Spruch zeigt "
- "keine Wirkung.", unitname(u),
- spell_name(sp, u->faction->locale));
- addmessage(0, u->faction, buf, MSG_MAGIC, ML_MISTAKE);
+ ADDMSG(&u->faction->msgs, msg_message("spell_resist", "unit region spell",
+ u, r, sp));
co->force = 0;
}
}
diff --git a/src/res/messages.xml b/src/res/messages.xml
index 81d7c3161..b4965b85d 100644
--- a/src/res/messages.xml
+++ b/src/res/messages.xml
@@ -388,6 +388,22 @@
$trail($region,$locale("en"))
$trail($region,$locale("en"))
+
+
+
+
+
+ "Deine Partei hat $int($units) Migranten und kann maximal $int($maxunits) Migranten aufnehmen."
+ "Your faction has $int($units) migrants out of a possible total of $int($maxunits)."
+
+
+
+
+
+
+ "Deine Partei hat $int($units) Helden und kann maximal $int($maxunits) Helden ernennen."
+ "Your faction has promoted $int($units) heroes out of a possible total of $int($maxunits)."
+
@@ -605,6 +621,13 @@
"$building($building) hat diese Woche nicht funktioniert, da der Unterhalt nicht rechtzeitig gezahlt wurde."
"$building($building) did not function this week because upkeep could not be paid."
+
+
+
+
+ "Plötzlich löst sich $building($building) in kleine Traumwolken auf."
+ "$building($building) suddenly dissolves into small pink clouds."
+
@@ -1334,6 +1357,7 @@
"$unit($unit) in $region($region): '$order($command)' - Es wurde kein Ziel gefunden."
+ "$unit($unit) in $region($region): '$order($command)' - The spell could not find a target."
@@ -1341,6 +1365,35 @@
"$unit($mage) erleidet durch den Tod seines Vertrauten einen Schock."
+ "$unit($mage) receives a shock when his familiar dies."
+
+
+
+
+
+
+
+ "$unit($unit) schafft es nicht, genug Kraft aufzubringen, um $spell($spell) auf Stufe $int($level) zu zaubern."
+ "$unit($unit) cannot muster enough energy to cast $spell($spell) on level $level($level)."
+
+
+
+
+
+
+
+
+ "$unit($unit) in $region($region): '$order($command)' - Für diesen Zauber fehlen noch $string($list)."
+ "$unit($unit) in $region($region): '$order($command)' - Casting this spell requires an additional $string($list)."
+
+
+
+
+
+
+
+ "$unit($unit) hat nur genügend Komponenten um $spell($spell) auf Stufe $int($level) zu zaubern."
+ "$unit($unit) has insufficient components to cast $spell($spell) on level $level($level)."
@@ -1358,6 +1411,63 @@
"Als $unit($unit) in $region($region) versucht, $spell($spell) zu zaubern, scheint plötzlich ein Beben durch die magische Essenz zu laufen und ein furchtbarer Sog versucht $unit($unit) in eine andere Dimension zu ziehen. Mit letzter Kraft gelingt es $unit($unit) sich zu retten."
+ "When $unit($unit) in $region($region) tries to cast $spell($spell), a sudden disturbance ripples through the magical realm and a terrible force attempts to drag the magician to another dimension. However, with a final effort of strength, $unit($unit) manages to save himself."
+
+
+
+
+
+
+
+ "Als $unit($unit) in $region($region) versucht, $spell($spell) zu zaubern erhebt sich plötzlich ein dunkler Wind. Bizarre geisterhafte Gestalten kreisen um den Magier und scheinen sich von den magischen Energien des Zaubers zu ernähren. Mit letzter Kraft gelingt es $unit($unit) dennoch den Spruch zu zaubern."
+ "When $unit($unit) in $region($region) tries to cast $spell($spell), strong winds suddenly rise. Bizare ghostlike creatures circle around the magician and seem to be leeching his magical energy. However, with a final effort of strength, $unit($unit) manages to complete the spell."
+
+
+
+
+
+
+
+ "Eine Botschaft von $unit($unit) in $region($region): 'Ups! Quack, Quack!'"
+ "A message from $unit($unit) in $region($region): 'Oops! Croak, Croak!'"
+
+
+
+
+
+
+
+
+ "$unit($unit) in $region($region): '$order($command)' - $unit($mage) kann Zauber, die durch $unit($unit) gewirkt werden, nicht zusätzlich in die Ferne richten."
+ "$unit($unit) in $region($region): '$order($command)' - $unit($mage) cannot direct spells that are channeled through $unit($unit) into distant regions."
+
+
+
+
+
+
+
+
+ "$unit($unit) in $region($region): '$order($command)' - $unit($mage) kann durch $unit($unit) zu wirken."
+ "$unit($unit) in $region($region): '$order($command)' - $unit($mage) cannot raise enough energy to channel the spell through $unit($unit)."
+
+
+
+
+
+
+
+ "$unit($unit) gelingt es $spell($spell) zu zaubern, doch der Spruch zeigt keine Wirkung."
+ "$unit($unit) manages to cast $spell($spell), but the spell seems to have no effect."
+
+
+
+
+
+
+
+ "$unit($unit) fühlt sich nach dem Zaubern von $spell($spell) viel erschöpfter als sonst und hat das Gefühl, dass alle weiteren Zauber deutlich mehr Kraft als normalerweise kosten werden."
+ "$unit($unit) feels far more exhausted than he should after casting $spell($spell) and assumes that any following spells will cost far more energy than usual."
@@ -1365,6 +1475,7 @@
"$unit($unit) in $region($region) hat rasende Kopfschmerzen und kann sich nicht mehr richtig konzentrieren. Irgendwas bei diesem Zauber ist fürchterlich schiefgelaufen."
+ "$unit($unit) in $region($region) is hit by a massive headacheand cannot concentrate on the spell. Some part of this ritual has gone very wrong indeed."
@@ -6224,8 +6335,7 @@
"$unit($unit) in $region($region): $int($amount) $resource($item,$amount) zerfallen zu Staub."
- "$unit($unit) in $region($region): $int($amount) $resource($item,$amount) turn to dust."
+ "$unit($unit) in $region($region): $int($amount) $resource($item,$amount) turn to dust."
-