diff --git a/src/move.c b/src/move.c index a174a2872..fd6bf2933 100644 --- a/src/move.c +++ b/src/move.c @@ -696,7 +696,10 @@ int check_ship_allowed(struct ship *sh, const region * r) } if (bt_harbour && buildingtype_exists(r, bt_harbour, true)) { - return SA_HARBOUR; + unit* hafenmeister = NULL; + hafenmeister = owner_buildingtyp(r, bt_harbour); + if ((sh->_owner->faction == hafenmeister->faction) || (ucontact(sh->_owner, hafenmeister)) || (alliedunit(sh->_owner, hafenmeister->faction, HELP_GUARD))) + return SA_HARBOUR; } if (fval(r->terrain, SEA_REGION)) { return SA_COAST;