mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-04 05:15:21 +00:00
(svn r18908) -Fix [FS#3561]: on bankruptcy the company value did include the loan and as such the value at which you bought the company was too low
This commit is contained in:
parent
b2f9b0ac43
commit
3d0b3818dd
@ -107,7 +107,7 @@ struct Company : CompanyPool::PoolItem<&_company_pool> {
|
||||
#define FOR_ALL_COMPANIES_FROM(var, start) FOR_ALL_ITEMS_FROM(Company, company_index, var, start)
|
||||
#define FOR_ALL_COMPANIES(var) FOR_ALL_COMPANIES_FROM(var, 0)
|
||||
|
||||
Money CalculateCompanyValue(const Company *c);
|
||||
Money CalculateCompanyValue(const Company *c, bool including_loan = true);
|
||||
|
||||
extern uint _next_competitor_start;
|
||||
extern uint _cur_company_tick_index;
|
||||
|
@ -110,7 +110,16 @@ Prices _price;
|
||||
Money _additional_cash_required;
|
||||
static PriceMultipliers _price_base_multiplier;
|
||||
|
||||
Money CalculateCompanyValue(const Company *c)
|
||||
/**
|
||||
* Calculate the value of the company. That is the value of all
|
||||
* assets (vehicles, stations, etc) and money minus the loan,
|
||||
* except when including_loan is \c false which is useful when
|
||||
* we want to calculate the value for bankruptcy.
|
||||
* @param c the company to get the value of.
|
||||
* @param including_loan include the loan in the company value.
|
||||
* @return the value of the company.
|
||||
*/
|
||||
Money CalculateCompanyValue(const Company *c, bool including_loan)
|
||||
{
|
||||
Owner owner = c->index;
|
||||
Money value = 0;
|
||||
@ -137,7 +146,7 @@ Money CalculateCompanyValue(const Company *c)
|
||||
}
|
||||
|
||||
/* Add real money value */
|
||||
value -= c->current_loan;
|
||||
if (including_loan) value -= c->current_loan;
|
||||
value += c->money;
|
||||
|
||||
return max(value, (Money)1);
|
||||
@ -507,7 +516,7 @@ static void CompanyCheckBankrupt(Company *c)
|
||||
case 3: {
|
||||
/* Check if the company has any value.. if not, declare it bankrupt
|
||||
* right now */
|
||||
Money val = CalculateCompanyValue(c);
|
||||
Money val = CalculateCompanyValue(c, false);
|
||||
if (val > 0) {
|
||||
c->bankrupt_value = val;
|
||||
c->bankrupt_asked = 1 << c->index; // Don't ask the owner
|
||||
|
Loading…
Reference in New Issue
Block a user