diff options
author | darkvater <darkvater@openttd.org> | 2005-01-30 14:32:52 +0000 |
---|---|---|
committer | darkvater <darkvater@openttd.org> | 2005-01-30 14:32:52 +0000 |
commit | 0a7546b6abb13c9ea287e7cf76af9f7af1746c2b (patch) | |
tree | 4b7ff0c9b763afb29a838cbdbd6fe2e117503f63 | |
parent | ef78d67a0afbd88f672722cdfa5868465da5dfe0 (diff) | |
download | openttd-0a7546b6abb13c9ea287e7cf76af9f7af1746c2b.tar.xz |
(svn r1729) - Fix: [ 1112469 ] Clearing land for free by reallocating HQ
-rw-r--r-- | unmovable_cmd.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/unmovable_cmd.c b/unmovable_cmd.c index 21f1c99bc..ce5b46798 100644 --- a/unmovable_cmd.c +++ b/unmovable_cmd.c @@ -314,21 +314,29 @@ extern int32 CheckFlatLandBelow(uint tile, uint w, uint h, uint flags, uint inva */ int32 CmdBuildCompanyHQ(int x, int y, uint32 flags, uint32 p1, uint32 p2) { - uint tile = TILE_FROM_XY(x,y); + TileIndex tile = TILE_FROM_XY(x,y); Player *p = DEREF_PLAYER(_current_player); int score; int32 cost = 0; SET_EXPENSES_TYPE(EXPENSES_PROPERTY); - if (CheckFlatLandBelow(tile, 2, 2, flags, 0, NULL) == CMD_ERROR) + cost = CheckFlatLandBelow(tile, 2, 2, flags, 0, NULL); + + if (cost == CMD_ERROR) return CMD_ERROR; - if (p1) - cost = DoCommand( + if (p1) { + int32 ret = DoCommand( TileX(p->location_of_house) * 16, TileY(p->location_of_house) * 16, p1 & 0xFF, 0, flags, CMD_DESTROY_COMPANY_HQ); + if (ret == CMD_ERROR) + return CMD_ERROR; + + cost += ret; + } + if (flags & DC_EXEC) { score = UpdateCompanyRatingAndValue(p, false); |