diff --git a/src/simutrans/dataobj/environment.cc b/src/simutrans/dataobj/environment.cc
index 7935ac6e8..d4f511565 100644
--- a/src/simutrans/dataobj/environment.cc
+++ b/src/simutrans/dataobj/environment.cc
@@ -123,6 +123,12 @@ bool env_t::hide_with_transparency;
 bool env_t::hide_trees;
 uint8 env_t::hide_buildings;
 bool env_t::hide_under_cursor;
+
+//Yona-TYT
+bool env_t::script_hidden_object;
+koord env_t::script_hidden_pos;
+uint16 env_t::script_hidden_range;
+
 uint16 env_t::cursor_hide_range;
 bool env_t::use_transparency_station_coverage;
 uint8 env_t::station_coverage_show;
@@ -224,6 +230,12 @@ void env_t::init()
 	hide_under_cursor = false;
 	cursor_hide_range = 5;
 
+	//Yona-TYT
+	script_hidden_object = false;
+	script_hidden_pos = koord(44,51);
+	script_hidden_range = 1;
+
+
 	scroll_infinite = false;
 	scroll_threshold = 16;
 
diff --git a/src/simutrans/dataobj/environment.h b/src/simutrans/dataobj/environment.h
index b41fd84d3..a28c5a53c 100644
--- a/src/simutrans/dataobj/environment.h
+++ b/src/simutrans/dataobj/environment.h
@@ -329,6 +329,11 @@ public:
 	/// buildings and trees near mouse cursor will be hidden.
 	static bool hide_under_cursor;
 
+	//Yona-TYT
+	static bool script_hidden_object;
+	static koord script_hidden_pos;
+	static uint16 script_hidden_range;
+
 	/// Hide buildings and trees within range of mouse cursor
 	static uint16 cursor_hide_range;
 
diff --git a/src/simutrans/display/simview.cc b/src/simutrans/display/simview.cc
index 93050056a..642ef9bc5 100644
--- a/src/simutrans/display/simview.cc
+++ b/src/simutrans/display/simview.cc
@@ -504,7 +504,7 @@ void main_view_t::display_region( koord lt, koord wh, sint16 y_min, sint16 y_max
 					sint16 yypos = ypos - tile_raster_scale_y( min( gr->get_hoehe(), hmax_ground ) * TILE_HEIGHT_STEP, IMG_SIZE );
 					if(  yypos - IMG_SIZE * 3 < wh.y + lt.y  &&  yypos + IMG_SIZE > lt.y  ) {
 						const koord pos(i,j);
-						if(  env_t::hide_under_cursor  &&  needs_hiding  ) {
+						if(  (  env_t::hide_under_cursor ) &&  needs_hiding  )  {
 							// If the corresponding setting is on, then hide trees and buildings under mouse cursor
 #ifdef MULTI_THREAD
 							if(  threaded  ) {
@@ -552,7 +552,7 @@ void main_view_t::display_region( koord lt, koord wh, sint16 y_min, sint16 y_max
 							}
 							else {
 #endif
-								if(  shortest_distance( pos, cursor_pos ) <= env_t::cursor_hide_range  ) {
+								if(  (  shortest_distance( pos, cursor_pos ) <= env_t::cursor_hide_range  ) || (  env_t::script_hidden_object && shortest_distance( pos, env_t::script_hidden_pos  ) <= env_t::script_hidden_range  )  ) {
 									const bool saved_hide_trees = env_t::hide_trees;
 									const uint8 saved_hide_buildings = env_t::hide_buildings;
 									env_t::hide_trees = true;
@@ -570,10 +570,23 @@ void main_view_t::display_region( koord lt, koord wh, sint16 y_min, sint16 y_max
 							}
 #endif
 						}
+
+
+						else if(  env_t::script_hidden_object && shortest_distance( pos, env_t::script_hidden_pos  ) <= env_t::script_hidden_range  ) {
+							const bool saved_hide_trees = env_t::hide_trees;
+							const uint8 saved_hide_buildings = env_t::hide_buildings;
+							env_t::hide_trees = true;
+							env_t::hide_buildings = env_t::ALL_HIDDEN_BUILDING;
+
+							plan->display_obj( xpos, yypos, IMG_SIZE, true, hmin, hmax  CLIP_NUM_PAR);
+
+							env_t::hide_trees = saved_hide_trees;
+							env_t::hide_buildings = saved_hide_buildings;
+						}
 						else {
-							// hiding turned off, draw multithreaded
 							plan->display_obj( xpos, yypos, IMG_SIZE, true, hmin, hmax  CLIP_NUM_PAR);
 						}
+
 					}
 				}
 			}
diff --git a/src/simutrans/script/api/api_world.cc b/src/simutrans/script/api/api_world.cc
index 0a44e0b3b..fa637a784 100644
--- a/src/simutrans/script/api/api_world.cc
+++ b/src/simutrans/script/api/api_world.cc
@@ -17,6 +17,8 @@
 #include "../../obj/gebaeude.h"
 #include "../../descriptor/ground_desc.h"
 
+#include "../../dataobj/environment.h"
+
 using namespace script_api;
 
 
@@ -129,6 +131,24 @@ const char* get_version_number()
 	return VERSION_NUMBER;
 }
 
+//Yona-TYT
+void hidden_object_range(koord pos, uint16 range)
+{
+	if(welt->is_within_limits(pos)) {
+		env_t::script_hidden_object = true;
+		env_t::script_hidden_pos = pos;
+		env_t::script_hidden_range = range;
+		welt->set_dirty();
+	}
+}
+
+void hidden_object_stop()
+{
+	env_t::script_hidden_object = false;
+		welt->set_dirty();
+
+}
+
 void export_world(HSQUIRRELVM vm, bool scenario)
 {
 	/**
@@ -374,4 +394,9 @@ void export_world(HSQUIRRELVM vm, bool scenario)
 	 * Returns simutrans version number
 	 */
 	register_method(vm, get_version_number, "get_version_number");
+
+	//Yona-TYT
+	register_method(vm, hidden_object_range, "hidden_object_range");
+	register_method(vm, hidden_object_stop, "hidden_object_stop");
+	
 }
diff --git a/src/simutrans/script/api/squirrel_types_scenario.awk b/src/simutrans/script/api/squirrel_types_scenario.awk
index bdcf86428..6e5c54660 100644
--- a/src/simutrans/script/api/squirrel_types_scenario.awk
+++ b/src/simutrans/script/api/squirrel_types_scenario.awk
@@ -410,6 +410,8 @@ BEGIN {
 	export_types_scenario["attraction_list_x::_get"] = "building_x(integer)"
 	export_types_scenario["::get_pakset_name"] = "string()"
 	export_types_scenario["::get_version_number"] = "string()"
+	export_types_scenario["::hidden_object_range"] = "void(coord, integer)"
+	export_types_scenario["::hidden_object_stop"] = "void()"
 	export_types_scenario["simple_heap_x::clear"] = "void()"
 	export_types_scenario["simple_heap_x::len"] = "integer()"
 	export_types_scenario["simple_heap_x::is_empty"] = "bool()"
