Skip to content

Commit

Permalink
Fix OpenTTD#9281: acquire a company uses special bookkeeping to make …
Browse files Browse the repository at this point in the history
…you rich (OpenTTD#9300)

When you buy-out a company, you got your shares back. This is
based on company-value, which includes values for the vehicles etc.
In other words, you not only got the vehicles, but you also got
paid to get them back.

Additionally, you also got the loan of the company, but not the
money for the loan (as that is subtracted from the company-value).

Solve this by changing the rules of a buy-out: don't sell your
shares, get the loan AND the balance and get the infrastructure.
  • Loading branch information
TrueBrain committed May 29, 2021
1 parent 4c0e083 commit 4d74e51
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/economy.cpp
Expand Up @@ -324,8 +324,11 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
Backup<CompanyID> cur_company2(_current_company, FILE_LINE);
const Company *c = Company::Get(old_owner);
for (i = 0; i < 4; i++) {
cur_company2.Change(c->share_owners[i]);
if (_current_company != INVALID_OWNER) {
if (c->bankrupt_value == 0 && c->share_owners[i] == new_owner) {
/* You are the one buying the company; so don't sell the shares back to you. */
Company::Get(new_owner)->share_owners[i] = COMPANY_SPECTATOR;
} else if (c->share_owners[i] != INVALID_OWNER) {
cur_company2.Change(c->share_owners[i]);
/* Sell the shares */
CommandCost res = DoCommand(0, old_owner, 0, DC_EXEC | DC_BANKRUPT, CMD_SELL_SHARE_IN_COMPANY);
/* Because we are in a DoCommand, we can't just execute another one and
Expand Down Expand Up @@ -1986,6 +1989,9 @@ static void DoAcquireCompany(Company *c)

if (c->bankrupt_value == 0) {
Company *owner = Company::Get(_current_company);

/* Get both the balance and the loan of the company you just bought. */
SubtractMoneyFromCompany(CommandCost(EXPENSES_OTHER, -c->money));
owner->current_loan += c->current_loan;
}

Expand Down

0 comments on commit 4d74e51

Please sign in to comment.