@@ -144,6 +144,9 @@ CommandCost CmdIncreaseLoan(TileIndex ti
break;
}
/* Overflow protection */
if (p->player_money + p->current_loan + loan < p->player_money) return CMD_ERROR;
if (flags & DC_EXEC) {
p->player_money += loan;
p->current_loan += loan;
@@ -166,14 +169,14 @@ CommandCost CmdDecreaseLoan(TileIndex ti
if (p->current_loan == 0) return_cmd_error(STR_702D_LOAN_ALREADY_REPAYED);
int32 loan;
Money loan;
switch (p2) {
default: return CMD_ERROR; // Invalid method
case 0: // Pay back one step
loan = min(p->current_loan, (IsHumanPlayer(_current_player) || _patches.ainew_active) ? LOAN_INTERVAL : LOAN_INTERVAL_OLD_AI);
case 1: // Pay back as much as possible
loan = max(min(p->current_loan, p->player_money), (int32)LOAN_INTERVAL);
loan = max(min(p->current_loan, p->player_money), (Money)LOAN_INTERVAL);
loan -= loan % LOAN_INTERVAL;
@@ -304,7 +307,7 @@ CommandCost CmdMoneyCheat(TileIndex tile
CommandCost CmdGiveMoney(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
const Player *p = GetPlayer(_current_player);
CommandCost amount((Money)min(p1, 20000000LL));
CommandCost amount(min((Money)p1, 20000000LL));
SET_EXPENSES_TYPE(EXPENSES_OTHER);