diff --git a/src/common/gamecode/laws.c b/src/common/gamecode/laws.c index a76833e2e..108cfbee1 100644 --- a/src/common/gamecode/laws.c +++ b/src/common/gamecode/laws.c @@ -2808,7 +2808,7 @@ reorder(void) } #if 0 - +/* Aus Gebäude weisen, VERBANNE */ static void evict(void) { @@ -2821,11 +2821,38 @@ evict(void) for (S = u->orders; S; S = S->next) if (igetkeyword(S->s, u->faction->locale)==K_EVICT) { /* Nur der Kapitän bzw Burgherr kann jemanden rausschmeißen */ if(!fval(u, FL_OWNER)) { - cmistake(u,S->s,146,MSG_EVENT); + /* Die Einheit ist nicht der Eigentümer */ + cmistake(u,S->s,49,MSG_EVENT); continue; } int id = getid(); unit *u2 = findunit(id); + if (!u2){ + /* Einheit nicht gefunden */ + cmistake(u,S->s,63,MSG_EVENT); + continue; + } + + if (u->building){ + /* in der selben Burg? */ + if (u->building != u2->building){ + /* nicht in Burg */ + cmistake(u,S->s,33,MSG_EVENT); + continue; + } + leave_building(u2); + /* meldung an beide */ + } + + if (u->ship){ + if (u->ship != u2->ship){ + /* nicht an Bord */ + cmistake(u,S->s,32,MSG_EVENT); + continue; + } + leave_ship(u2); + /* meldung an beide */ + } } } } diff --git a/src/res/races.xml b/src/res/races.xml index 5ff58753d..3ff3b3771 100644 --- a/src/res/races.xml +++ b/src/res/races.xml @@ -187,7 +187,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -879,7 +879,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -1268,7 +1268,7 @@ - +