forked from github/server
- hungernde, die einen NMR haben, arbeiteten nicht Crashbug falsche Messageparameter (Magie)
This commit is contained in:
parent
6e5da8ac25
commit
75ea8e150b
|
@ -3179,44 +3179,57 @@ static void
|
|||
setdefaults (void)
|
||||
{
|
||||
region *r;
|
||||
unit *u;
|
||||
strlist *S;
|
||||
|
||||
for (r = regions; r; r = r->next) {
|
||||
unit *u;
|
||||
|
||||
for (u = r->units; u; u = u->next) {
|
||||
strlist *slist;
|
||||
boolean trade = false;
|
||||
|
||||
if (LongHunger() && fval(u, UFL_HUNGER)) {
|
||||
/* Hungernde Einheiten führen NUR den default-Befehl aus */
|
||||
const char * cmd = locale_string(u->faction->locale, "defaultorder");
|
||||
set_string(&u->thisorder, cmd);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* by default the default long order becomes the new long order. */
|
||||
set_string(&u->thisorder, u->lastorder);
|
||||
for(S = u->orders; S; S = S->next) {
|
||||
const char * cmd;
|
||||
keyword_t keyword = igetkeyword(S->s, u->faction->locale);
|
||||
|
||||
/* check all orders for a potential new long order this round: */
|
||||
for (slist=u->orders; !trade && slist!=NULL; slist=slist->next) {
|
||||
const char * cmd = slist->s;
|
||||
|
||||
keyword_t keyword = igetkeyword(cmd, u->faction->locale);
|
||||
switch (keyword) {
|
||||
|
||||
/* Wenn gehandelt wird, darf kein langer Befehl ausgeführt
|
||||
* werden. Da Handel erst nach anderen langen Befehlen kommt,
|
||||
* muß das vorher abgefangen werden. Wir merken uns also
|
||||
* hier, ob die Einheit handelt. */
|
||||
|
||||
case K_BUY:
|
||||
case K_SELL:
|
||||
/* Wenn die Einheit handelt, muß der Default-Befehl gelöscht
|
||||
* werden. */
|
||||
set_string(&u->thisorder, "");
|
||||
trade = true;
|
||||
break;
|
||||
|
||||
case K_CAST:
|
||||
set_string(&u->thisorder, "");
|
||||
break;
|
||||
/* dient dazu, das neben Zaubern kein weiterer Befehl
|
||||
* ausgeführt werden kann, Zaubern ist ein kurzer Befehl */
|
||||
set_string(&u->thisorder, "");
|
||||
break;
|
||||
|
||||
case K_MAKE:
|
||||
/* Falls wir MACHE TEMP haben, ignorieren wir es. Alle anderen
|
||||
* Arten von MACHE zaehlen aber als neue defaults und werden
|
||||
* behandelt wie die anderen (deswegen kein break nach case
|
||||
* K_MAKE) - und in thisorder (der aktuelle 30-Tage Befehl)
|
||||
* abgespeichert). */
|
||||
|
||||
case K_MAKE:
|
||||
if (getparam(u->faction->locale) == P_TEMP) break;
|
||||
/* else fall through */
|
||||
|
||||
#if GROWING_TREES
|
||||
case K_PFLANZE:
|
||||
#endif
|
||||
case K_BESIEGE:
|
||||
case K_ENTERTAIN:
|
||||
case K_TAX:
|
||||
|
@ -3227,26 +3240,20 @@ setdefaults (void)
|
|||
case K_STUDY:
|
||||
case K_TEACH:
|
||||
case K_ZUECHTE:
|
||||
#if GROWING_TREES
|
||||
case K_PFLANZE:
|
||||
#endif
|
||||
case K_BIETE:
|
||||
case K_PIRACY:
|
||||
/* Über dieser Zeile nur Befehle, die auch eine idle Faction machen darf */
|
||||
if (idle (u->faction)) {
|
||||
set_string (&u->thisorder, locale_string(u->faction->locale, "defaultorder"));
|
||||
break;
|
||||
}
|
||||
/* Ab hier Befehle, die auch eine idle
|
||||
* Faction machen darf: */
|
||||
/* else fall through */
|
||||
|
||||
case K_ROUTE:
|
||||
case K_WORK:
|
||||
case K_DRIVE:
|
||||
case K_MOVE:
|
||||
case K_WEREWOLF:
|
||||
cmd = S->s;
|
||||
if (LongHunger() && fval(u, UFL_HUNGER)) {
|
||||
cmd = locale_string(u->faction->locale, "defaultorder");
|
||||
}
|
||||
set_string(&u->thisorder, cmd);
|
||||
break;
|
||||
|
||||
|
@ -3256,13 +3263,6 @@ setdefaults (void)
|
|||
}
|
||||
}
|
||||
|
||||
/* Wenn die Einheit handelt, muß der Default-Befehl gelöscht
|
||||
* werden. */
|
||||
|
||||
if(trade == true) {
|
||||
/* fset(u, UFL_LONGACTION); */
|
||||
set_string(&u->thisorder, "");
|
||||
}
|
||||
/* thisorder kopieren wir nun nach lastorder. in lastorder steht
|
||||
* der DEFAULT befehl der einheit. da MOVE kein default werden
|
||||
* darf, wird MOVE nicht in lastorder kopiert. MACHE TEMP wurde ja
|
||||
|
@ -3271,21 +3271,22 @@ setdefaults (void)
|
|||
* nicht hierher, da i.A. die Einheit dann ja weg ist (und damit
|
||||
* die Einheitsnummer ungueltig). Auch Attackiere sollte nie in
|
||||
* den Default übernommen werden */
|
||||
|
||||
switch (igetkeyword (u->thisorder, u->faction->locale)) {
|
||||
case K_MOVE:
|
||||
case K_BIETE:
|
||||
case K_ATTACK:
|
||||
case K_WEREWOLF:
|
||||
case NOKEYWORD:
|
||||
break;
|
||||
|
||||
default:
|
||||
set_string(&u->lastorder, u->thisorder);
|
||||
}
|
||||
/* Attackiere sollte niemals Default werden */
|
||||
if (igetkeyword(u->lastorder, u->faction->locale) == K_ATTACK)
|
||||
set_string(&u->lastorder, locale_string(u->faction->locale, "defaultorder"));
|
||||
|
||||
/* Attackiere sollte niemals Default werden */
|
||||
if (igetkeyword(u->lastorder, u->faction->locale) == K_ATTACK) {
|
||||
set_string(&u->lastorder, locale_string(u->faction->locale, "defaultorder"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2824,7 +2824,7 @@ magic(void)
|
|||
continue;
|
||||
}
|
||||
if (range > 1024) { /* (2^10) weiter als 10 Regionen entfernt */
|
||||
ADDMSG(&u->faction->msgs, msg_message("spellfail::nolevel",
|
||||
ADDMSG(&u->faction->msgs, msg_message("spellfail::nocontact",
|
||||
"mage region command target", u, u->region, so->s,
|
||||
gc_add(strdup(regionid(target_r)))));
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue