From 3536357cc6b1b80f8b578314142b7ed2fa276592 Mon Sep 17 00:00:00 2001 From: alberth Date: Fri, 6 Aug 2010 20:28:16 +0000 Subject: [PATCH] (svn r20393) -Fix [FS#3993]: Prevent taking over competitors when you'd get too many vehicles. --- src/economy.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/economy.cpp b/src/economy.cpp index a9a61850d2..dcf7d39903 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -1517,8 +1517,12 @@ CommandCost CmdBuyShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, /* Those lines are here for network-protection (clients can be slow) */ if (GetAmountOwnedBy(c, COMPANY_SPECTATOR) == 0) return cost; - /* We can not buy out a real company (temporarily). TODO: well, enable it obviously */ - if (GetAmountOwnedBy(c, COMPANY_SPECTATOR) == 1 && !c->is_ai) return cost; + if (GetAmountOwnedBy(c, COMPANY_SPECTATOR) == 1) { + if (!c->is_ai) return cost; // We can not buy out a real company (temporarily). TODO: well, enable it obviously. + + if (GetAmountOwnedBy(c, _current_company) == 3 && !MayCompanyTakeOver(_current_company, target_company)) return_cmd_error(STR_ERROR_TOO_MANY_VEHICLES_IN_GAME); + } + cost.AddCost(CalculateCompanyValue(c) >> 2); if (flags & DC_EXEC) {