Changeset - r14343:06e07ad1f03a
[Not reviewed]
master
0 2 0
rubidium - 14 years ago 2010-01-24 11:05:26
rubidium@openttd.org
(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
2 files changed with 13 insertions and 4 deletions:
0 comments (0 inline, 0 general)
src/company_base.h
Show inline comments
 
@@ -107,7 +107,7 @@ struct Company : CompanyPool::PoolItem<&
 
#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;
src/economy.cpp
Show inline comments
 
@@ -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 Compan
 
	}
 

	
 
	/* 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
 
		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
0 comments (0 inline, 0 general)