mirror of https://github.com/OpenTTD/OpenTTD
(svn r25966) -Fix: [NoGo] Properly validate the range of the growth rate passed to GSTown::SetGrowthRate, instead of masking it to 16 bit.
parent
be4355edd3
commit
41184fb871
|
@ -154,12 +154,12 @@
|
|||
}
|
||||
}
|
||||
|
||||
/* static */ bool ScriptTown::SetGrowthRate(TownID town_id, uint16 days_between_town_growth)
|
||||
/* static */ bool ScriptTown::SetGrowthRate(TownID town_id, uint32 days_between_town_growth)
|
||||
{
|
||||
days_between_town_growth = days_between_town_growth * DAY_TICKS / TOWN_GROWTH_TICKS;
|
||||
|
||||
EnforcePrecondition(false, IsValidTown(town_id));
|
||||
EnforcePrecondition(false, (days_between_town_growth & TOWN_GROW_RATE_CUSTOM) == 0);
|
||||
EnforcePrecondition(false, days_between_town_growth < TOWN_GROW_RATE_CUSTOM);
|
||||
|
||||
return ScriptObject::DoCommand(::Town::Get(town_id)->xy, town_id, days_between_town_growth, CMD_TOWN_GROWTH_RATE);
|
||||
}
|
||||
|
|
|
@ -251,12 +251,13 @@ public:
|
|||
* @param town_id The index of the town.
|
||||
* @param days_between_town_growth The amount of days between town growth.
|
||||
* @pre IsValidTown(town_id).
|
||||
* @pre days_between_town_growth <= 30000.
|
||||
* @return True if the action succeeded.
|
||||
* @note Even when setting a growth rate, towns only grow when the conditions for growth (SetCargoCoal) are met,
|
||||
* and the game settings (economy.town_growth_rate) allow town growth at all.
|
||||
* @api -ai
|
||||
*/
|
||||
static bool SetGrowthRate(TownID town_id, uint16 days_between_town_growth);
|
||||
static bool SetGrowthRate(TownID town_id, uint32 days_between_town_growth);
|
||||
|
||||
/**
|
||||
* Get the amount of days between town growth.
|
||||
|
|
Loading…
Reference in New Issue