Changeset - 2a5bfdd5820b
[Not reviewed]
default
0 1 0
Silverwing - 8 years ago 2016-06-29 12:24:12

iyh2 labyrinth
1 file changed with 197 insertions and 4 deletions:
0 comments (0 inline, 0 general)
atlantis_iyhehevjiarr.lua
Show inline comments
 
@@ -58,7 +58,7 @@ iyh_far_from_entrance = dlg {
 
	var {
 
		visited = false;
 
	};
 
	nam = "Заброшенный храм";
 
	nam = "Левиафан, рубка";
 
	hideinv = true;
 
	entered = function(s)
 
		pr [[
 
@@ -84,13 +84,12 @@ iyh_far_from_entrance = dlg {
 
		]], code [[ walk('iyh_wardroom_meeting'); ]]};
 
		{tag="advance", always=true, "[Подойти ближе]", [[
 
			Послушные вашей воле, двигатели Левиафана приводят субмарину в движение и вы плавно приближаетесь ко входу в храм. 
 
		]], code [[ walk('iyh_near_entrance'); ]]};
 
		]], code [[ walk('iyh_near_temple'); ]]};
 
		{tag="wait", "[Ждать]", [[
 
			Вы решаете подождать до наступления ночи и это правдывает себя. Как только последние лучи солнца перестают пробиваться сквозь толщу воды, скат выбирается из своего логова и отправляется на охоту.
 
		]], code [[ 
 
			lifeon(iyh_far_from_entrance);
 
			atl_iyh_shockfish_away = 50;
 
			walk('iyh_near_entrance'); 
 
		]]};
 
		{tag="light_temple", always=true, "[Осветить вход в храм]", [[
 
			Мощный луч света падает на вход в храм. Вы видите внутри какое-то движение и изнутри выплывает огромный скат. 
 
@@ -121,6 +120,7 @@ iyh_fight = room {
 
		shockfish_health = 100;
 
		timing = 0;
 
	};
 
	nam = "Левиафан, рубка";
 
	entered = function(s)
 
		s.temple_distance = distance;
 
		s.shockfish_health = 100;
 
@@ -419,4 +419,197 @@ iyh_retreat_quarter = obj {
 
		end;
 
		iyh_fight.maketurn();
 
	end;
 
};
 
\ No newline at end of file
 
};
 
 
iyh_ravine_entry = room {
 
	nam = "Левиафан, рубка";
 
	dsc = [[
 
		Левиафан находится у входа в ущелье. Вдалеке по левому борту, на юго-западе, вы видите вход в навьярский храм. 
 
	]];
 
	hideinv = true;
 
	way = {
 
		kh_vway("Отойти от штурвала", function(s)
 
			return "leviathan_wheelhouse";
 
		end),
 
		kh_vway("Войти в ущелье", function(s)
 
			iyh_labyrinth.position = 1;
 
			iyh_labyrinth.direction = 1;
 
			return "iyh_labyrinth";
 
		end),
 
		kh_vway("Ко входу в храм", "iyh_near_temple"),
 
		kh_vway("Отойти назад", "iyh_far_from_entrance"),
 
	};
 
};
 
 
--[[
 
	Описание структуры лабиринта. Каждый узел описан в двух направлениях
 
	1 - прямое
 
	2 - обратное
 
	направления обозначены как 
 
	l - налево
 
	r - направо
 
	f - прямо
 
	выход описывается одной строкой, невыходы описываются парой "узел+направление"
 
]]
 
iyh_labyrinth_template = {
 
	1: {1:{"l":{32, 1}, "r":{2, 1}}, 			2:{"f":"iyh_ravine_entry"}};
 
	2: {1:{"f":{3, 1}}, 						2:{"f":{1,2}}};
 
	3: {1:{"l":{5, 1}, "f":{4,1}},				2:{"f":{2,2}}};
 
	4: {1:{}, 									2:{"f":{3,2}}};
 
	5: {1:{"l":{37, 1}, "f":{6,1} },			2:{"f":{3,2}}};
 
	6: {1:{"l":{7,1}, "r":{33, 1}},  			2:{"f":{5,2}}};
 
	7: {1:{"l":{12,1}, "f":{11,1}, "r":{8,1}},	2:{"f":{6,2}}};
 
	8: {1:{"l":{10,1}, "r":{9,1}}, 				2:{"f":{7,2}}};
 
	9: {1:{}, 									2:{"f":{8,2}}};
 
	10:{1:{}, 									2:{"f":{8,2}, "r":{11,2}}};
 
	11:{1:{"f":{10,1}}, 						2:{"f":{7,2}}};
 
	12:{1:{"l":{14,1}, "f":{13,1}}, 			2:{"f":{7,2}}};
 
	13:{1:{}, 									2:{"f":{12,2}}};
 
	14:{1:{"f":{15,1}, "l":{20,1}}, 			2:{"f":{12,2}}};
 
	15:{1:{"l":{17,1}, "r":{16,1}}, 			2:{"f":{14,2}}};
 
	16:{1:{}, 									2:{"f":{15,2}}};
 
	17:{1:{"l":{19,1}, "r":{18,1}}, 			2:{"f":{15,2}}};
 
	18:{1:{}, 									2:{"f":{17,2}}};
 
	19:{1:{}, 									2:{"f":{17,2}}};
 
	20:{1:{"l":{22,1}, "f":{21,1}}, 			2:{"f":{14,2}}};
 
	21:{1:{}, 									2:{"f":{20,2}}};
 
	22:{1:{"l":{25,1}, "r":{23,1}}, 			2:{"f":{20,2}}};
 
	23:{1:{"l":"iyh_rear_entrance", "r":{24,1}},2:{"f":{22,2}}};
 
	24:{1:{}, 									2:{"f":{23,2}}};
 
	25:{1:{"l":{27,1},"r":{26:1}}, 				2:{"f":{22,2}}};
 
	26:{1:{}, 									2:{"f":{25,2}}};
 
	27:{1:{"l":{30,2}, "f":{29,1}, "r":{28,1}}, 2:{"f":{25,2}}};
 
	28:{1:{}, 									2:{"f":{27,2}}};
 
	29:{1:{}, 									2:{"f":{27,2}}};
 
	30:{1:{"l":{27,2}, "r":{36,1}}, 			2:{"f":{31,2}}};
 
	31:{1:{"l":{30,1}, "r":{35,1}}, 			2:{"f":{32,2}}};
 
	32:{1:{"l":{31,1}, "r":{34,1}}, 			2:{"f":{1,2}}};
 
	33:{1:{}, 									2:{"l":{6,2}, "r":{37,2}}};
 
	34:{1:{}, 									2:{"f":{32,2}}};
 
	35:{1:{}, 									2:{"f":{31,2}}};
 
	36:{1:{}, 									2:{"f":{30,2}}};
 
	37:{1:{"f":{33,1}}, 						2:{"f":{5,2}}};
 
};
 
 
iyh_labyrinth = room {
 
	var {
 
		location = 1;
 
		direction = 1;
 
	};
 
	no_exit = [[
 
		Нет смысла покидать Левиафан здесь. 
 
	]];
 
	nam = "Лабиринт";
 
	dsc = function(s)
 
		pr [[
 
			Вы находитесь у дна глубокого ущелья.
 
		]];
 
		if (iyh_labyrinth_template[s.location]["f"]) then
 
			pr [[
 
				Ущелье продолжается вперед. 
 
			]];
 
		end;
 
		if (iyh_labyrinth_template[s.location]["l"] and iyh_labyrinth_template[s.location]["r"]) then
 
			pr [[
 
				Влево и вправо уходят ответвления.
 
			]];
 
		elseif (iyh_labyrinth_template[s.location]["l"]) then
 
			pr [[
 
				Влево уходит ответвление. 
 
			]];
 
		elseif (iyh_labyrinth_template[s.location]["r"]) then
 
			pr [[
 
				Вправо уходит ответвление. 
 
			]];
 
		elseif (not iyh_labyrinth_template[s.location]["f"]) then
 
			pr [[
 
				Дальше пути нет. 
 
			]];
 
		end;
 
	end;
 
	update = function(s)
 
	end;
 
	obj = {
 
	};
 
};
 
 
iyh_lab_forward = obj {
 
	nam = "iyh_lab_forward";
 
	dsc = "{Вперед}^";
 
	act = function(s)
 
		pr [[
 
			Вы продолжаете движение.
 
		]];
 
		local p = iyh_labyrinth.position;
 
		local d = iyh_labyrinth.direction;
 
		
 
		if (type(iyh_labyrinth_template[p][d]) == 'string') then
 
			walk(iyh_labyrinth_template[p][d]);
 
		else
 
			iyh_labyrinth.position = iyh_labyrinth_template[p][d]["f"][1];
 
			iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["f"][2];
 
		end;
 
		
 
		iyh_labyrinth:update();
 
	end;
 
};
 
 
iyh_lab_left = obj {
 
	nam = "iyh_lab_left";
 
	dsc = "{Налево}^";
 
	act = function(s)
 
		pr [[
 
			Вы сворачиваете налево.
 
		]];
 
		local p = iyh_labyrinth.position;
 
		local d = iyh_labyrinth.direction;
 
		
 
		if (type(iyh_labyrinth_template[p][d]) == 'string') then
 
			walk(iyh_labyrinth_template[p][d]);
 
		else
 
			iyh_labyrinth.position = iyh_labyrinth_template[p][d]["l"][1];
 
			iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["l"][2];
 
		end;
 
		
 
		iyh_labyrinth:update();
 
	end;
 
};
 
 
iyh_lab_right = obj {
 
	nam = "iyh_lab_right";
 
	dsc = "{Направо}^";
 
	act = function(s)
 
		pr [[
 
			Вы сворачиваете направо.
 
		]];
 
		local p = iyh_labyrinth.position;
 
		local d = iyh_labyrinth.direction;
 
		
 
		if (type(iyh_labyrinth_template[p][d]) == 'string') then
 
			walk(iyh_labyrinth_template[p][d]);
 
		else
 
			iyh_labyrinth.position = iyh_labyrinth_template[p][d]["r"][1];
 
			iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["r"][2];
 
		end;
 
		
 
		iyh_labyrinth:update();
 
	end;
 
};
 
 
iyh_lab_turn = obj {
 
	nam = "iyh_lab_turn";
 
	dsc = "{Развернуться}^";
 
	act = function(s)
 
		pr [[
 
			Вы разворачиваете субмарину.
 
		]];
 
		if (iyh_labyrinth.direction == 1) then
 
			iyh_labyrinth.direction = 2;
 
		else
 
			iyh_labyrinth.direction = 1;
 
		end;
 
		
 
		iyh_labyrinth:update();
 
	end;
 
};
 
0 comments (0 inline, 0 general)