|
|
|
@ -481,22 +481,22 @@ static void CompanyCheckBankrupt(Company *c)
|
|
|
|
|
|
|
|
|
|
c->quarters_of_bankruptcy++;
|
|
|
|
|
|
|
|
|
|
CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1);
|
|
|
|
|
cni->FillData(c);
|
|
|
|
|
|
|
|
|
|
switch (c->quarters_of_bankruptcy) {
|
|
|
|
|
case 0:
|
|
|
|
|
case 1:
|
|
|
|
|
free(cni);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
|
case 2: {
|
|
|
|
|
CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1);
|
|
|
|
|
cni->FillData(c);
|
|
|
|
|
SetDParam(0, STR_NEWS_COMPANY_IN_TROUBLE_TITLE);
|
|
|
|
|
SetDParam(1, STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION);
|
|
|
|
|
SetDParamStr(2, cni->company_name);
|
|
|
|
|
AddCompanyNewsItem(STR_MESSAGE_NEWS_FORMAT, NS_COMPANY_TROUBLE, cni);
|
|
|
|
|
AI::BroadcastNewEvent(new AIEventCompanyInTrouble(c->index));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 3: {
|
|
|
|
|
/* Check if the company has any value.. if not, declare it bankrupt
|
|
|
|
|
* right now */
|
|
|
|
@ -505,7 +505,6 @@ static void CompanyCheckBankrupt(Company *c)
|
|
|
|
|
c->bankrupt_value = val;
|
|
|
|
|
c->bankrupt_asked = 1 << c->index; // Don't ask the owner
|
|
|
|
|
c->bankrupt_timeout = 0;
|
|
|
|
|
free(cni);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
/* FALL THROUGH to case 4... */
|
|
|
|
@ -518,27 +517,12 @@ static void CompanyCheckBankrupt(Company *c)
|
|
|
|
|
* he/she is no long in control of this company. However... when you
|
|
|
|
|
* join another company (cheat) the "unowned" company can bankrupt. */
|
|
|
|
|
c->bankrupt_asked = MAX_UVALUE(CompanyMask);
|
|
|
|
|
free(cni);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Close everything the owner has open */
|
|
|
|
|
DeleteCompanyWindows(c->index);
|
|
|
|
|
|
|
|
|
|
/* Show bankrupt news */
|
|
|
|
|
SetDParam(0, STR_NEWS_COMPANY_BANKRUPT_TITLE);
|
|
|
|
|
SetDParam(1, STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION);
|
|
|
|
|
SetDParamStr(2, cni->company_name);
|
|
|
|
|
AddCompanyNewsItem(STR_MESSAGE_NEWS_FORMAT, NS_COMPANY_BANKRUPT, cni);
|
|
|
|
|
|
|
|
|
|
ChangeOwnershipOfCompanyItems(c->index, INVALID_OWNER);
|
|
|
|
|
|
|
|
|
|
if (c->is_ai) AI::Stop(c->index);
|
|
|
|
|
|
|
|
|
|
CompanyID c_index = c->index;
|
|
|
|
|
delete c;
|
|
|
|
|
AI::BroadcastNewEvent(new AIEventCompanyBankrupt(c_index));
|
|
|
|
|
CompanyAdminBankrupt(c_index);
|
|
|
|
|
/* Actually remove the company. */
|
|
|
|
|
DoCommand(0, 2 | (c->index << 16), 0, DC_EXEC, CMD_COMPANY_CTRL);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|