Index: src/base.tab
===================================================================
--- src/base.tab	(revisión: 10980)
+++ src/base.tab	(copia de trabajo)
@@ -4246,6 +4246,14 @@
 name=Load script tool
 note=mouseover and dialoque title
 --
+obj=program_text
+name=Play Tutorial
+note=Button text in the banner window
+--
+obj=program_text
+name=Scenario Tutorial is not available for this pakset. Please try loading Pak128.
+note=Tooltip text for the button in the banner window
+--
 
 #obj=help_text
 #name=Lower values mean more local sounds
Index: src/simutrans/dataobj/environment.cc
===================================================================
--- src/simutrans/dataobj/environment.cc	(revisión: 10980)
+++ src/simutrans/dataobj/environment.cc	(copia de trabajo)
@@ -97,6 +97,7 @@
 uint16 env_t::specific_volume[MAX_SOUND_TYPES];
 
 std::string env_t::soundfont_filename = "";
+std::string env_t::pakset_tutorial_dir = "tutorial_pak128";
 bool env_t::global_mute_sound = false;
 bool env_t::mute_midi = false;
 bool env_t::shuffle_midi = true;
Index: src/simutrans/dataobj/environment.h
===================================================================
--- src/simutrans/dataobj/environment.h	(revisión: 10980)
+++ src/simutrans/dataobj/environment.h	(copia de trabajo)
@@ -511,6 +511,8 @@
 	 * @see simmain.cc
 	 */
 	static void rdwr(loadsave_t *file);
+
+	static std::string pakset_tutorial_dir;
 };
 
 #endif
Index: src/simutrans/dataobj/settings.cc
===================================================================
--- src/simutrans/dataobj/settings.cc	(revisión: 10980)
+++ src/simutrans/dataobj/settings.cc	(copia de trabajo)
@@ -1600,6 +1600,8 @@
 	if(  *contents.get("soundfont_filename")  ) {
 		env_t::soundfont_filename = ltrim(contents.get("soundfont_filename"));
 	}
+
+	env_t::pakset_tutorial_dir = ltrim( contents.get_string("pakset_tutorial_dir", env_t::pakset_tutorial_dir.c_str()) );
 }
 
 // colour stuff can only be parsed when the graphic system has already started
Index: src/simutrans/gui/banner.cc
===================================================================
--- src/simutrans/gui/banner.cc	(revisión: 10980)
+++ src/simutrans/gui/banner.cc	(copia de trabajo)
@@ -95,7 +95,7 @@
 	// scrolling text ...
 	new_component<banner_text_t>();
 
-	add_table(3,2)->set_force_equal_columns(true);;
+	add_table(3,3)->set_force_equal_columns(true);;
 	{
 		// New game button
 		new_map.init( button_t::roundbox | button_t::flexible, "Neue Karte");
@@ -102,6 +102,15 @@
 		new_map.add_listener( this );
 		add_component( &new_map );
 
+		// Play Tutorial
+		play_tutorial.init( button_t::roundbox | button_t::flexible, "Play Tutorial");
+		play_tutorial.add_listener( this );
+		if(  !(scenario_frame->check_file(pakset_tutorial.c_str(), ""))  ) {
+			play_tutorial.disable();
+			play_tutorial.set_tooltip("Scenario Tutorial is not available for this pakset. Please try loading Pak128.");
+		}
+		add_component( &play_tutorial );
+
 		// Load game button
 		load_map.init( button_t::roundbox | button_t::flexible, "Load game");
 		load_map.add_listener( this );
@@ -122,6 +131,8 @@
 		join_map.add_listener( this );
 		add_component( &join_map );
 
+		add_component( new gui_empty_t );
+
 		// Quit button
 		quit.init( button_t::roundbox | button_t::flexible, "Beenden");
 		quit.add_listener( this );
@@ -151,6 +162,10 @@
 	else if(  comp == &new_map  ) {
 		destroy_all_win(true);
 	}
+	else if(  comp == &play_tutorial  ) {
+		destroy_all_win(true);
+		scenario_frame->item_action(pakset_tutorial.c_str());
+	}
 	else if(  comp == &load_map  ) {
 		destroy_all_win(true);
 		create_win( new loadsave_frame_t(true), w_info, magic_load_t);
@@ -157,7 +172,7 @@
 	}
 	else if(  comp == &load_scenario  ) {
 		destroy_all_win(true);
-		create_win( new scenario_frame_t(), w_info, magic_load_t );
+		create_win( scenario_frame, w_info, magic_load_t );
 	}
 	else if(  comp == &options  ) {
 		destroy_all_win(true);
Index: src/simutrans/gui/banner.h
===================================================================
--- src/simutrans/gui/banner.h	(revisión: 10980)
+++ src/simutrans/gui/banner.h	(copia de trabajo)
@@ -6,7 +6,7 @@
 #ifndef GUI_BANNER_H
 #define GUI_BANNER_H
 
-
+#include "scenario_frame.h"
 #include "../dataobj/environment.h"
 #include "components/gui_button.h"
 #include "gui_frame.h"
@@ -22,11 +22,16 @@
 private:
 	button_t
 		new_map,
+		play_tutorial,
 		load_map,
 		load_scenario,
 		options,
 		join_map,
 		quit;
+	
+	scenario_frame_t *scenario_frame = new scenario_frame_t();
+	
+	std::string pakset_tutorial = env_t::pak_dir + "scenario/" + env_t::pakset_tutorial_dir;
 
 public:
 	banner_t();
Index: src/simutrans/gui/scenario_frame.h
===================================================================
--- src/simutrans/gui/scenario_frame.h	(revisión: 10980)
+++ src/simutrans/gui/scenario_frame.h	(copia de trabajo)
@@ -18,10 +18,6 @@
 	button_t easy_server;
 
 protected:
-	/**
-	 * Action that's started by the press of a button.
-	 */
-	bool item_action(const char *fullpath) OVERRIDE;
 
 	/**
 	 * Action, started after X-Button pressing
@@ -31,10 +27,16 @@
 	// returns extra file info
 	const char *get_info(const char *fname) OVERRIDE;
 
+public:
+
 	// true, if valid
 	bool check_file( const char *filename, const char *suffix ) OVERRIDE;
+	
+	/**
+	 * Action that's started by the press of a button.
+	 */
+	bool item_action(const char *fullpath) OVERRIDE;
 
-public:
 	/**
 	* Set the window associated helptext
 	* @return the filename for the helptext, or NULL
