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 @@
-
+