diff --git a/train_cmd.c b/train_cmd.c index 08afbd391a..2ab61e49e2 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) {