forked from github/server
einbau der änderungen des beta-1-0 branches
This commit is contained in:
parent
a848052bfb
commit
1dbaf7ffcd
|
@ -2023,7 +2023,7 @@ instant_orders(void)
|
||||||
spell = find_spellbyname(u, s);
|
spell = find_spellbyname(u, s);
|
||||||
|
|
||||||
if(!spell){
|
if(!spell){
|
||||||
cmistake(u, S->s, 169, MSG_MAGIC);
|
cmistake(u, S->s, 173, MSG_MAGIC);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1642,9 +1642,9 @@ report_building(FILE *F, const region * r, const building * b, const faction * f
|
||||||
/* Leere Burgen verursachten sonst segfault! */
|
/* Leere Burgen verursachten sonst segfault! */
|
||||||
if(buildingowner(r,b) != NULL){
|
if(buildingowner(r,b) != NULL){
|
||||||
print_curses(F, b, TYP_BUILDING, b->attribs,
|
print_curses(F, b, TYP_BUILDING, b->attribs,
|
||||||
(buildingowner(r,b)->faction == f)? 1 : 0, 2);
|
(buildingowner(r,b)->faction == f)? 1 : 0, 4);
|
||||||
} else {
|
} else {
|
||||||
print_curses(F, b, TYP_BUILDING, b->attribs, 0, 2);
|
print_curses(F, b, TYP_BUILDING, b->attribs, 0, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (u = r->units; u; u = u->next)
|
for (u = r->units; u; u = u->next)
|
||||||
|
@ -2047,9 +2047,9 @@ report(FILE *F, faction * f, const char * pzTime)
|
||||||
/* Leere Schiffe verursachten sonst segfault! */
|
/* Leere Schiffe verursachten sonst segfault! */
|
||||||
if(shipowner(r,sh) != NULL){
|
if(shipowner(r,sh) != NULL){
|
||||||
print_curses(F, sh, TYP_SHIP, sh->attribs,
|
print_curses(F, sh, TYP_SHIP, sh->attribs,
|
||||||
(shipowner(r,sh)->faction == f)? 1 : 0, 2);
|
(shipowner(r,sh)->faction == f)? 1 : 0, 4);
|
||||||
} else {
|
} else {
|
||||||
print_curses(F, sh, TYP_SHIP, sh->attribs, 0, 2);
|
print_curses(F, sh, TYP_SHIP, sh->attribs, 0, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (u = r->units; u; u = u->next)
|
for (u = r->units; u; u = u->next)
|
||||||
|
@ -2567,7 +2567,13 @@ reports(void)
|
||||||
int wants_report, wants_computer_report,
|
int wants_report, wants_computer_report,
|
||||||
wants_compressed, wants_bzip2;
|
wants_compressed, wants_bzip2;
|
||||||
time_t ltime = time(NULL);
|
time_t ltime = time(NULL);
|
||||||
char * pzTime = strdup(asctime( localtime( <ime ) ));
|
char pzTime[64];
|
||||||
|
|
||||||
|
#ifdef _GNU_SOURCE
|
||||||
|
strftime(pzTime, 64, "%A, %-e. %B %Y, %-k:%M", localtime(<ime));
|
||||||
|
#else
|
||||||
|
strftime(pzTime, 64, "%A, %e. %B %Y, %k:%M", localtime(<ime));
|
||||||
|
#endif
|
||||||
|
|
||||||
nmr_warnings();
|
nmr_warnings();
|
||||||
#ifdef DMALLOC
|
#ifdef DMALLOC
|
||||||
|
@ -2591,7 +2597,7 @@ reports(void)
|
||||||
init_intervals();
|
init_intervals();
|
||||||
#endif
|
#endif
|
||||||
remove_empty_units();
|
remove_empty_units();
|
||||||
log_printf("Report timestamp: %s", pzTime);
|
log_printf("Report timestamp - %s", pzTime);
|
||||||
for (f = factions; f; f = f->next) {
|
for (f = factions; f; f = f->next) {
|
||||||
attrib * a = a_find(f->attribs, &at_reportspell);
|
attrib * a = a_find(f->attribs, &at_reportspell);
|
||||||
current_faction = f;
|
current_faction = f;
|
||||||
|
|
|
@ -1383,6 +1383,8 @@ do_combatmagic(battle *b, combatmagic_t was)
|
||||||
|
|
||||||
level = eff_skill(mage, SK_MAGIC, r);
|
level = eff_skill(mage, SK_MAGIC, r);
|
||||||
if (level > 0) {
|
if (level > 0) {
|
||||||
|
char cmd[128];
|
||||||
|
|
||||||
switch(was) {
|
switch(was) {
|
||||||
case DO_PRECOMBATSPELL:
|
case DO_PRECOMBATSPELL:
|
||||||
sp = get_combatspell(mage, 0);
|
sp = get_combatspell(mage, 0);
|
||||||
|
@ -1398,7 +1400,10 @@ do_combatmagic(battle *b, combatmagic_t was)
|
||||||
}
|
}
|
||||||
if (sp == NULL)
|
if (sp == NULL)
|
||||||
continue;
|
continue;
|
||||||
if (cancast(mage, sp, 1, 1) == false)
|
|
||||||
|
snprintf(cmd, 128, "ZAUBER %s", sp->name);
|
||||||
|
|
||||||
|
if (cancast(mage, sp, 1, 1, cmd) == false)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
level = eff_spelllevel(mage, sp, level, 1);
|
level = eff_spelllevel(mage, sp, level, 1);
|
||||||
|
@ -1465,13 +1470,15 @@ do_combatspell(troop at)
|
||||||
int fumblechance = 0;
|
int fumblechance = 0;
|
||||||
void **mg;
|
void **mg;
|
||||||
int sl;
|
int sl;
|
||||||
|
char cmd[128];
|
||||||
|
|
||||||
sp = get_combatspell(mage, 1);
|
sp = get_combatspell(mage, 1);
|
||||||
if (sp == NULL) {
|
if (sp == NULL) {
|
||||||
fi->magic = 0; /* Hat keinen Kampfzauber, kämpft nichtmagisch weiter */
|
fi->magic = 0; /* Hat keinen Kampfzauber, kämpft nichtmagisch weiter */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (cancast(mage, sp, 1, 1) == false) {
|
snprintf(cmd, 128, "ZAUBER %s", sp->name);
|
||||||
|
if (cancast(mage, sp, 1, 1, cmd) == false) {
|
||||||
fi->magic = 0; /* Kann nicht mehr Zaubern, kämpft nichtmagisch weiter */
|
fi->magic = 0; /* Kann nicht mehr Zaubern, kämpft nichtmagisch weiter */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -580,7 +580,7 @@ building_type bt_caravan = {
|
||||||
/** Building: tunnel */
|
/** Building: tunnel */
|
||||||
static const maintenance tunnel_keep[] = {
|
static const maintenance tunnel_keep[] = {
|
||||||
/* resource, number, flags */
|
/* resource, number, flags */
|
||||||
{ R_HORSE, 2, MTF_NONE },
|
{ R_STONE, 2, MTF_NONE },
|
||||||
{ R_SILVER, 100, MTF_VITAL },
|
{ R_SILVER, 100, MTF_VITAL },
|
||||||
{ NORESOURCE, 0, MTF_NONE },
|
{ NORESOURCE, 0, MTF_NONE },
|
||||||
};
|
};
|
||||||
|
|
|
@ -635,9 +635,10 @@ set_combatspell(unit *u, spell *sp, const char * cmd, int level)
|
||||||
m = get_mage(u);
|
m = get_mage(u);
|
||||||
if (!m) return;
|
if (!m) return;
|
||||||
|
|
||||||
if (!sp) {
|
/* knowsspell prüft auf ist_magier, ist_spruch, kennt_spruch */
|
||||||
/* Diesen Zauber kennt die Einheit nicht */
|
if (!sp || !knowsspell(u->region, u, sp)) {
|
||||||
cmistake(u, cmd, 169, MSG_MAGIC);
|
/* Fehler 'Spell not found' */
|
||||||
|
cmistake(u, cmd, 173, MSG_MAGIC);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (getspell(u, sp->id) == false) {
|
if (getspell(u, sp->id) == false) {
|
||||||
|
@ -976,10 +977,11 @@ pay_spell(unit * u, spell * sp, int cast_level, int range)
|
||||||
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------- */
|
/* ------------------------------------------------------------- */
|
||||||
/* Um einen Spruch zu beherrschen, muss der Magier die Stufe des
|
/* Ein Magier kennt den Spruch und kann sich die Beschreibung anzeigen
|
||||||
* Spruchs besitzen, nicht nur wissen, das es ihn gibt (also den Spruch
|
* lassen, wenn diese in seiner Spruchliste steht. Zaubern muss er ihn
|
||||||
* in seiner Spruchliste haben) */
|
* aber dann immer noch nicht können, vieleicht ist seine Stufe derzeit
|
||||||
|
* nicht ausreichend oder die Komponenten fehlen.
|
||||||
|
*/
|
||||||
boolean
|
boolean
|
||||||
knowsspell(const region * r, const unit * u, const spell * sp)
|
knowsspell(const region * r, const unit * u, const spell * sp)
|
||||||
{
|
{
|
||||||
|
@ -989,36 +991,53 @@ knowsspell(const region * r, const unit * u, const spell * sp)
|
||||||
}
|
}
|
||||||
/* Magier? */
|
/* Magier? */
|
||||||
if (get_mage(u) == NULL) {
|
if (get_mage(u) == NULL) {
|
||||||
|
log_warning(("%s ist kein Magier, versucht aber zu zaubern.\n",
|
||||||
|
unitname(u)));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
/* reicht die Stufe aus? */
|
/* steht der Spruch in der Spruchliste? */
|
||||||
if (eff_skill(u, SK_MAGIC, r) < sp->level) {
|
if (getspell(u, sp->id) == false){
|
||||||
|
/* ist der Spruch aus einem anderen Magiegebiet? */
|
||||||
|
if (find_magetype(u) != sp->magietyp){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (eff_skill(u, SK_MAGIC, u->region) >= sp->level){
|
||||||
|
log_warning(("%s ist hat die erforderliche Stufe, kennt aber %s nicht.\n",
|
||||||
|
unitname(u), sp->name));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
/* ist der Spruch aus einem anderen Magiegebiet? */
|
|
||||||
if (find_magetype(u) != sp->magietyp) {
|
|
||||||
return (getspell(u, sp->id));
|
|
||||||
}
|
|
||||||
/* hier sollten alle potentiellen Fehler abgefangen sein */
|
/* hier sollten alle potentiellen Fehler abgefangen sein */
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Kosten für einen Spruch können Magiepunkte, Silber, Kraeuter
|
/* Um einen Spruch zu beherrschen, muss der Magier die Stufe des
|
||||||
|
* Spruchs besitzen, nicht nur wissen, das es ihn gibt (also den Spruch
|
||||||
|
* in seiner Spruchliste haben).
|
||||||
|
* Kosten für einen Spruch können Magiepunkte, Silber, Kraeuter
|
||||||
* und sonstige Gegenstaende sein.
|
* und sonstige Gegenstaende sein.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
boolean
|
boolean
|
||||||
cancast(unit * u, spell * sp, int level, int range)
|
cancast(unit * u, spell * sp, int level, int range, char * cmd)
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
resource_t res;
|
resource_t res;
|
||||||
int itemanz;
|
int itemanz;
|
||||||
boolean b = true;
|
boolean b = true;
|
||||||
const char * cmd = sp->name;
|
|
||||||
|
|
||||||
if (knowsspell(u->region, u, sp) == false) {
|
if (knowsspell(u->region, u, sp) == false) {
|
||||||
/* Diesen Zauber kennt die Einheit nicht */
|
/* Diesen Zauber kennt die Einheit nicht */
|
||||||
cmistake(u, cmd, 169, MSG_MAGIC);
|
cmistake(u, strdup(cmd), 173, MSG_MAGIC);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/* reicht die Stufe aus? */
|
||||||
|
if (eff_skill(u, SK_MAGIC, u->region) < sp->level) {
|
||||||
|
log_warning(("Zauber von %s schlug fehl: %s braucht Stufe %d.\n",
|
||||||
|
unitname(u), sp->name, sp->level));
|
||||||
|
/* die Einheit ist nicht erfahren genug für diesen Zauber */
|
||||||
|
cmistake(u, strdup(cmd), 169, MSG_MAGIC);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2762,6 +2781,17 @@ magic(void)
|
||||||
cmistake(u, so->s, 173, MSG_MAGIC);
|
cmistake(u, so->s, 173, MSG_MAGIC);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
/* um testen auf spruchnamen zu unterbinden sollte vor allen
|
||||||
|
* fehlermeldungen die anzeigen das der magier diesen Spruch
|
||||||
|
* nur in diese Situation nicht anwenden kann, noch eine
|
||||||
|
* einfache Sicherheitsprüfung kommen */
|
||||||
|
if (knowsspell(r, u, sp) == false){
|
||||||
|
/* vorsicht! u kann der familiar sein */
|
||||||
|
if (!familiar){
|
||||||
|
cmistake(u, so->s, 173, MSG_MAGIC);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (sp->sptyp & ISCOMBATSPELL) {
|
if (sp->sptyp & ISCOMBATSPELL) {
|
||||||
/* Fehler: "Dieser Zauber ist nur im Kampf sinnvoll" */
|
/* Fehler: "Dieser Zauber ist nur im Kampf sinnvoll" */
|
||||||
cmistake(u, so->s, 174, MSG_MAGIC);
|
cmistake(u, so->s, 174, MSG_MAGIC);
|
||||||
|
@ -2872,6 +2902,7 @@ magic(void)
|
||||||
}
|
}
|
||||||
for (spellrank = 0; spellrank < MAX_SPELLRANK; spellrank++) {
|
for (spellrank = 0; spellrank < MAX_SPELLRANK; spellrank++) {
|
||||||
for (co = cll[spellrank]; co; co = co->next) {
|
for (co = cll[spellrank]; co; co = co->next) {
|
||||||
|
char *cmd = co->order;
|
||||||
|
|
||||||
u = (unit *)co->magician;
|
u = (unit *)co->magician;
|
||||||
sp = co->sp;
|
sp = co->sp;
|
||||||
|
@ -2889,7 +2920,7 @@ magic(void)
|
||||||
level = eff_spelllevel(u, sp, level, co->distance);
|
level = eff_spelllevel(u, sp, level, co->distance);
|
||||||
if (level < 1) {
|
if (level < 1) {
|
||||||
/* Fehlermeldung mit Komponenten generieren */
|
/* Fehlermeldung mit Komponenten generieren */
|
||||||
cancast(u, sp, co->level, co->distance);
|
cancast(u, sp, co->level, co->distance, cmd);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (level < co->level){
|
if (level < co->level){
|
||||||
|
@ -2905,7 +2936,7 @@ magic(void)
|
||||||
|
|
||||||
/* Prüfen, ob die realen Kosten für die gewünschten Stufe bezahlt
|
/* Prüfen, ob die realen Kosten für die gewünschten Stufe bezahlt
|
||||||
* werden können */
|
* werden können */
|
||||||
if (cancast(u, sp, level, co->distance) == false) {
|
if (cancast(u, sp, level, co->distance, cmd) == false) {
|
||||||
/* die Fehlermeldung wird in cancast generiert */
|
/* die Fehlermeldung wird in cancast generiert */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -358,7 +358,7 @@ int spellcost(struct unit *u, spell *spruch);
|
||||||
/* gibt die für diesen Spruch derzeit notwendigen Magiepunkte auf der
|
/* gibt die für diesen Spruch derzeit notwendigen Magiepunkte auf der
|
||||||
* geringstmöglichen Stufe zurück, schon um den Faktor der bereits
|
* geringstmöglichen Stufe zurück, schon um den Faktor der bereits
|
||||||
* zuvor gezauberten Sprüche erhöht */
|
* zuvor gezauberten Sprüche erhöht */
|
||||||
boolean cancast (struct unit *u, spell *spruch, int eff_stufe, int distance);
|
boolean cancast (struct unit *u, spell *spruch, int eff_stufe, int distance, char *cmd);
|
||||||
/* true, wenn Einheit alle Komponenten des Zaubers (incl. MP) für die
|
/* true, wenn Einheit alle Komponenten des Zaubers (incl. MP) für die
|
||||||
* geringstmögliche Stufe hat und den Spruch beherrscht */
|
* geringstmögliche Stufe hat und den Spruch beherrscht */
|
||||||
void pay_spell(struct unit *u, spell *spruch, int eff_stufe, int distance);
|
void pay_spell(struct unit *u, spell *spruch, int eff_stufe, int distance);
|
||||||
|
|
|
@ -1586,7 +1586,7 @@ sail(region * starting_point, unit * u, region * next_point, boolean move_on_lan
|
||||||
if (fval(u, FL_FOLLOWING)) caught_target(current_point, u);
|
if (fval(u, FL_FOLLOWING)) caught_target(current_point, u);
|
||||||
|
|
||||||
if (starting_point != current_point) {
|
if (starting_point != current_point) {
|
||||||
tt[step+1] = NULL;
|
tt[step] = NULL;
|
||||||
sh = move_ship(sh, starting_point, current_point, tt);
|
sh = move_ship(sh, starting_point, current_point, tt);
|
||||||
|
|
||||||
/* Hafengebühren ? */
|
/* Hafengebühren ? */
|
||||||
|
|
|
@ -30,6 +30,23 @@
|
||||||
|
|
||||||
/* Simple Integer-Liste */
|
/* Simple Integer-Liste */
|
||||||
|
|
||||||
|
char *
|
||||||
|
sncat(char * buffer, size_t size, const char * str)
|
||||||
|
{
|
||||||
|
static char * b = NULL;
|
||||||
|
static char * end = NULL;
|
||||||
|
int n = 0;
|
||||||
|
if (b==buffer) {
|
||||||
|
end += strlen(end);
|
||||||
|
size -= (end-b);
|
||||||
|
} else {
|
||||||
|
end = b = buffer;
|
||||||
|
}
|
||||||
|
while (size-- > 0 && (*end++=*str++)!=0) ++n;
|
||||||
|
*end='\0';
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
int *
|
int *
|
||||||
intlist_init(void)
|
intlist_init(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,8 @@ extern unsigned int hashstring(const char* s);
|
||||||
extern char *space_replace(char * str, char replace);
|
extern char *space_replace(char * str, char replace);
|
||||||
extern const char *escape_string(const char * str, char * buffer, size_t len);
|
extern const char *escape_string(const char * str, char * buffer, size_t len);
|
||||||
extern boolean locale_check(void);
|
extern boolean locale_check(void);
|
||||||
|
extern char *sncat(char * buffer, size_t size, const char * str);
|
||||||
|
|
||||||
/* grammar constants: */
|
/* grammar constants: */
|
||||||
#define GR_PLURAL 0x01
|
#define GR_PLURAL 0x01
|
||||||
/* 0x02-0x08 left unused for individual use */
|
/* 0x02-0x08 left unused for individual use */
|
||||||
|
|
|
@ -6,12 +6,8 @@
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#define LOG_FLUSH (1<<0)
|
|
||||||
#define LOG_CPERROR (1<<1)
|
|
||||||
#define LOG_CPWARNING (1<<1)
|
|
||||||
|
|
||||||
/* TODO: set from external function */
|
/* TODO: set from external function */
|
||||||
static int flags = LOG_FLUSH|LOG_CPERROR;
|
static int flags = LOG_FLUSH|LOG_CPERROR|LOG_CPWARNING;
|
||||||
static FILE * logfile;
|
static FILE * logfile;
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -101,3 +97,26 @@ _log_error(const char * format, ...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_log_info(unsigned int flag, const char * format, ...)
|
||||||
|
{
|
||||||
|
va_list marker;
|
||||||
|
if (!logfile) logfile = stderr;
|
||||||
|
|
||||||
|
fprintf(logfile, "INFO[%u]: ", flag);
|
||||||
|
va_start(marker, format);
|
||||||
|
vfprintf(logfile, format, marker);
|
||||||
|
va_end(marker);
|
||||||
|
if (logfile!=stderr) {
|
||||||
|
if (flags & flag) {
|
||||||
|
fprintf(stderr, "\bINFO[%u]: ", flag);
|
||||||
|
va_start(marker, format);
|
||||||
|
vfprintf(stderr, format, marker);
|
||||||
|
va_end(marker);
|
||||||
|
}
|
||||||
|
if (flags & LOG_FLUSH) {
|
||||||
|
fflush(logfile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -5,7 +5,13 @@ extern void log_close(void);
|
||||||
|
|
||||||
#define log_warning(x) _log_warn x
|
#define log_warning(x) _log_warn x
|
||||||
#define log_error(x) _log_error x
|
#define log_error(x) _log_error x
|
||||||
|
#define log_info(x) _log_info x
|
||||||
|
|
||||||
/* use macros above instead of these: */
|
/* use macros above instead of these: */
|
||||||
extern void _log_warn(const char * format, ...);
|
extern void _log_warn(const char * format, ...);
|
||||||
extern void _log_error(const char * format, ...);
|
extern void _log_error(const char * format, ...);
|
||||||
|
extern void _log_info(unsigned int flag, const char * format, ...);
|
||||||
|
|
||||||
|
#define LOG_FLUSH (1<<0)
|
||||||
|
#define LOG_CPWARNING (1<<1)
|
||||||
|
#define LOG_CPERROR (1<<2)
|
||||||
|
|
|
@ -4,7 +4,7 @@ ifndef ERESSEA
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Hier definieren, damit nicht '@gcc'
|
# Hier definieren, damit nicht '@gcc'
|
||||||
CC = gcc
|
CC = gcc -D_GNU_SOURCE
|
||||||
AR = ar
|
AR = ar
|
||||||
CTAGS = ctags
|
CTAGS = ctags
|
||||||
LD = gcc
|
LD = gcc
|
||||||
|
|
|
@ -168,7 +168,7 @@ error165;errors:0;de;{unit} in {region}: '{command}' - Der Trank bekommt der Ein
|
||||||
error166;errors:0;de;{unit} in {region}: '{command}' - Diese Rasse kann eine Burg nicht belagern.
|
error166;errors:0;de;{unit} in {region}: '{command}' - Diese Rasse kann eine Burg nicht belagern.
|
||||||
error167;errors:0;de;{unit} in {region}: '{command}' - Die Einheit geht nicht zu den Bauern.
|
error167;errors:0;de;{unit} in {region}: '{command}' - Die Einheit geht nicht zu den Bauern.
|
||||||
error168;errors:0;de;{unit} in {region}: '{command}' - Es konnten keine Luxusgüter verkauft werden.
|
error168;errors:0;de;{unit} in {region}: '{command}' - Es konnten keine Luxusgüter verkauft werden.
|
||||||
error169;errors:0;de;{unit} in {region}: '{command}' - Diesen Zauber kennt die Einheit nicht.
|
error169;errors:0;de;{unit} in {region}: '{command}' - Die Einheit ist nicht erfahren genug für diesen Zauber.
|
||||||
error170;errors:0;de;{unit} in {region}: '{command}' - Die Bauern nehmen dieses großzügige Geschenk nicht an.
|
error170;errors:0;de;{unit} in {region}: '{command}' - Die Bauern nehmen dieses großzügige Geschenk nicht an.
|
||||||
error171;errors:0;de;{unit} in {region}: '{command}' - Diesen Kampfzauber gibt es nicht.
|
error171;errors:0;de;{unit} in {region}: '{command}' - Diesen Kampfzauber gibt es nicht.
|
||||||
error172;errors:0;de;{unit} in {region}: '{command}' - Es wurde kein Zauber angegeben.
|
error172;errors:0;de;{unit} in {region}: '{command}' - Es wurde kein Zauber angegeben.
|
||||||
|
|
Loading…
Reference in New Issue