summaryrefslogtreecommitdiff
path: root/src/script/api/script_town.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/script/api/script_town.cpp')
-rw-r--r--src/script/api/script_town.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/script/api/script_town.cpp b/src/script/api/script_town.cpp
index 9926d2277..b37d7bd1e 100644
--- a/src/script/api/script_town.cpp
+++ b/src/script/api/script_town.cpp
@@ -156,10 +156,19 @@
/* 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);
+
+ switch (days_between_town_growth) {
+ case TOWN_GROWTH_NORMAL:
+ days_between_town_growth = 0;
+ break;
+
+ default:
+ days_between_town_growth = days_between_town_growth * DAY_TICKS / TOWN_GROWTH_TICKS;
+ EnforcePrecondition(false, days_between_town_growth < TOWN_GROW_RATE_CUSTOM);
+ if (days_between_town_growth == 0) days_between_town_growth = 1; // as fast as possible
+ break;
+ }
return ScriptObject::DoCommand(::Town::Get(town_id)->xy, town_id, days_between_town_growth, CMD_TOWN_GROWTH_RATE);
}