diff options
-rw-r--r-- | train_cmd.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/train_cmd.c b/train_cmd.c index 08afbd391..2ab61e49e 100644 --- a/train_cmd.c +++ b/train_cmd.c @@ -524,15 +524,20 @@ int32 CmdBuildRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2) Vehicle *v, *u; byte unit_num; Engine *e; - uint tile; + uint tile = TILE_FROM_XY(x,y); if (!IsEngineBuildable(p1, VEH_Train)) return CMD_ERROR; + /* NOTE: The AI sends build engine commands without DC_EXEC to figure out if + it can affort an engine before trying to buy it*/ + if (!IsTrainDepotTile((TileIndex)tile) && flags & DC_EXEC) return CMD_ERROR; + + if (_map_owner[tile] != _current_player && flags & DC_EXEC) return CMD_ERROR; + _cmd_build_rail_veh_var1 = 0; SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES); - tile = TILE_FROM_XY(x,y); rvi = RailVehInfo(p1); if (rvi->flags & RVI_WAGON) { |