diff --git a/src/common/kernel/build.c b/src/common/kernel/build.c
index 6d296ab7e..67087897b 100644
--- a/src/common/kernel/build.c
+++ b/src/common/kernel/build.c
@@ -827,6 +827,7 @@ build_building(unit * u, const building_type * btype, int want, order * ord)
const char * btname;
order * new_order = NULL;
const struct locale * lang = u->faction->locale;
+ static int rule_other = -1;
assert(u->number);
if (eff_skill(u, SK_BUILDING, r) == 0) {
@@ -881,6 +882,16 @@ build_building(unit * u, const building_type * btype, int want, order * ord)
}
n = 1;
}
+ if (rule_other<0) {
+ rule_other = get_param_int(global.parameters, "rules.build.other_buildings", 1);
+ }
+ if (!rule_other) {
+ unit * owner = buildingowner(r, b);
+ if (!owner || owner->faction!=u->faction) {
+ cmistake(u, ord, 1222, MSG_PRODUCE);
+ return;
+ }
+ }
if (b) built = b->size;
if (n<=0 || n == INT_MAX) {
diff --git a/src/res/e3a.xml b/src/res/e3a.xml
index 3d96aa4b5..34a6a5fcd 100644
--- a/src/res/e3a.xml
+++ b/src/res/e3a.xml
@@ -160,6 +160,7 @@
+